请选择 进入手机版 | 继续访问电脑版

机锋论坛

  • 关注机锋
  • 关注机锋
 找回密码
 注册
查看: 15304|回复: 28

APKTool使用心得

[复制链接]

26

主题

1046

好友

1897

积分

硕士

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    奋斗
    2014-8-29 11:11
  • 签到天数: 2 天

    [LV.1]初来乍到

    G币
    1050
    最后登录
    2019-3-22
    注册时间
    2010-9-19
    发表于 2011-9-4 14:17 |显示全部楼层

    马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。

    立即注册 已有帐号?点击登录   下载游戏和软件,请【猛击这里】进入机锋市场!

    ×
    本帖最后由 xtgsyjx 于 2011-9-4 17:01 编辑

    APKToolGOOGLE提供的APK编译工具,需要JAVA运行环境,推荐使用JDK1.6或者JDK1.7

    如果你想对APK文件进行修改,那么就不可避免的要使用到APKTool。论坛里有很多关于ROM美化的帖子都需要自己动手修改APK文件,比如修改framework-res.apksystemUI.apk等等。

    相信各位有不少人看了后都想亲自来修改一番,但是结果却是遇到了各式各样的错误却无法进行改正,甚至都不知道自己错在哪里。

    一.APKTOOL使用环境配置

    1.安装JAVA并设置环境变量。

    下载安装都很简单,关键是安装完后还需要亲自设置环境变量以方便其他程序能够条用JAVA

    WIN7为例,在桌面上右键点击计算机——>属性——>高级系统设置——>环境变量——>在下边的系统变量里新建一个变量,变量名为JAVA_HOME,值为JAVA的安装路径,比如我的是H:\ProgramFiles\Java\jdk1.6.0_26

    二.APKTool的安装

    1.其实这个谈不上安装,不过如果你愿意的话可以把下载到的APKTOOL中的三个文件(aapt.exeapktool.batapktool.jar)解压缩到你的Windows安装目录下,以方便使用Dos命令.

    2.可能有些人下载的APKTOOL里有个安装的bat文件,并且有另外两个方便使用的bat文件,在这里我不推荐大家使用这些bat文件,虽然使用起来很方便(其实我并不觉得方便),但是如果出现错误不方便查看。

    三.APKTool的使用

    1.decode

    该命令用于进行反编译apk文件,一般用法为

    apktool d <file.apk> <dir>

    <file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk

    <dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer

    如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令

    apktool d –f <file.apk> <dir>

    这样就会强行覆盖已经存在的文件

    2.build

    该命令用于编译修改好的文件,一般用法为

    apktool b <dir>

    这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer,输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹builddist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。

    3.install-framework

    该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。具体情况请看常见问题



    四.常见问题

    1.关于安装和管理framework文件

    以下大部分其实是翻译自http://code.google.com/p/android-apktool/wiki/FrameworkFiles

    一般来说,你在使用apktool进行反编译前不需要做其他的事情,然而由于有的厂商,如HTC,三星等,他们定制了framework文件并且在他们的系统应用中使用了这些文件,这时,为了能正常的反编译这些apk文件,你就必须从你的设备中拷贝出framework文件并且安装到apktool中。

    举一个例子,比如你想反编译HTCHero这款手机中的HtcContacts.apk,当你尝试反编译的时候,你会得到以下错误信息。


    1. $ apktool d HtcContacts.apk
    2. I: Loading resource table...
    3. I: Decoding resources...
    4. I: Loading resource table from file: /home/brutall/apktool/framework/1.apk
    5. W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542
    6. ...
    7. W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520
    8. Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info.
    复制代码

    这就是在通知你必须先安装HTC定制的framework文件,事实上在修改一些三星的系统应用时也是如此。

    以三星的设备来举例,你需要复制两个framework文件来进行安装,framework-res.apktzframework-res.apk,一般来说,这两个文件在手机中的位置应该是system\framework\

    使用以下代码进行安装

    apktool if C:\framework-res.apk

    apktool if C:\tzframework-res.apk

    这里假设2个文件都放在C盘根目录


    2.直接用build编译后在dist中找到的apk文件无法使用

    其实这个问题我也不是特别理解,目前知道的就是,APK文件虽然本质是个zip文件,但是事实上zip包中的文件是按照两种方式压缩的,即XML文件进行deflate压缩,其他文件不进行压缩(使用store存储),而直接编译得到的APK文件对任何的文件都进行了deflate压缩,因此你会发现编译得到的文件比原文件小好多。

    同样的,当你使用build文件夹中的文件替换原apk文件中的资源时,请务必确认是使用store存储还是deflate压缩

    3.其他错误

    其实在编译过程中会遇到很多其他的问题,大多数是由于删除、修改、添加了资源后,没有对应的修改res\values\public.xml文件而造成的,这里我给大家说下修改的原则:

    第一,public.xml文件中的资源不能重复定义。

    第二,public.xml文件中的任意两个资源的ID不能一样

    第三,public.xml文件中定义的资源必须能找到该文件(如果你删除了一些文件,必须要对应的删除public.xml中的该行)

    第四,public.xml文件中尽可能全面(如果你添加了某资源,最好确保在public.xml中也添加)

    第五,public.xml文件中的资源的ID尽可能连续(当你为添加的文件添加声明时,赋予的ID尽可能是连续的)

    4

    查看全部评分

    顺丰速运通  365夜童话故事

    26

    主题

    1046

    好友

    1897

    积分

    硕士

    Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    奋斗
    2014-8-29 11:11
  • 签到天数: 2 天

    [LV.1]初来乍到

    G币
    1050
    最后登录
    2019-3-22
    注册时间
    2010-9-19
    发表于 2011-9-4 14:24 |显示全部楼层
    另外其实我懂的也不多 欢迎指出错误 或者提供错误信息的素材 我好进行添加整理
    手机网游代理  inexus

    70

    主题

    15

    好友

    1101

    积分

    初中生

    Rank: 3Rank: 3

    该用户从未签到

    G币
    1731
    最后登录
    2019-6-22
    注册时间
    2011-5-7
    发表于 2011-9-4 14:42 |显示全部楼层
    这个贴不错,顶
    我挥一挥小手,又是一分带走~
    x战警逆转未来bd  mxplayer官网

    98

    主题

    22

    好友

    4426

    积分

    等待验证会员

  • TA的每日心情
    开心
    2014-10-18 08:55
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    G币
    911
    最后登录
    2019-4-5
    注册时间
    2011-1-4
    发表于 2011-9-4 14:48 |显示全部楼层
    个人表示DOS版的很难用。。。
    我直接用界面的了
    lazy是什么意思  四川移动网上移动营业厅

    95

    主题

    504

    好友

    3万

    积分

    机锋荣誉院士

    Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19

  • TA的每日心情
    无聊
    2018-8-7 21:58
  • 签到天数: 457 天

    [LV.9]以坛为家II

    G币
    2374
    最后登录
    2019-7-5
    注册时间
    2011-6-15
    发表于 2011-9-24 21:36 |显示全部楼层
    写的不错,支持一下。
    凤凰传奇组合  百度云盘1t

    0

    主题

    0

    好友

    87

    积分

    等待验证会员

    该用户从未签到

    G币
    85
    最后登录
    2016-8-2
    注册时间
    2011-8-24
    发表于 2011-10-9 08:22 |显示全部楼层
    谢谢分享
    everything is possible
    手机搜狗拼音输入法官方下载   华为c8812刷机包

    1

    主题

    0

    好友

    440

    积分

    等待验证会员

  • TA的每日心情
    郁闷
    2015-1-18 20:58
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    G币
    1
    最后登录
    2017-8-20
    注册时间
    2010-1-22
    发表于 2011-10-11 09:54 |显示全部楼层
    这个写的很好。支持了。
    手机定位跟踪器  n919中兴

    0

    主题

    0

    好友

    384

    积分

    等待验证会员

    该用户从未签到

    G币
    97
    最后登录
    2016-8-2
    注册时间
    2011-9-4
    发表于 2011-10-11 11:41 |显示全部楼层
    唉  菜鸟表示看不懂
    天翼软件  htcg10上网设置 

    0

    主题

    0

    好友

    2

    积分

    等待验证会员

    该用户从未签到

    G币
    12
    最后登录
    2016-8-2
    注册时间
    2011-10-10
    发表于 2011-10-11 14:10 |显示全部楼层
    很详细的技术贴,顶一下,谢谢楼主啦~
    801e   都市美女试睡员

    7

    主题

    0

    好友

    419

    积分

    等待验证会员

    该用户从未签到

    G币
    726
    最后登录
    2016-8-2
    注册时间
    2011-7-26
    发表于 2011-10-19 17:19 |显示全部楼层
    没上过学的孩子 表示看不懂 但是顶下
    此人很懒  就不写签名了
    小电筒  刀刀狗壁纸
    您需要登录后才可以回帖 登录 | 注册

    网上有害信息举报中心|手机版|机锋网 ( 京ICP备15063876号-5 京公网安备 11010202008075

    GMT+8, 2019-7-17 23:42

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部