永心无亦 发表于 2011-9-23 13:33

以国行2.3为例修改 ROOT 精确电量 自动亮度 四大金刚 震动 射频 apktool反编译及打包

本帖最后由 htcer 于 2011-9-23 15:57 编辑

第一次发帖,作为送给黑5以及小狼的礼物---以国行2.3为例教你简单修改framework-res.apk。1、反编译apk工具以及使用方法。2、反编译后国行通讯录乱码修复。3、精确电量。4、自动亮度。5、四大金刚亮度。6、震动。7、特效。8、更换默认壁纸,锁屏壁纸。9、 手机射频。10、signapk签名问题11、其他一些说明 作为发烧友,最基本的要求就是会对一些apk进行反编译。前提是手机得root送上2.3的root工具工具:apktool 下载链接http://code.google.com/p/android-apktool/以及最新的要求java环境变量配置,这个请请教度娘或者谷歌,谷歌的特点是资源多,但英文较多。度娘汉文多,但相对来说资源就少一些了。不过简单一些的资源度娘就能很轻松搞定了。简单说明一下apktool的使用,建立文件夹(名字不能是中文)例如apk()将下载的

现在最新的貌似是1.4.1版本,和

解压后放到apk文件夹


打开cmd将路径切换到apk文件夹下,将需要反编译的apk文件放到apk文件夹下:然后在命令提示框输入:apktool d *.apk(*.apk为你要反编译的apk文件)

说明一下:第三方apk反编译如上就行,如果想反编译系统自带apk就需要框架framework-res.apk或者其它的支持。品牌不同资源框架文件也不同,moto的一般为三个。全部在/system/framework/下的apk文件,加载资源文件的方法apktool if *.apk
注意空格。今天我们主要是对framework-res.apk进行反编译。方法如下:

这样就算是反编译完成了,apktool的版本不同可能会出现不同的情况,软件都是有bug的,我们不要抱怨,感恩软件制作者NB的同时,要学会包容。
反编译后就会在apk目录下生成同名文件夹

我们打开

Assets文件夹是一些直接调用的文件,不用修改,AndroidManifest.xml文件是一主要的配置文件,不要修改,apktool.yml是apktool自动生成的,不用修改。我们只对res进行修改,打开res文件夹


这里面是我们要修改的一些文件,我们按照文件夹顺序来一步一步来。一、第一个anim文件夹是特效文件夹,现在流行的好多特效(九尾,飞来飞去,左右摆动,上下,左移,右移)都是通过修改它里面的文件来实现的,以其中一个为例:Xml文件用如图文件来修改,很方便,问度娘要去。先给出一个自用的:
<?xml version="1.0" encoding="utf-8"?>

<set android:interpolator="@anim/decelerate_interpolator"

xmlns:android="http://schemas.android.com/apk/res/android">

<scale android:duration="@integer/config_shortAnimTime" android:pivotX="50.0%" android:pivotY="50.0%" android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="1.0" android:toYScale="1.0" />

<alpha android:duration="@integer/config_shortAnimTime" android:fromAlpha="1.0" android:toAlpha="1.0" />

</set>
这是九尾的现成范例,可以自己diy。怎么diy问度娘。全部说出来,这一个帖子撑不下。见谅……


