<target name="-debug-obfuscation-check">
<!-- enable proguard even in debug mode -->
<property name="proguard.enabled" value="true"/>
<!-- Secondary dx input (jar files) is empty since all the jar files will be in the obfuscated jar -->
<path id="out.dex.jar.input.ref" />
</target>
6条答案
按热度按时间6yt4nkrj1#
如果您希望简化整个构建过程,您应该切换到gradle和Android Studio IDE。
然后,您可以轻松地将以下内容添加到您的build.gradle文件以运行ProGuard:
这将在您的调试版本上运行ProGuard,配置文件为“proguard-android.txt”,该文件应该放在您的项目的根文件夹中。此外,您的apk是压缩对齐的(如果您不希望发生这种情况,只需删除“zipAlignEnabled true”)。如果您想在您的发布版本中执行相同的操作,只需在“release”下添加这三行。
编辑:自Gradle Android构建工具版本0.14.0起,属性名称已更改(http://tools.android.com/tech-docs/new-build-system):
我已经更新了上面的代码。
lvmkulzt2#
旧答案:
http://developer.android.com/tools/help/proguard.html
ProGuard仅在以发布模式构建应用程序时运行,因此在以调试模式构建应用程序时不必处理模糊代码。
当您在 release 模式下构建应用程序时,无论是通过运行ant release还是通过使用Eclipse中的Export Wizard,构建系统都会自动检查是否设置了
proguard.config
属性。如果设置了,ProGuard会在将所有内容打包到 .apk 文件之前自动处理应用程序的字节码。在调试模式下构建不会调用ProGuard,因为这会使调试更加麻烦。更新日期:2016年3月13日
您需要在您的 build.gradle 文件中将
minifyEnabled
设置为true
。通常,您的pro-guard在 release 模式下运行。还有其他可用选项,如缩减资源。您可以在@http://tools.android.com/tech-docs/new-build-system找到一些有用的信息也来看看吧@
http://developer.android.com/tools/building/configuring-gradle.html
jtjikinw3#
关于自定义Ant构建(根据维克托的回答),向我的build.xml文件添加以下内容对我很有用:
注意,我必须覆盖(实际上是预先设置)out.dex.jar.input.ref;否则,后面运行的dx将尝试合并非分离jar,并抛出DexException:多个dex文件定义Xxx。
jmo0nnb34#
如果您使用Ant构建,则可以实现这一点。请参阅Android custom build using Ant,了解如何使用Ant构建项目。然后,只需在项目的build.xml中覆盖目标“-debug-obfuscation-check”并将proguard.enabled设置为true:
ct2axkht5#
在Android Studio中,您可以在您的Profuard规则文件中使用
-dontobfuscate
选项,调试器将正常工作。我不确定它是否也能与Eclipe一起工作。hi3rlvi26#
如果您使用的是AGP(Android Gradle插件)7.2.0或更新版本,请注意,我们目前还没有解决方案。目前的解决方案是将AGP降级到7.1.3,以便您可以混淆您的调试APK。
https://issuetracker.google.com/issues/242214899?pli=1