【问题标题】:Error obfuscating Android code混淆 Android 代码时出错
【发布时间】:2012-05-25 03:49:19
【问题描述】:

我在混淆 Android 代码时遇到问题。我使用 Proguard 4.7 版和 Eclipse 作为我的 IDE。我将我的proguard.cfg 更改为:

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * implements android.view.View.OnTouchListener
-keep class * extends android.view.View { 
  public <init>(android.content.Context); 
  public <init>(android.content.Context, android.util.AttributeSet); 
  public <init>(android.content.Context, android.util.AttributeSet, int); 
  public void set*(...); 
}
-keep class * extends android.preference.Preference { 
  public <init>(android.content.Context); 
  public <init>(android.content.Context, android.util.AttributeSet); 
  public <init>(android.content.Context, android.util.AttributeSet, int); 
  public void set*(...); 
}    
# LVL License binder class
-keep class com.android.vending.licensing.ILicensingService    
# This is necessary for LVL among others. According to proguard doc java accesses enum fields by introspection.
-keepclassmembers enum * {
  public static **[] values();
  public static ** valueOf(java.lang.String);
}
#Optimization settings
-dontoptimize

当我编译我的项目时,我得到一个错误,我无法解决它。这是错误:

Unable to execute dex: Multiple dex files define Lchangebackground/app/OnSwipeListener
Conversion to Dalvik Format failed: Unable to execute dex: Multiple dex files define Lchangebackground/app/OnSwipeListener

【问题讨论】:

    标签: android obfuscation proguard


    【解决方案1】:

    这通常意味着您两次包含一个库,或者您的类路径存在其他问题。将所有 jar 文件放在 libs/ 下并清理您的项目。检查同一库的不同版本,并通过引用的库项目包括库。

    【讨论】:

    • 如果你有两个文件 library-v1.jar 和 library-v2.jar 包括(直接或间接),你会得到这个错误。检查您的项目依赖项。
    • 包含android.jar 和proguard.jar 吗?还有一件事,如果我使用 GUI proguard 进行混淆可以吗?
    • Re: android.jar 和 proguard.jar -- 不,它们永远不会包含在您的 APK 中。您可以使用任何您喜欢的方法,只需使用适合 Android 的配置文件(例如,不会破坏活动和服务类名称的配置文件)。但是,根据您的项目结构,您可能需要调整参数以包含/排除 jar。 Eclipse 会为您做到这一点。
    • 你能给我链接或步骤如何使用你之前提到的配置文件混淆android代码(android.pro不是吗?)。
    • “配置文件”是指 proguard.cfg。我没有链接,但最好的办法是修复/清理 Eclipse 项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2011-08-05
    相关资源
    最近更新 更多