二、下一个修改drawable-hdpi,这里可以修改界面和电量图片不要大量替换,会打包不成功。电量文件()将里面的图片和配置文件复制到drawable-hdpi里面,提示替换的替换就行,将配置文件放到drawable文件夹一份。这样精确电量就实现了,moto国行自带不能实现1%步进,需要/system/lib/libandroid_server.so支持,请自行搜索。任务栏的文件图片status_bar_background.png(2.2-status_bar_background.9.png)和任务栏下方阴影title_bar_shadow.9.png也在这里面,想要透明的可以用Fireworks或者ps自行修改,还有锁屏图片也在这和drawable-land-hdpi里面。拿来主义会让你慢慢被太多的人抛弃。另外信号,蓝牙,无线……图标文件都在这里面。三、帖子的重点-values文件夹:首先arrays.xml文件找到如下字段:<integer-array name="config_longPressVibePattern"> #长按震动
<item>0</item>
<item>40</item>
</integer-array>
<integer-array name="config_virtualKeyVibePattern"> #四大金刚震动
<item>0</item>
<item>25</item>
</integer-array>
<integer-array name="config_keyboardTapVibePattern"> #键盘按键震动
<item>0</item>
<item>25</item>
</integer-array>
<integer-array name="config_safeModeDisabledVibePattern">#安全模式不可见震动
<item>0</item>
<item>40</item>
</integer-array>
<integer-array name="config_safeModeEnabledVibePattern">#安全模式可见震动
<item>0</item>
<item>40</item>
<item>500</item>
<item>600</item>
</integer-array>
<integer-array name="config_scrollBarrierVibePattern">
<item>0</item>
<item>30</item>
<item>60</item>
<item>30</item>
</integer-array>
<integer-array name="config_autoBrightnessLevels">#自动亮度级别
<item>50</item>
<item>3000</item>
<item>8000</item>
</integer-array>
<integer-array name="config_autoBrightnessLcdBacklightValues">#自动亮度led背景光亮度级别
<item>48</item>
<item>108</item>
<item>206</item>
<item>246</item>
</integer-array>
<integer-array name="config_autoBrightnessButtonBacklightValues">
<item>255</item>
<item>0</item>
<item>0</item>
<item>0</item>
</integer-array>
<integer-array name="config_autoBrightnessKeyboardBacklightValues">
<item>255</item>
<item>0</item>
<item>0</item>
<item>0</item>
</integer-array>
这哩可以实现自动亮度调整,四大金刚亮度调整(2.3由于内核的原因,好像修改后无效)和锁屏四大金刚以及长按震动,四大金刚好多人还是喜欢震动的,可以调节震动减弱一些,17为微震,很舒服(大家都说很舒服,反正你不舒服,只能说明你另类,哇哈哈哈)以下是修改好的我自用的去震代码:<integer-array name="config_longPressVibePattern">
<item>0</item>
<item>0</item>
</integer-array>
<integer-array name="config_virtualKeyVibePattern">
<item>0</item>
<item>0</item>
</integer-array>
<integer-array name="config_keyboardTapVibePattern">
<item>0</item>
<item>0</item>
</integer-array>
<integer-array name="config_safeModeDisabledVibePattern">
<item>0</item>
<item>0</item>
</integer-array>
<integer-array name="config_safeModeEnabledVibePattern">
<item>0</item>
<item>0</item>
<item>500</item>
<item>600</item>
</integer-array>
<integer-array name="config_scrollBarrierVibePattern">
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
</integer-array>
<integer-array name="config_autoBrightnessLevels">
<item>30</item>
<item>100</item>
<item>300</item>
<item>1000</item>
<item>2000</item>
<item>3000</item>
<item>4000</item>
<item>5000</item>
<item>6000</item>
<item>7000</item>
<item>8000</item>
</integer-array>
<integer-array name="config_autoBrightnessLcdBacklightValues">#有效值为24-255
<item>24</item>
<item>44</item>
<item>64</item>
<item>84</item>
<item>104</item>
<item>124</item>
<item>144</item>
<item>164</item>
<item>184</item>
<item>204</item>
<item>224</item>
</integer-array>
<integer-array name="config_autoBrightnessButtonBacklightValues">有效值同上。
<item>1</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
</integer-array>
<integer-array name="config_autoBrightnessKeyboardBacklightValues">
<item>1</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
<item>0</item>
</integer-array>

