在哪里可以找到与 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 等更多优化花絮?

我在哪里可以找到免费的天气图标? [关闭]

Android Studio中的proguard映射文件在哪里[重复]

在 android 中在哪里准确添加 Okhttp 和改造 proguard 规则? [复制]