我正在嘗試配置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無法找到所需的類。***