(三)Apk改之理(Apk IDE)使用常见问题~~~!

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.如何配置Java SDK?
鉴于还有很多人不明白如何设置JDK,这里以安装jdk1.6为例,给出一个详细设置步骤:(1)先下载安装JDK1.6:点击这里进入下载JDK6,参考下面的图示下载jdk安装包(点击图片看大图)。

下载jdk1.6
本帖隐藏的内容
(2)安装jdk1.6,安装时注意它的安装路径,你也可以更改安装路径,假设安装路径为E:\Develop\JDK6。

安装时有二个部份选择安装,一个是JDK,一个是JRE(建议都装),二者的路径可以设置不同,主要是JDK的路径你记得最好,至于JRE随便装哪儿,不过建议都放在一起(如安装到E:\Develop\JDK6\jre,覆盖同名目录没什么问题)。

(PS:安装过程就不详述了,如果连安装都不会,我只能建议你先去学一些电脑的基本知识)
(3)如果你照上面的步骤做的,重新打开APK改之理后,它一般就能直接找到JDK的安装路径了,不用再手动配置。

(4)如果没有自动配置好,或者你使用的是免安装绿色版的JDK,你可以手动配置JavaSDK 方法:在APK改之理主界面点菜单“工具-配置SDK”,点击“Java SDK(JDK)”安装路径后面的“浏览”按钮,找到JDK的安装目录(这个示例中就是E:\Develop\JDK6)。

