【发布时间】: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