虽然遇到了可怕的 dex 方法限制错误问题,但我一直在尝试找到解决该问题的快速解决方案。使用 proguard 后,我的 apk 被缩小了 13k 个方法,其中大部分来 self 使用的库。这是构建过程的(稍作修改的)相关输出。
-obfuscate:
[mkdir] Created dir: /bin/proguard
[jar] Building jar: /bin/proguard/original.jar
[proguard] ProGuard, version 5.0
[proguard] Reading input...
[proguard] Reading program jar [/libs/kryo-2.24.0.jar]
[proguard] Reading program jar [/libs/jackson-databind-2.1.1.jar]
[proguard] Reading program jar [libs/okhttp-1.1.0.jar]
[proguard] Reading program jar [/libs/realm-0.72.0.jar]
[proguard] Reading program jar [/libs/tape-1.1.0.jar]
[proguard] Reading program jar [/libs/google-play-services.jar]
[proguard] Reading program jar [/libs/AudienceNetwork.jar]
[proguard] Initializing...
[proguard] Ignoring unused library classes...
[proguard] Original number of library classes: 7170
[proguard] Final number of library classes: 1712
[proguard] Printing kept classes, fields, and methods...
[proguard] Shrinking...
有没有什么方法可以指示 Proguard for Android 保存中间 jar(这些库的缩小版本,适合我的代码需求,具有完全使用的功能集,仅此而已),就在缩小之后,但在它们获得之前由 aapt 打包成一个巨大的 blob ?
最佳答案
您可以创建自定义的缩小版本的 Google Play 服务,这可能足以避免 65K 方法 ID 限制。我的presentation on creating smaller apps来自 Droidcon London 2014 的文档包含一些可能的 ProGuard 配置来创建这样一个缩小的库。
关于android - 有什么方法可以指示 Proguard (在 Android 上)保存中间 jar 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26823075/