(PS:如果你被提示“无效的安装目录”,若如此,请确保你所选择的目录下存在一个bin文件夹,且这个bin文件夹下包含java.exe、jarsigner.exe等程序。


【注意】从2.4版开始不再支持jre,必须要jdk,因为jre相对jdk少了很多工具(如jre的
bin目录下没有jarsigner.exe等),随着APK改之理的不断升级,有可能用到jdk中的更多工具,所以从2.4开始,下载安装一个jdk是必须的。

(5)Android SDK不是必要的,但配置方法与手动配置JDK类似,这里不详述。

2.在打开APK时,本想继续上次的修改但误点了重新编译,怎么办?
本帖隐藏的内容
(1)在使用apk改之理打开一个apk时,apk改之理会先去查看是否存在它的旧工作目录,如果存在会提示是否继续使用旧工作目录(如上图),也就是说这个apk之前修改过,如果本次你想继续上次的修改工作,那么按提示应该点“否”按钮,如果你误点了“是”按钮,也不用担心,因为Apk改之理在重新编译前会把旧工作目录清理到系统回收站,等待本次重新编译完成后,你可以直接从系统回收站还原出旧工作目录使用。

(2)有些细节你可能要注意,因为你点了“是”所以同时会编译生成一个全新的工作目录(而旧工作目录被扔进系统回收站),直接从系统回收站将旧工作目录还原到原位置覆盖新的工作目录一般不会有太大问题;另外,通常你在回收站能找到二个同名的工作目录,一个实际来自于APK改之理安装目录下的Work 文件夹中,一个来自Worksrc 文件夹中(注意看它们的“原位置”就能分辨了),前者是smali的源代码目录,也就是apk反编译后得到的源码目录,后者是class文件的源码目录,主要用于查找smali文件的java源码文档,这个class目录恢不恢复就无所谓(搞不明白或不想搞明白就全部恢复),因为重新编译时同样会生成,这个目录下的文件不可能被修改(当然,你叛逆的非要去改除外)。

(3)这个方法只对Apk改之理2.1或以上版本有效,在2.0中是直接删除旧工作目录无法恢复的。

3.为什么要更新aapt?aapt如何更新?
aapt即Android Asset Packaging Tool,是解包、打包、解析apk的核心程序,这个文件是集成android sdk的platform-tools目录下。

如果在使用Apk改之理编译、反编译时出现有关aapt的错误时,可尝试更新这个aapt.exe来解决(比如编译时出现could not exec command: [aapt, p, --min-sdk-version, 16, --target-sdk-version, 16, -F... 之类的错误时;当
然,需要说明的是,出现这种问题不一定是aapt的问题,可能你所改动的代码有问题)。

要更新这个程序,可以开启android sdk中的SDK Manager,并更新列表中的Tools\Android SDK Platform-tools ,下载完成后可以到[android sdk安装目录]\platform-tools目录下找到最新的aapt.exe。

得到后将它拷贝一份到Apk改之理(Apk IDE)安装目录下覆盖同名文件即可。

如果你没有安装android sdk,也不想安装,可以直接点击这里下载最新版(我会在发现有更新的aapt.exe时添加在下载列表中)。

_
4.dex转成jar失败是什么原因?如何处理?
如果使用的Apk改之理小于2.1,请更新到最新版本的APK改之理(2.1或以上版本);如果使用的Apk改之理是2.1以上版仍然出现此问题(可能只在Vista/win7系统中),请尝试用管理员权限运行Apk改之理(右键单击ApkIDE.exe单击以管理员运行);如果依然不行的,请尝试(1)将安装目录移到其它路径(这个我没尝试,可能行不通,除非你在非ntfs分区)(2)删除当前安装目录,然后完全重新安装APK改之理(记得一定不要覆盖安装)。

这个具体原因未知,但使用这种方式可以解决此问题。

PS:dex2jar即使失败也不影响修改apk,这个工具只是用来查看.smali文件对应的.java源码以辅助理解程序逻辑之用。

5.为什么编译时卡死?或反编译后不进行任何修改也无法编译成功?如何处理?
所谓编译卡死,是指在编译时,进度条一直停留在一处很长时间没有改变,这个一般只要等5-10分钟内如果编译不动,基本可断定为已经卡死了。

这个问题比较复杂,可能情况较多,但通常可能是由于修改的代码本身和编译工具的问题;另外,再比如,改得多了你就会经常碰到过一个apk直接反编译后不进行任何修改然后直接编译也会出现卡死或编译不能通过的问题;如果未改动任何东西编译不通过,如果有错误提示,那通常这种问题是由编译工具apktool(或aapt引起的,要明白反编译也是有局限的,并不能完全还原到应用最原始的开发状态,如果应用本身使用的是最新的或复杂的技术编制的应用,出现这种情况的可能性更大),这种可以尝试更新apktool(和aapt),如果还不行只能等待apktool的新版本发布来解决。

总的来说,按我的理解,可以归结为二个方面的原因:(1)修改的代码出现问题(2)apktool、aapt工具问题。

这种情况下可以参考“EARTH人”的经验:
…我在用时,发现APK IDE 再编译后(即使不修改)会出现卡住的现象,又再用APKTools 再编译(即使不修改)会出现很多的错误,其实是APK安装包的问题,需要原版的,而且未改过的官方安装包,就可能不会。

还有就是最好不要改最新的安装包,出错率会比较高…
所以解决方法也相对有几个:(1)检查修改的代码是否有问题(2)更新apktool、aapt 试试(3)等待新版本的apktool发布,期待它解决目前的问题(4)尽量拿原版程序来修改。

如果出现编译卡死后,可以点击菜单“编译-取消编译”来取消编译,然后找原因处理后再尝试,不过推荐直接手动编译的方式,这种方式下一般会显示有错误信息,具体做法是:(1)一旦出现卡死现象(最多等个10分钟左右,如果编译没动静,就可认为卡死了),就用菜单“编译-取消编译”来取消编译。

(2)然后底部点“命令”切换到命令标签,复制以下命令(注意:先将[PACKAGE]换成当前应用的包名,包名可以看“输出”中的日志记录,也可以点左侧项目面板上顶部的应用图标,在弹出窗口可以看到和直接复制package 包名)
apktool b "Work\[PACKAGE]" "d:\[PACKAGE].apk"
粘贴到命令窗口回车运行(上面的命令中如果路径中没有空格,可以省略双引号;如果命令运行后出现“ERROR: unable to open ‘d:\[PACKAGE].apk’ as Zip file for writing”,这个主要涉及系统权限问题,换个路径保存,比如改到e:盘或放到某个文件夹下,或在启动Apk改之理时使用右键单击“以管理员运行”的方式)。

这种手动方式下应该可以看到错误信息(有些错误信息不知什么原因,在apk改之理中无法捕捉,但那个编译错误是真实存在的,然后就似Apk改之理一直在等错误信息出来但它就是不出来,就只能卡在那里了,这就是造成“卡死”的最直接原因,而根本原因就是你将在这个命令窗口中看到的错误信息,不过这个错误信息多半对我们解决问题没有太直接的帮助);注意,这个没有涉及framework,另外即使打包成功apk也是没有签名的。

本帖隐藏的内容
6.关于签名方面的问题:JDK1.7下签名失败,或keystore方式签名失败(即编译成的apk中没有META-INF文件夹);签名成功后被360报马的
(1)如果使用JDK1.7,默认的签名方式是使用signapk.jar工具来签名,这个工具在jdk1.7下可能会签名失败(或许有出错提示,或放没有出错提示,如果安装apk出现问题,请使
用winrar打开编译成的apk查找有没有“META-INF”文件夹)。

【解决方法是】使用keystore+jarsigner的方式签名,点菜单“工具-配置SDK-APK签名”,选择“签名工具”中的“JarSigner”方式,并配置keystore信息(你可以使用自己的keystore,或使用软件自带的keystore),点“确定”应用配置,重新编译成apk即可。

(2)如果已经使用keystore+jarsigner方式,如果编译成的apk仍然是未签名的,这种情况基本是因为keystore的配置信息有误。

【解决方法】同样点菜单“工具-配置SDK-APK签名”界面,点“验证”按钮,只有当弹出的窗口显示有“验证成功”的字样的才表示当前的keystore设置没问题。

如果你不明白什么是keystore也不明白它怎么生成,请使用软件处事的keystore(默认情况下软件会自己配置这个keystore)。

(3)如果使用默认的signapk.jar工具来签名的,可能会被360误报有马,猜测其原因可能是因为这个签名用的证书文件被用滥了(testkey.pk8、testkey.x509.pem这二个签名用到的文件取自autosign,所以可能很多人都在用它签)360可能认为用这些文件签出来的应用都是修改版存在风险所以拉黑了)。

【解决方法】换成keystore+jarsigner的方式签名,你可以自己用eclipse来生成一个keystore,这样可以确保唯一。

同样点菜单“工具-配置SDK-APK签名”,选择“签名工具”中的“JarSigner”方式,并配置keystore信息
7.关于查找smali的java源码时出现错误的解决方法
这个是因为jd-gui.exe这个软件的本身问题,它不允许将自己安装在带空格的路径中,该软件集成在apk改之理中,用于将.class转换成.java源码,所以如果把Apk改之理安装在带空格的路径中,那么在查看smali的java源码时就出现错误。

【解决方法】将apk改之理安装在不含空格的路径中(整个路径中的任何文件夹不含空格),同时建议安装在纯英文的路径中,且放到非系统盘中。

为了避免其它问题,建议以管理员运行。

相关文档
最新文档