历史/上下文 我有一个项目[1],其中大小真的很重要 - 最近我把东西移到共享库[2]并认为proguard会小心并删除未使用的类,因为我有一个配置,大大减小了大小但是通过使用lib我来到了神奇的100kb标记,所以我调查了:我没有使用的类肯定是在生成的dex文件中 - 甚至是全名(不缩写为单字符) - 例如我在中看到了SquareView我没有在App中使用的dex.
问题 令人惊讶的是,我在proguard文档中发现了以下内容:
The library jars themselves always remain unchanged.
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式告诉/欺骗proguard(in)来处理它们吗?我觉得这很奇怪,特别是因为我希望在lib中可以删除比在App本身中更多的东西.
[1] https://github.com/ligi/FAST [2] https://github.com/ligi/AndroidHelper
Android SDK中的Eclipse/Ant/Gradle构建过程使用该选项自动指定您的代码(from bin/classes)及其库(from libs)-injars.这意味着整个应用程序被压缩,优化和混淆(在发布版本中,假设启用了ProGuard).
构建过程仅android.jar使用该选项指定Android运行时-libraryjars.有必要处理代码,但它不应该在已处理的apk中结束,因为它已经存在于设备上.
所以它应该全部自动解决.如果您的配置proguard-project.txt包含类似的行,您仍然可以在已处理的apks中看到整个库的原始名称-keep class org.mylibrary.** { *; }.这种配置通常是考虑反射的保守解决方案.通过一些研究和实验,您通常可以优化配置并获得更好的结果.您可以找出为什么要使用该选项保留类-whyareyoukeeping.
| 归档时间: |
|
| 查看次数: |
10914 次 |
| 最近记录: |