【问题标题】:Where can I find documentation for Android build options related to proguard在哪里可以找到与 proguard 相关的 Android 构建选项的文档
【发布时间】: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 构建选项。我不得不尝试找到一个可行的解决方案。如果我能找到一些文档,它会为我节省几个小时。此外,这将有助于验证我的解决方案是否是最佳解决方案。

标签: android build build-process proguard


【解决方案1】:

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

 现在 LOCAL_PROGUARD_ENABLED 选项的含义:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2012-02-27
    相关资源
    最近更新 更多