我正在尝试配置Proguard,但我无法设法让它工作。运行带有AQuery库的ProGuard
这是错误:
我已经试过了诸如:
-keep class com.android.auth.TwitterHandle.** { *; }
-keep class oauth.** { *; }
没有任何的运气。
无论如何,我真的不认为忽略就是答案。因为这可能意味着某些事情被打破了
任何提示?
谢谢!
我正在尝试配置Proguard,但我无法设法让它工作。运行带有AQuery库的ProGuard
这是错误:
我已经试过了诸如:
-keep class com.android.auth.TwitterHandle.** { *; }
-keep class oauth.** { *; }
没有任何的运气。
无论如何,我真的不认为忽略就是答案。因为这可能意味着某些事情被打破了
任何提示?
谢谢!
警告表明AndroidQuery库依赖于OAuth库。显然,你正在项目中使用前一个库,但后一个库缺失。您可以添加缺少的库,但如果您的应用程序在调试模式下没有它,那么您可以告诉ProGuard忽略缺失的依赖项。在这种情况下:
-dontwarn com.androidquery.auth.**
,或者以同样的效果:
-dontwarn oauth.signpost.**
参见ProGuard的手册>故障排除>Warning: can't find referenced class
(我的ProGuard的显影剂)
请试试这个职位https://stackoverflow.com/a/15477898/1665964
插入到的ProGuard跳过混淆你的库,罐,类和子类这个例子
-optimizationpasses 5
-dump class_files.txt
-printseeds seeds.txt
-printusage unused.txt
-printmapping mapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-allowaccessmodification
-repackageclasses ''
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.MapActivity
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-libraryjars libs/commons-io-2.2.jar
-libraryjars libs/gson-2.2.2.jar
-keep public class org.apache.commons.io.**
-keep public class com.google.gson.**
-keep public class com.google.gson.** {public private protected *;}
##---------------Begin: proguard configuration for Gson ----------
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.mypackage.ActivityMonitor.ClassMultiPoints.** { *; }
-keep public class com.mypackage.ActivityMonitor$ClassMultiPoints { public protected *; }
-keep public class com.mypackage.ActivityMonitor$ClassMultiPoints$ClassPoints { public protected *; }
-keep public class com.mypackage.ActivityMonitor$ClassMultiPoints$ClassPoints$ClassPoint { public protected *; }
##---------------End: proguard configuration for Gson ----------
原因的错误必须是你可能会使用外部jar文件(在libs文件夹中)。
如果是这种情况,在-keep class ...
行之前添加以下行应解决您的问题。
-libraryjars libs/<jar_filename>
这些行添加到您的ProGuard文件。
-dontwarn oauth.**
-dontwarn com.android.auth.TwitterHandle.**
-keep class oauth.** { *; }
-keep class com.android.auth.TwitterHandle.** { *; }
编辑:
Anyways, I don't really think ignoring is the answer. Because that might mean something is broken.
如果你想使用Proguard的和你有一些错误,如找不到类,则必须禁用/忽略它们混淆。因为Proguard在混淆时重命名类的名称,字段和方法。如果对这些类使用反射,这将成为一个大问题。所以你必须说proguard忽略(不混淆)一些类来防止这个问题。
如果你不熟悉proguard cmd工具,那么你可以试试你的android SDK文件夹中的tools/proguard/lib/proguardgui
的proguard gui。
打开proguardgui并加载您的配置文件。
然后在输入/输出部分添加您的输入和输出jar以及添加您的项目中使用的Android库。 *****你的主要问题是,你还没有添加你的库(Aquery.jar和其他)在你的项目中使用的jar,以便proguard无法找到所需的类。***