HOPE 发表于 2012-5-30 11:50

【原创】Android高级话题之:编译与反编译apk文件及java环境设置

无须编程经验,一样可以修改Android系统之apk文件,达到自行修改系统特性或美化系统的目的。

第一步:下载,安装java环境:
http://cloud.189.cn/t/qIR3Yr

下载之后安装,安装完成。

第二步:设置java环境:
安装好java之后,记下其安装路径,如:C:\Program Files (x86)\Java\jdk1.7.0 然后:
1、点击“我的电脑”=>“系统属性”=>“高级”=>“环境变量”,新建两个分别是JAVA_HOME和CLASSPATH,变量值分别是对应的java安装目录,如:
JAVA_HOME对应C:\Program Files (x86)\Java\jdk1.7.0
CLASSPATH对应 .;C:\Program Files (x86)\Java\jdk1.7.0\lib\dt.jar;C:\Program Files (x86)\Java\jdk1.7.0\lib\tools.jar
注意变量前的.和;必须加上。如图:


2、再点击下面的“系统变量”的Path,双击,在前面添加上对应的路径(不同版本及系统安装的路径不同,自己对应),如:
C:\Program Files (x86)\Java\jdk1.7.0\bin;C:\Program Files (x86)\Java\jre6\bin;
注意后面要加上分号;

3、确定设置好之后,打开DOS窗口,输入java -version,如果看到版本信息,则说明java环境设置成功。如图:


第三步:java环境设置好之后,就可以用工具软件来反编译了,先下载工具:


然后打开该工具,并用re管理器将相应的apk文件拷贝出来进行反编译。以下就以修改MOTO XT894手机默认的自动亮度级别为例,说明一下如何操作。
MOTO XT894的默认亮度很高,比较费电,就可以自己修改其默认的亮度来达到省电的目的。

1、先用re管理器将/system/framework/framework-res.apk拷贝出来,然后用DoAPK将其反编译;

2、打开反编译后的目录res/values下的arrays.xml文件,用notepad打开即可,找到这一行:
<integer-array name="config_autoBrightnessLevels">
可以看到其下面的亮度级别只有三档:
      <item>50</item>
      <item>3000</item>
      <item>8000</item>

修改为:
      <item>10</item>
      <item>50</item>
      <item>100</item>
      <item>150</item>
      <item>200</item>
      <item>700</item>
      <item>1300</item>
      <item>2000</item>
      <item>3000</item>
      <item>4000</item>
      <item>5000</item>
      <item>6000</item>
      <item>7000</item>
      <item>8000</item>
      <item>9000</item>
修改为16档,够多了吧,再将下一行:
    <integer-array name="config_autoBrightnessLcdBacklightValues">
的对应亮度的值:
      <item>48</item>
      <item>88</item>
      <item>206</item>
      <item>246</item>

修改为:
      <item>5</item>
      <item>10</item>
      <item>20</item>
      <item>30</item>
      <item>40</item>
      <item>50</item>
      <item>60</item>
      <item>70</item>
      <item>80</item>
      <item>90</item>
      <item>100</item>
      <item>110</item>
      <item>120</item>
      <item>130</item>
      <item>140</item>
      <item>150</item>

保存退出。

2、用DoAPK工具将其编译回去,如下图选择对应的目录及存放apk文件的目录即可:


3、还有关键一步,就是将重新编译所得的apk文件,用winrar打开,将其里面的resources.arsc文件解压出来,我们只需要用到这个文件,而不是重新编译回来的整个apk文件;然后将这个resources.arsc添加覆盖回去之前拷贝出来的framework-res.apk文件里面,获得一个新的framework-res.apk文件。

4、用re管理器,将新的framework-res.apk文件拷贝手机卡,再拷贝到/system目录下,设置权限为rw-w-r,即第一行钩上Read,Write,第二行和第三行只钩上Read,设置好权限之后,再拷贝覆盖到system/framework目录下,退出重启一下即生效。注意一定要先在system目录下设置好权限,才拷贝到system/framework目录下,否则。。。重新刷机吧。

至此,工程完成,HOHO。

lq125421621 发表于 2012-5-30 12:04

一看就知道是老大的技术贴

czlkx 发表于 2012-5-30 22:14

好贴 mark

song_1118 发表于 2012-5-31 11:08

========
   这个不错,是很重要的安卓系统修改和美化的基础知识之一。

mabin 发表于 2012-5-31 11:18

技术流~~~

lesh645 发表于 2012-5-31 21:43

技术贴支持

bladechan 发表于 2012-6-3 14:47

混淆过的代码能用不?

老疯子 发表于 2012-6-3 17:45

顶下老大的技术贴!

针头 发表于 2012-6-3 17:49

馬克~~多傳授點安致知識~

HOPE 发表于 2012-6-3 17:57

Posted by bladechan on 2012-6-3 14:47 http://www.ibmnb.com/images/common/back.gif
混淆过的代码能用不?

什么是混淆过的代码?

鲁鳏 发表于 2012-6-3 18:02

GOogle官方出的apktool就可以,呵呵,那些要不要权限多的国产应用,可以先改一下权限后再打包安装。

littlestone124 发表于 2012-6-3 18:26

这个帮顶了啊

bladechan 发表于 2012-6-3 23:53

Posted by HOPE on 2012-6-3 17:57 http://www.ibmnb.com/images/common/back.gif


什么是混淆过的代码?
编译的时候为防止逆向用混淆器混淆过的代码。

HOPE 发表于 2012-6-3 23:56

回复 #13 bladechan 的帖子

没有试过,目前试的是系统自带的模块。

sanlin 发表于 2012-6-4 00:27

学习了,谢谢分享:)

wolfaha 发表于 2012-6-7 10:04

mark

junlin88 发表于 2012-6-8 19:57

很重要的安卓系统修改

n64ngc 发表于 2012-6-9 07:25

mark留念!

pw_2009 发表于 2012-11-12 16:11

精华的技术文章啊,谢谢楼主

alvs 发表于 2012-11-12 21:17

为什么不能用这个工具编译生成的APK文件直接覆盖原文件?
页: [1]
查看完整版本: 【原创】Android高级话题之:编译与反编译apk文件及java环境设置