(三)Apk改之理(ApkIDE)使⽤常见问题~~~!
1.如何配置Java SDK?
鉴于还有很多⼈不明⽩如何设置JDK,这⾥以安装jdk1.6为例,给出⼀个详细设置步骤:(1)先下载安装JDK1.6:点击这⾥进⼊下载JDK6,参考下⾯的图⽰下载jdk安装包(点击图⽚看⼤图)。
下载jdk1.6
本帖隐藏的内容jdk怎么使用
(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⽂件夹下包含、等程序。)
【注意】从2.4版开始不再⽀持jre,必须要jdk,因为jre相对jdk少了很多⼯具(如jre的
bin⽬录下没有等),随着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的错误时,可尝试更新这个来解决(⽐如编译时出现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⽬录下到最新的。得到后将它拷贝⼀份到Apk改之理(Apk IDE)安装⽬录下覆盖同名⽂件即可。如果你没有安装android sdk,也不想安装,可以直接点击这⾥下载最新版(我会在发现有更新的时添加在下载列表中)。
_
4.dex转成jar失败是什么原因?如何处理?
如果使⽤的Apk改之理⼩于2.1,请更新到最新版本的APK改之理(2.1或以上版本);如果使⽤的Apk改之理是2.1以上版仍然出现此问题(可能只在Vista/win7系统中),请尝试⽤管理员权限运⾏Apk改之理(右键单击单击以管理员运⾏);如果依然不⾏的,请尝试(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源码时出现错误的解决⽅法
这个是因为这个软件的本⾝问题,它不允许将⾃⼰安装在带空格的路径中,该软件集成在apk改之理中,⽤于将.class转换成.java源码,所以如果把Apk改之理安装在带空格的路径中,那么在查看smali的java源码时就出现错误。
【解决⽅法】将apk改之理安装在不含空格的路径中(整个路径中的任何⽂件夹不含空格),同时建议安装在纯英⽂的路径中,且放到⾮系统盘中。为了避免其它问题,建议以管理员运⾏
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论