立即注册,加入爱黑武论坛的大家庭!爱黑武,爱上搞机生活!
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 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进行反编译。 要求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文件,加载资源文件的方法
注意空格。
今天我们主要是对framework-res.apk进行反编译。 方法如下:
这样就算是反编译完成了,apktool的版本不同可能会出现不同的情况,软件都是有bug的,我们不要抱怨,感恩软件制作者NB的同时,要学会包容。
反编译后就会在apk目录下生成同名文件夹
我们打开
Assets文件夹是一些直接调用的文件,不用修改,AndroidManifest.xml文件是一主要的配置文件,不要修改,apktool.yml是apktool自动生成的,不用修改。我们只对res进行修改,打开res文件夹
这里面是我们要修改的一些文件,我们按照文件夹顺序来一步一步来。 一、第一个anim文件夹是特效文件夹,现在流行的好多特效(九尾,飞来飞去,左右摆动,上下,左移,右移)都是通过修改它里面的文件来实现的,以其中一个为例:
Xml文件用如图文件来修改,很方便,问度娘要去。先给出一个自用的:
foxe.exe
(980 KB, 下载次数: 246)
- <?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,这里可以修改界面和电量图片不要大量替换,会打包不成功。电量文件(
电池图标素材.zip
(377.37 KB, 下载次数: 251)
)将里面的图片和配置文件复制到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自行修改,还有锁屏图片
lock.zip
(129.44 KB, 下载次数: 66)
也在这和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/下注意修改权限。
|