Apktool编译报错文件名或扩展名太长

出现这个问题貌似是因为命令行支持的字符串长度有限制,字符串的长度是8191个字符。
最后在Linux下操作完成(Mac下也可以)。

反编译包后apktool.yml文件的doNotCompress变少

更新apktool.jar 到最新版本解决问题。

重新编译后包体积变大

注意 doNotCompress 字段,有的文件不压缩体积就会变大

回编译报错:brut.androlib.AndrolibException: brut.common.BrutException

原因
cmd命令行长度有限制,Windows XP或更高版本,最大长度 8191 个字符。如果超过8191就会有问题。一般apk回编是没得问题,如果apk中不压缩的资源太多就会造成回编失败的问题,不压缩资源目录在apktool.yml中。
解决方法
修改Apktool命令执行长度,即减少不压缩的资源。

Encountered small uint that is out of range at offset 0x38

原因
classes.dex文件里可能包含无法反编译的内容,比如 A3AEECD8.dex 。
解决方法

  1. 更新 apktool 到最新版本,本人更新到的是 2.4.1;
  2. 使用参数 --only-main-classes
    1. apktool d app-debug.apk --only-main-classes

    No resource identifier found for attribute ‘compileSdkVersion’ in package ‘android’

    解决方法
    1.新建任意空文件,比如:
    1. mkdir framework

2.输入

  1. apktool b apkDir -p framework -o apkDir_build.apk

apkDir:要编译的目录