A1-定制Android备忘录
一、环境搭建:可以Windows7电脑上装个Vmware虚拟机,在虚拟机中装一个Windows XP及一个Linux(Ylmf OS 3.0);
二、从网上下载官方的Android2.2 ROM。
三、具体定制步骤:
1、分解官方ROM的system.img,一般都在这个文件中定制,下载定制需要用到的工具:
/Files/ycmoon/Android定制工具.part1.rar
/Files/ycmoon/Android定制工具.part2.rar
/Files/ycmoon/Android定制工具.part3.rar
2、启动Linux并以root 用户登录把刚才解压的 unyaffs 复制到 /bin 文件夹下
3、启动终端,进入 /bin 文件夹(cd /bin),输入如下命令 sudo chmod 777 unyaffs (赋予 unyaffs 执行权限):
4、在根目录下新建一个文件夹:system,并将官方ROM的system.img文件放到system中;
5、进入system目录中(cd system),执行命令 unyaffs system.img (解包 img 的命令行),解包完毕后就可以删除system文件夹中的system.img,或移至别处;
此时,就可以看到system.img解包后的目录结构,其中app目录中为所有应用程序,可以对应用程序进行精简或添加,
注意事项:
A:精简的时息,一些必须的系统服务软件不能精简,否则系统无法正常运行;
B:必须保留一个启动器,否则无法进入系统桌面,默认的为”Launcher2.apk“,当然,如果你想用ADW或GO桌面,则可将launcher2.apk删除,也可不删除,不删除的时候,进入桌面的时候可选
C:Android自带一个安装向导”SetupWizard.apk“,如果要删除这个程序,则需要system目录下的“build.prop”文件中删除相应节点“ro.setupwizard.mode=OPTIONAL”
6、在终端命令行输入:sudo chmod -R 777 /system/* (为system目录下所有文件赋予最高权限)
三、合成刷机包
(一)、合成system.img
1、进入system的上级目录,在终端命令行输入:sudo chmod -R 777 /system/* (为system目录下所有文件赋予最高权限)
2、在终端命令行输入:sudo mkyaffs2image /system/ /home/system.img (将system下所有文件打包成system.img)
3、在终端命令行输入:sudo chmod -R 777 /home/system.img (将system.img赋予最高权限)
完成以上三步后,就可以将system.img刷到手机中了。
(二)、合成update.zip
1、进入system的上级目录,在终端命令行下执行 zip -r system.zip system(把system文件夹打包成zip文件),并将system.zip改为update.zip。
2、从原官方ROM中提取boot.img文件。
3、从别人刷机包中提取刷机脚本。
format SYSTEM:
copy_dir PACKAGE:system SYSTEM:
show_progress 0.2 0
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
show_progress 0.2 10
其中show_progreess x.x x 是在刷机的时候显示进度的
format SYSTEM:是格式化 system 用的
copy_dir PACKAGE:system SYSTEM: 是把升级包里的system文件夹复制到system分区
write_raw_image PACKAGE:boot.img BOOT: 刷写包内的boot.img(内核的)
4、准备好了 update.zip、META-INF 文件夹 boot.img 内核映象,就可以开始了,用 winrar 打开 update.zip 文件(不是解压缩),把 META-INF boot.img 直接拖进压缩包里,然后用签名工具对新的 update.zip 签名就可以了。
5、签名方法:把新的 update.zip 文件放到该文件夹,运行 Sign.bat 批处理文件就可以了(这里需要注意的是,zip文件的文件名必须为 update.zip)等待批处理运行完毕后,该目录下会生成已经签名的 update_signed.zip。
四、获得永久ROOT权限方法:
1、将su和busybox拷到 system/bin下
2、进入system/app 在命令行输入:chmod 0755 superuser.apk
3、进入system/bin 在命令行输入:chmod 4755 su 和 chmod 0755 busybox
五、替换framework-res.apk更改数字电量
1、用apktool d framework-res.apk framework-res先把原版的framework-res.apk解包,把1-100的电量图标文件“stat_sys_battery_1”,数字1为电量。分别拷到drawable-hdpi和drawable-mdpi两个文件夹中替换原有的
2、打开framework-res\drawable\stat_sys_battery.xml。更改1-100的电量显示图片。
<level-list
xmlns:android=”http://schemas.android.com/apk/res/android”>
<item android:drawable=”@drawable/stat_sys_battery_0″ android:maxLevel=”0″ />
<item android:drawable=”@drawable/stat_sys_battery_1″ android:maxLevel=”1″ />
<item android:drawable=”@drawable/stat_sys_battery_2″ android:maxLevel=”2″ />
<item android:drawable=”@drawable/stat_sys_battery_3″ android:maxLevel=”3″ />
<item android:drawable=”@drawable/stat_sys_battery_4″ android:maxLevel=”4″ />
<item android:drawable=”@drawable/stat_sys_battery_5″ android:maxLevel=”5″ />
<item android:drawable=”@drawable/stat_sys_battery_6″ android:maxLevel=”6″ />
<item android:drawable=”@drawable/stat_sys_battery_7″ android:maxLevel=”7″ />
<item android:drawable=”@drawable/stat_sys_battery_8″ android:maxLevel=”8″ />
<item android:drawable=”@drawable/stat_sys_battery_9″ android:maxLevel=”9″ />
<item android:drawable=”@drawable/stat_sys_battery_10″ android:maxLevel=”10″ />
<item android:drawable=”@drawable/stat_sys_battery_11″ android:maxLevel=”11″ />
<item android:drawable=”@drawable/stat_sys_battery_12″ android:maxLevel=”12″ />
<item android:drawable=”@drawable/stat_sys_battery_13″ android:maxLevel=”13″ />
<item android:drawable=”@drawable/stat_sys_battery_14″ android:maxLevel=”14″ />
<item android:drawable=”@drawable/stat_sys_battery_15″ android:maxLevel=”15″ />
<item android:drawable=”@drawable/stat_sys_battery_16″ android:maxLevel=”16″ />
<item android:drawable=”@drawable/stat_sys_battery_17″ android:maxLevel=”17″ />
<item android:drawable=”@drawable/stat_sys_battery_18″ android:maxLevel=”18″ />
<item android:drawable=”@drawable/stat_sys_battery_19″ android:maxLevel=”19″ />
<item android:drawable=”@drawable/stat_sys_battery_20″ android:maxLevel=”20″ />
<item android:drawable=”@drawable/stat_sys_battery_21″ android:maxLevel=”21″ />
<item android:drawable=”@drawable/stat_sys_battery_22″ android:maxLevel=”22″ />
<item android:drawable=”@drawable/stat_sys_battery_23″ android:maxLevel=”23″ />
<item android:drawable=”@drawable/stat_sys_battery_24″ android:maxLevel=”24″ />
<item android:drawable=”@drawable/stat_sys_battery_25″ android:maxLevel=”25″ />
<item android:drawable=”@drawable/stat_sys_battery_26″ android:maxLevel=”26″ />
<item android:drawable=”@drawable/stat_sys_battery_27″ android:maxLevel=”27″ />
<item android:drawable=”@drawable/stat_sys_battery_28″ android:maxLevel=”28″ />
<item android:drawable=”@drawable/stat_sys_battery_29″ android:maxLevel=”29″ />
<item android:drawable=”@drawable/stat_sys_battery_30″ android:maxLevel=”30″ />
<item android:drawable=”@drawable/stat_sys_battery_31″ android:maxLevel=”31″ />
<item android:drawable=”@drawable/stat_sys_battery_32″ android:maxLevel=”32″ />
<item android:drawable=”@drawable/stat_sys_battery_33″ android:maxLevel=”33″ />
<item android:drawable=”@drawable/stat_sys_battery_34″ android:maxLevel=”34″ />
<item android:drawable=”@drawable/stat_sys_battery_35″ android:maxLevel=”35″ />
<item android:drawable=”@drawable/stat_sys_battery_36″ android:maxLevel=”36″ />
<item android:drawable=”@drawable/stat_sys_battery_37″ android:maxLevel=”37″ />
<item android:drawable=”@drawable/stat_sys_battery_38″ android:maxLevel=”38″ />
<item android:drawable=”@drawable/stat_sys_battery_39″ android:maxLevel=”39″ />
<item android:drawable=”@drawable/stat_sys_battery_40″ android:maxLevel=”40″ />
<item android:drawable=”@drawable/stat_sys_battery_41″ android:maxLevel=”41″ />
<item android:drawable=”@drawable/stat_sys_battery_42″ android:maxLevel=”42″ />
<item android:drawable=”@drawable/stat_sys_battery_43″ android:maxLevel=”43″ />
<item android:drawable=”@drawable/stat_sys_battery_44″ android:maxLevel=”44″ />
<item android:drawable=”@drawable/stat_sys_battery_45″ android:maxLevel=”45″ />
<item android:drawable=”@drawable/stat_sys_battery_46″ android:maxLevel=”46″ />
<item android:drawable=”@drawable/stat_sys_battery_47″ android:maxLevel=”47″ />
<item android:drawable=”@drawable/stat_sys_battery_48″ android:maxLevel=”48″ />
<item android:drawable=”@drawable/stat_sys_battery_49″ android:maxLevel=”49″ />
<item android:drawable=”@drawable/stat_sys_battery_50″ android:maxLevel=”50″ />
<item android:drawable=”@drawable/stat_sys_battery_51″ android:maxLevel=”51″ />
<item android:drawable=”@drawable/stat_sys_battery_52″ android:maxLevel=”52″ />
<item android:drawable=”@drawable/stat_sys_battery_53″ android:maxLevel=”53″ />
<item android:drawable=”@drawable/stat_sys_battery_54″ android:maxLevel=”54″ />
<item android:drawable=”@drawable/stat_sys_battery_55″ android:maxLevel=”55″ />
<item android:drawable=”@drawable/stat_sys_battery_56″ android:maxLevel=”56″ />
<item android:drawable=”@drawable/stat_sys_battery_57″ android:maxLevel=”57″ />
<item android:drawable=”@drawable/stat_sys_battery_58″ android:maxLevel=”58″ />
<item android:drawable=”@drawable/stat_sys_battery_59″ android:maxLevel=”59″ />
<item android:drawable=”@drawable/stat_sys_battery_60″ android:maxLevel=”60″ />
<item android:drawable=”@drawable/stat_sys_battery_61″ android:maxLevel=”61″ />
<item android:drawable=”@drawable/stat_sys_battery_62″ android:maxLevel=”62″ />
<item android:drawable=”@drawable/stat_sys_battery_63″ android:maxLevel=”63″ />
<item android:drawable=”@drawable/stat_sys_battery_64″ android:maxLevel=”64″ />
<item android:drawable=”@drawable/stat_sys_battery_65″ android:maxLevel=”65″ />
<item android:drawable=”@drawable/stat_sys_battery_66″ android:maxLevel=”66″ />
<item android:drawable=”@drawable/stat_sys_battery_67″ android:maxLevel=”67″ />
<item android:drawable=”@drawable/stat_sys_battery_68″ android:maxLevel=”68″ />
<item android:drawable=”@drawable/stat_sys_battery_69″ android:maxLevel=”69″ />
<item android:drawable=”@drawable/stat_sys_battery_70″ android:maxLevel=”70″ />
<item android:drawable=”@drawable/stat_sys_battery_71″ android:maxLevel=”71″ />
<item android:drawable=”@drawable/stat_sys_battery_72″ android:maxLevel=”72″ />
<item android:drawable=”@drawable/stat_sys_battery_73″ android:maxLevel=”73″ />
<item android:drawable=”@drawable/stat_sys_battery_74″ android:maxLevel=”74″ />
<item android:drawable=”@drawable/stat_sys_battery_75″ android:maxLevel=”75″ />
<item android:drawable=”@drawable/stat_sys_battery_76″ android:maxLevel=”76″ />
<item android:drawable=”@drawable/stat_sys_battery_77″ android:maxLevel=”77″ />
<item android:drawable=”@drawable/stat_sys_battery_78″ android:maxLevel=”78″ />
<item android:drawable=”@drawable/stat_sys_battery_79″ android:maxLevel=”79″ />
<item android:drawable=”@drawable/stat_sys_battery_80″ android:maxLevel=”80″ />
<item android:drawable=”@drawable/stat_sys_battery_81″ android:maxLevel=”81″ />
<item android:drawable=”@drawable/stat_sys_battery_82″ android:maxLevel=”82″ />
<item android:drawable=”@drawable/stat_sys_battery_83″ android:maxLevel=”83″ />
<item android:drawable=”@drawable/stat_sys_battery_84″ android:maxLevel=”84″ />
<item android:drawable=”@drawable/stat_sys_battery_85″ android:maxLevel=”85″ />
<item android:drawable=”@drawable/stat_sys_battery_86″ android:maxLevel=”86″ />
<item android:drawable=”@drawable/stat_sys_battery_87″ android:maxLevel=”87″ />
<item android:drawable=”@drawable/stat_sys_battery_88″ android:maxLevel=”88″ />
<item android:drawable=”@drawable/stat_sys_battery_89″ android:maxLevel=”89″ />
<item android:drawable=”@drawable/stat_sys_battery_90″ android:maxLevel=”90″ />
<item android:drawable=”@drawable/stat_sys_battery_91″ android:maxLevel=”91″ />
<item android:drawable=”@drawable/stat_sys_battery_92″ android:maxLevel=”92″ />
<item android:drawable=”@drawable/stat_sys_battery_93″ android:maxLevel=”93″ />
<item android:drawable=”@drawable/stat_sys_battery_94″ android:maxLevel=”94″ />
<item android:drawable=”@drawable/stat_sys_battery_95″ android:maxLevel=”95″ />
<item android:drawable=”@drawable/stat_sys_battery_96″ android:maxLevel=”96″ />
<item android:drawable=”@drawable/stat_sys_battery_97″ android:maxLevel=”97″ />
<item android:drawable=”@drawable/stat_sys_battery_98″ android:maxLevel=”98″ />
<item android:drawable=”@drawable/stat_sys_battery_99″ android:maxLevel=”99″ />
<item android:drawable=”@drawable/stat_sys_battery_100″ android:maxLevel=”100″ />
</level-list>
3、将整个framework-res重新打包成apk文件:apktool b framework-res temp.apk
4、将重新打包的部分文件替换到原版的资源文件中,【注意:替换的时候,弹出的窗口必须选择“存储”,不能选择“标准”,否则无法成功】
分别打开两个RAR程序,一个打开原版的framework-res.apk。一个打开重新打包的temp.apk。
(1)、将temp.apk中根目录的“”文件拖动到framework-res.apk的根目录,并替换,选择“存储”。
(2)、将temp.apk中的drawable\stat_sys_battery.xml文件拖到framework-res.apk中drawable中,替换,选择“存储”。
(3)、将temp.apk中的drawable-hdpi中的1-100的电最图片拖到framework-res.apk中的drawable-hdpi中,替换,并选择”存储“。
(4)、将temp.apk中的drawable-mdpi中的1-100的电最图片拖到framework-res.apk中的drawable-mdpi中,替换,并选择”存储“。
至此整个图片资源替换成功。
5、将原版的framework-res.apk复制到手机的system文件夹中,设置权限全部选上,再移动到framework文件夹中,重启动手机
六、替换拨号键为返回主页键的方法
1、打开system/usr/keylayout。要修改两个文件:qwerty.kl和mt6516-kpd.kl
2、把文件复制到system/根目录下,分别打开两个文件,把里面的
key 231 CALL 改为 key 231 HOME
key 61 CALL 改为 key 61 HOME
3、把两个文件赋予最高权限777,再移动到system/usr/keylayout下覆盖原文件,重启手机即可。