5

我一直在使用 android 构建系统做很多工作,我遇到了一种情况,即 proguard 正在删除导致 NoClassDefFoundError 的所需类。我可以说没有找到该类,但是我花了一段时间才发现 proguard 弄乱了使用我的代码构建的类。

我终于发现我可以通过添加LOCAL_PROGUARD_ENABLED := disabled到 Android.mk 文件来阻止 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

有谁知道我在哪里可以找到这些构建选项的文档(官方或非官方)?谷歌似乎没有返回任何对我的搜索有用的东西。

4

1 回答 1

9

我也搜索了该信息并偶然发现了这个补丁:

    现在 LOCAL_PROGUARD_ENABLED 选项的含义:

    * 满的:
        使用构建系统的默认配置:
        收缩但没有混淆或优化,
        build/core/proguard.flags 中的全局 proguard 标志
        被应用。
    * 风俗:
        与 "full" 相同,除了没有 aapt 生成的资源相关
        保护标志。
    * 无系统:
        不要使用任何构建系统的默认配置;但
        仍然应用 aapt 生成的 proguard 标志。你是
        负责任何其他标志。
    * 禁用:
        禁用proguard。
    * 混淆:
        与“完整”相同,但启用了混淆。
    * 优化:
        与“完整”相同,但启用了优化。
    * 无值(默认):
        构建系统选择正确的值:“full”,如果它是
        应用程序; “禁用”如果它是一个库。

这是链接: https ://android.googlesource.com/platform/build/+/7311a34%5E!/

于 2015-04-20T19:46:06.090 回答