在哪里可以找到与 proguard 相关的 Android 构建选项的文档
Posted
技术标签:
【中文标题】在哪里可以找到与 proguard 相关的 Android 构建选项的文档【英文标题】:Where can I find documentation for Android build options related to proguard 【发布时间】:2013-08-06 19:52:05 【问题描述】:我一直在使用 android 构建系统进行大量工作,但遇到了一种情况,即 proguard 正在删除导致 NoClassDefFoundError 的所需类。我可以说没有找到该类,但是我花了一段时间才发现 proguard 弄乱了使用我的代码构建的类。
我终于发现可以通过在Android.mk文件中添加LOCAL_PROGUARD_ENABLED := disabled
来阻止proguard运行。
我之所以能够做到这一点,是因为我碰巧遇到了其他人的 Android.mk 文件,该文件也做了同样的事情。
我无法找到以下任何文档
LOCAL_PROGUARD_FLAGS
LOCAL_PROGUARD_ENABLED
LOCAL_PROGUARD_FLAG_FILES
据我所知,LOCAL_PROGUARD_FLAGS
的典型用法是识别 proguard 配置文件的位置,如下所示:
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
问题是我无法弄清楚它与使用如下的LOCAL_PROGUARD_FLAG_FILES
有何不同:
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
LOCAL_PROGUARD_ENABLED
可用于禁用 proguard,但除了 disabled
选项之外,我不知道此选项还可以使用什么。
LOCAL_PROGUARD_ENABLED := disabled
有谁知道我在哪里可以找到这些构建选项的文档(官方或非官方)? Google 似乎没有返回任何对我的搜索有用的信息。
【问题讨论】:
您阅读过 Android 开发网站上的 Proguard 文档吗? developer.android.com/tools/help/proguard.html 特别是配置 Proguard 和使用-keep
以防止它剥离某些类?
@Squonk 是的,我已阅读您链接到的文档。不幸的是,这些文件已经过时了。随着 ADT 17 的发布,使用 proguard 的方式发生了变化。见:tools.android.com/recent/proguardimprovements。这些文档都没有提到我最初询问的三个 Android.mk 构建选项。我不得不尝试找到一个可行的解决方案。如果我能找到一些文档,它会为我节省几个小时。此外,这将有助于验证我的解决方案是否是最佳解决方案。
【参考方案1】:
我也搜索了该信息并偶然发现了这个补丁:
现在 LOCAL_PROGUARD_ENABLED 选项的含义: * 满的: 使用构建系统的默认配置: 收缩但没有混淆或优化, build/core/proguard.flags 中的全局 proguard 标志 被应用。 * 风俗: 与 "full" 相同,除了没有 aapt 生成的资源相关 保护标志。 * 无系统: 不要使用任何构建系统的默认配置;但 仍然应用 aapt 生成的 proguard 标志。你是 负责任何其他标志。 * 禁用: 禁用proguard。 * 混淆: 与“完整”相同,但启用了混淆。 * 优化: 与“完整”相同,但启用了优化。 * 无值(默认): 构建系统选择正确的值:“full”,如果它是 应用程序; “禁用”如果它是一个库。
这里是链接: https://android.googlesource.com/platform/build/+/7311a34%5E!/
【讨论】:
以上是关于在哪里可以找到与 proguard 相关的 Android 构建选项的文档的主要内容,如果未能解决你的问题,请参考以下文章
Sun Java Wireless Toolkit 2.5 需要哪个 Proguard 版本
在哪里可以找到 Journal of Optimization Theory and Applications 的参考书目样式文件?
SQL 查询 - 在哪里可以找到比 a=b AND b=c AND a=c 慢的 a=b AND b=c 等更多优化花絮?