好多发烧友,发现一个问题就是,明明在配置文件里修改了true和false的值,可是在软件系统里面发现无效,那就得看看bools.xml文件了,里面是一些设置选项的设置。很方便很实用。至于颜色的修改可以修改colors.xml没有颜色概念的友友还是放弃吧。四、下面这个文件夹里面的文件是好多反编译人员最常访问的:这是中文的valves,2.2的framework-res.apk反编译后发现通讯录乱码,问题在plurals.xml里面。不一样的就修改为如下就行了:<?xml version="1.0" encoding="utf-8"?>
<resources>
<plurals name="num_seconds_ago">
<item quantity="other">%d 秒前</item>
<item quantity="one">1 秒前</item>
</plurals>
<plurals name="num_minutes_ago">
<item quantity="other">%d 分钟前</item>
<item quantity="one">1 分钟前</item>
</plurals>
<plurals name="num_hours_ago">
<item quantity="other">%d 小时前</item>
<item quantity="one">1 小时前</item>
</plurals>
<plurals name="last_num_days">
<item quantity="other">过去 %d 天</item>
</plurals>
<plurals name="num_days_ago">
<item quantity="other">%d 天前</item>
<item quantity="one">昨天</item>
</plurals>
<plurals name="in_num_seconds">
<item quantity="other">%d 秒后</item>
<item quantity="one">1 秒后</item>
</plurals>
<plurals name="in_num_minutes">
<item quantity="other">%d 分钟后</item>
<item quantity="one">1 分钟后</item>
</plurals>
<plurals name="in_num_hours">
<item quantity="other">%d 小时后</item>
<item quantity="one">1 小时后</item>
</plurals>
<plurals name="in_num_days">
<item quantity="other">%d 天后</item>
<item quantity="one">明天</item>
</plurals>
<plurals name="abbrev_num_seconds_ago">
<item quantity="other">%d 秒前</item>
<item quantity="one">1 秒前</item>
</plurals>
<plurals name="abbrev_num_minutes_ago">
<item quantity="other">%d 分钟前</item>
<item quantity="one">1 分钟前</item>
</plurals>
至于strings.xml是好多汉化的人都很熟悉的一个文件。里面可以diy好多事情,这个只有你进去了才会知道。注意中文修改要用中文标点,要不会打包失败。五、这个文件夹:
我们只修改一个文件power_profile.xml这是有关射频时cpu调用的一个配置文件:<?xml version="1.0" encoding="utf-8"?>
<device name="Android">
<item name="none">0</item>
<item name="screen.on">0.1</item>
<item name="bluetooth.active">0.1</item>
<item name="bluetooth.on">0.1</item>
<item name="screen.full">0.1</item>
<item name="wifi.on">0.1</item>
<item name="wifi.active">0.1</item>
<item name="wifi.scan">0.1</item>
<item name="dsp.audio">0.1</item>
<item name="dsp.video">0.1</item>
<item name="radio.active">1</item>
<item name="radio.scanning">0.5</item>
<item name="gps.on">1</item>
<array name="radio.on">
<value>0.2</value>
<value>0.1</value>
<array name="cpu.speeds">
<value>400000</value>
</array>
<item name="cpu.idle">0.1</item>
<array name="cpu.active">
<value>0.2</value>
</array>
国行2.3的这个文件配置有点简单了,说白了就是上面的功能运行在0.1的频率时就调用400m以上的cpu,这样cpu就两个级别了,400以内,400-1g。我们可以直接借用2.2的来配置:<device name="Android">
<item name="none">0</item>
<item name="screen.on">55</item>
<item name="bluetooth.active">142</item>
<item name="bluetooth.on">1</item>
<item name="bluetooth.at">35690</item>
<item name="screen.full">115</item>
<item name="wifi.on">4</item>
<item name="wifi.active">130</item>
<item name="wifi.scan">104</item>
<item name="dsp.audio">75</item>
<item name="dsp.video">75</item>
<item name="radio.active">300</item>
<item name="gps.on">170</item>
<item name="radio.scanning">70</item>
<array name="radio.on">
<value>3</value>
<value>3</value>
</array>
<array name="cpu.speeds">
<value>1000000</value>
<value>900000</value>
<value>800000</value>
<value>700000</value>
<value>600000</value>
<value>500000</value>
<value>400000</value>
<value>300000</value>
<value>200000</value>
<value>100000</value>
</array>
<item name="cpu.idle">10</item>
<array name="cpu.active">
<value>840</value>
<value>760</value>
<value>680</value>
<value>520</value>
<value>440</value>
<value>360</value>
<value>280</value>
<value>200</value>
<value>120</value>
<value>40</value>
</array>
<item name="battery.capacity">1000</item>
</device>
请放心经验证没有任何不良后果,至少我就是这样用的。如不放心可按如下修改:
<?xml version="1.0" encoding="utf-8"?>
<device name="Android">
<item name="none">0</item>
<item name="screen.on">0.1</item>
<item name="bluetooth.active">0.1</item>
<item name="bluetooth.on">0.1</item>
<item name="screen.full">0.1</item>
<item name="wifi.on">0.1</item>
<item name="wifi.active">0.1</item>
<item name="wifi.scan">0.1</item>
<item name="dsp.audio">0.1</item>
<item name="dsp.video">0.1</item>
<item name="radio.active">1</item>
<item name="radio.scanning">0.5</item>
<item name="gps.on">0.5</item>
<array name="radio.on">
<value>0.2</value>
<value>0.1</value>
</array>
<array name="cpu.speeds">
<value>900000</value>
<value>700000</value>
<value>500000</value>
<value>300000</value>
<value>100000</value>
</array>
<item name="cpu.idle">0.1</item>
<array name="cpu.active">
<value>0.5</value>
<value>0.4</value>
<value>0.3</value>
<value>0.2</value>
<value>0.1</value>
</array>
<item name="battery.capacity">1000</item>
</device><?xml version="1.0" encoding="utf-8"?>
<device name="Android">
<item name="none">0</item>
<item name="screen.on">0.1</item>
<item name="bluetooth.active">0.1</item>
<item name="bluetooth.on">0.1</item>
<item name="screen.full">0.1</item>
<item name="wifi.on">0.1</item>
<item name="wifi.active">0.1</item>
<item name="wifi.scan">0.1</item>
<item name="dsp.audio">0.1</item>
<item name="dsp.video">0.1</item>
<item name="radio.active">1</item>
<item name="radio.scanning">0.5</item>
<item name="gps.on">0.5</item>
<array name="radio.on">
<value>0.2</value>
<value>0.1</value>
</array>
<array name="cpu.speeds">
<value>900000</value>
<value>700000</value>
<value>500000</value>
<value>300000</value>
<value>100000</value>
</array>
<item name="cpu.idle">0.1</item>
<array name="cpu.active">
<value>0.5</value>
<value>0.4</value>
<value>0.3</value>
<value>0.2</value>
<value>0.1</value>
</array>
至此基本上算是简单修改完了吧我们打包:然后下面要仔细了,要不卡M或者我先重启或者开机后黑屏就不管我的事情了。将1framework-res.apk用rar打开将里面resources.arsc直接拖到framework-res.apk相应路径。
注意压缩方式为存储!!!!(就是不压缩,有人可能喜欢用好压,无所谓的)。将那会替换的电量图标从1framework-res.apk的 drawable-hdpi替换加载到framework-res.apk里面相应的drawable-hdpi文件夹下,压缩方式为存储。将电量配置文件按同上方式替换到相应的位置,注意存储方式为标准,还有drawable文件夹下面也有一份电量配置文件,注意存储方式为标准!!!!还有一个文件就是xml文件夹下的power_profile.xml文件,也要替换。(最后再说明一下,就是xml文件一般都是标准的压缩替换方式,png图片全部都是不压缩的存储替换方式。不要以为在括号里就不重要)不要签名,签名framework-res.apk会导致开机后桌面壁纸和软件失效。直接替换到/system/framework/下注意修改权限。在此送上我自用的framework-res.apk和原国行2.3的







永心无亦 发表于 2011-9-23 13:34

备用

蓝星 发表于 2011-9-23 14:36

支持了
~~~~~~~

__画地为牢 发表于 2011-9-23 15:42

支持一个!!!

LouisLaw 发表于 2011-9-23 18:58

精品。。。喜欢折腾的好好学习,自己修改啊

285985787 发表于 2011-9-24 13:28

受教了 谢谢了

285985787 发表于 2011-9-24 13:30

非常感谢 谢谢大婶

冰与水的距离 发表于 2011-9-24 22:19

哇靠。太给力了!!这两天正倒腾这个戴妃+的国行包类

孤狼520 发表于 2011-9-26 11:18

这个必须顶起来,使劲儿顶!!!

243839714 发表于 2011-10-6 18:19

支持和
页: [1] 2 3 4 5 6
查看完整版本: 以国行2.3为例修改 ROOT 精确电量 自动亮度 四大金刚 震动 射频 apktool反编译及打包