【问题标题】:Android: proguard is not obfuscating the sourceAndroid:proguard 不会混淆源代码
【发布时间】:2013-01-16 23:02:27
【问题描述】:

我在 project.properties 中启用了 proguard:

proguard.config=proguard.cfg

我的 proguard.cfg 没有禁用混淆。但没有任何东西被混淆。

我使用

运行项目构建

蚂蚁释放。

有铃声响起吗?


-优化通过 5 -dontusemixedcase类名 -dontskipnonpubliclibraryclasses -dontpreverify -详细 -优化 !code/simplification/arithmetic,!field/,!class/merging/

-保持公共类 * 扩展 android.app.Activity -保持公共类 * 扩展 android.app.Application -keep public class * 扩展 android.app.Service -保持公共类 * 扩展 android.content.BroadcastReceiver -保持公共类 * 扩展 android.content.ContentProvider -保持公共类 * 扩展 android.app.backup.BackupAgentHelper -keep public class * 扩展 android.preference.Preference -保持公共类com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * { 本国的 ; }

-keepclasseswithmembers class * { 公共(android.content.Context,android.util.AttributeSet); }

-keepclasseswithmembers class * { 公共(android.content.Context,android.util.AttributeSet,int); }

-keepclassmembers class * extends android.app.Activity { public void *(android.view.View); }

-keepclassmembers 枚举 * { 公共静态 *[] 值(); 公共静态 * valueOf(java.lang.String); }

-keep class * 实现 android.os.Parcelable { public static final android.os.Parcelable$Creator *; }


【问题讨论】:

  • 如何检查是否有任何内容被混淆?你可以在这里发布你的 proguard.cfg 吗?您是否在 ant 输出中看到 proguard 正在处理您的文件?
  • 用 proguard.cfg 编辑了问题。我只是在源代码中抛出一个异常并观察堆栈跟踪。有点愚蠢,但仍然有效。而且我注意到应该混淆的类不是。此外,在构建时,当构建经过“混淆”阶段时,我什么也看不到。

标签: android proguard


【解决方案1】:

您应该确保您的项目已针对您的 Android SDK 进行了配置:

android update project -p MyProjectDirectory

从 Android SDK r20 开始,ProGuard 配置文件分为几个部分,在project.properties 中指定:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

简短的项目特定配置在proguard-project.txt 中定义(不再在 proguard.cfg 中,就像在旧版本的 SDK 中一样)。 SDK 文档在这方面可能并不完全是最新的。

当您运行 ant release 时,您应该会看到来自 ProGuard 的一些日志记录输出。

【讨论】:

    【解决方案2】:

    @Thanks Danail,今天我刚刚克服了这个问题。只是详细说明

    android:debuggable 是否可以调试应用程序,即使在用户模式下在设备上运行时也是如此——如果可以,"true",如果不能,则为“false”。默认值为“false”。

    更多详情您可以访问

    http://www.vogella.com/tutorials/AndroidDebugging/article.html

    【讨论】:

      【解决方案3】:

      这比我想象的要简单得多:我们(在 manifest.xml 文件中)启用了

      android:debuggable="true"
      

      哦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        • 1970-01-01
        相关资源
        最近更新 更多