下面的记录是在我敲入以下命令后遇到的错误:(相信学习逆向的同学一定不会生疏:)
apktool b -f E:\decode -o E:\Decompile.apk
回编译出现文件名或扩展名太长错误
解决方案:减少apktool.yml文件中doNotCompress不加密的文件回编译出现“class not find brut.androidlib.meta.MetaInfo”
解决方案:删除apktool.yml文件中的第一行代码【!!brut.androidlib.meta.MetaInfo】aapt处理时提示“First type is not attr!”
解决方案:aapt版本出现问题,替换当前最新的版本,别忘记apktool中还有aapt版本apktool反编译的时候出现警告【counld not write to 文件路径】
解决方案:配置apktool相对路径对于回编译的时候出现方法数超出限制
解决方案:尝试将smali中的文件转移到其他smali_classes路径下(smali_classes2,smali_classes3…等等)出现【java.lang.UnsupportedClassVersionError】
解决方案:调整java与javac的版本匹配回编译出现系统资源找不到
解决方案:更新android.jar到最新的系统框架出现一些适配res目录中属性找不到或报错的情况
解决方案:可以暂时删除当前属性,或把整个适配文件也删除有些包直接修改了包名后,出现找不到R文件的情况
解决方案:需要再一次编译R文件后再回编译出现回编译前后包体大小发生重大变化
解决方案:调整apktool.yml中doNotCompress文件集合,使得有些文件需要压缩回编译的时候,日志显示不是PNG图片
解决方案:找到相应的图片,用图片工具重新转换PNG格式回编译出现找不到complieSdkVersion、compileSdkVersionCodename
解决方案:更新android.jar最新版本编译出现【java.lang.UnsupportedClassVersionError】
解决方案:当前电脑的jdk版本过低编译后包体出现微信闪退
解决方案:需要再微信activity中加入configChanges="screenSize"运行包体崩溃,日志显示:【java.lang.NoSuchMethodError:NO static method checkSelfPermission】
解决方案:更新support-V4包运行包体崩溃,日志不明显
解决方案:查看新加入的sdk是否存在so库,如果有,请保持和母包同样的环境目录,如果没有,再查看是否时jar冲突运行包体,支付闪退
解决方案:删除manifest中对应支付组件样式资源出现MalformedByteSequenceException:2字节的UTF-8序列的字节2无效
解决方案:Manifest文件中存在中文字符,出现乱码icon不对
解决方案:替换所有涉及icon的目录下的资源反编译失败,出现serializeToResValuesXml
解决方案:修改apktool命令 带上-r回编译报错,出现找不到的资源
解决方案:删除找不到的资源的索引信息R文件各种找不到
需要将apktool和aapt工具同步升级到最新版本。-
方法个数过多(超过65535)
“Exception in thread "main" org.jf.util.ExceptionWithContext: Unsigned short value out of range: 71412”,需要将多余的smali文件,移到smali_classes2,smali_classes3…等等,目前最多支持5个,应该够用了。
23、可以正常构建,运行在设备上会出现各种类文件缺失
一般是smail文件过多导致自动删减了部分代码有关,建议分dex包处理或者耐心点,缺失哪个文件补哪个。
注意:
1、编译和回编译最好使用同一个apktool操作
2、apktool中记得需要及时更新Android框架版本
3、apktoo2.1一下默认对assets下加密的,高于2.1版本默认时不加密的,需要自己手动加密,具体需要加密的文件后缀参考apktool源码中说明信息
4、出现aapt版本也需要升级,注意要考虑aapt2的影响
5、打包过程注意jar冲突
6、打包后运行不正常,排查母包是否限制包名,签名
7、出现其他异常编译或回编译异常的情况,可以尝试更换apktool版本
大部分内容转自这篇blog:聚合sdk打包问题处理
一小部分是自己补充,后面遇到问题会陆续更新,就当记录和共享~