5

我正在尝试配置 Proguard,但无法使其正常工作。

这是错误: 在此处输入图像描述

我试过这样的事情:

-keep class com.android.auth.TwitterHandle.** { *; }
-keep class oauth.** { *; }

没有任何运气。

无论如何,我真的不认为忽略是答案。因为这可能意味着有些东西坏了。

有小费吗?

谢谢!

4

5 回答 5

8

警告表明 AndroidQuery 库依赖于 OAuth 库。显然,您在项目中使用了前一个库,但缺少后一个库。您可以添加缺少的库,但如果您的应用程序在调试模式下没有它也可以正常工作,您可以告诉 ProGuard 忽略缺少的依赖项。在这种情况下:

-dontwarn com.androidquery.auth.**

或者,达到同样的效果:

-dontwarn oauth.signpost.**

请参阅 ProGuard 手册 > 故障排除 >警告:找不到引用的类

(我是 ProGuard 的开发者)

于 2014-02-22T23:02:54.850 回答
3

将这些行添加到您的 proguard 文件中。

-dontwarn oauth.**
-dontwarn com.android.auth.TwitterHandle.**

-keep class oauth.** { *; }
-keep class com.android.auth.TwitterHandle.** { *; }

编辑:

无论如何,我真的不认为忽略是答案。因为这可能意味着有些东西坏了。

如果您想使用 Proguard 并且遇到一些错误,例如找不到类,那么您必须禁用/忽略它们的混淆。因为 Proguard 在混淆时会重命名类的名称、字段和方法。如果对这些类使用反射,这将成为一个大问题。所以你必须说 proguard 忽略(而不是混淆)一些类来防止这个问题。

于 2014-02-21T09:00:18.910 回答
1

请尝试这篇文章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 ----------
于 2014-02-20T19:27:47.023 回答
1

错误的原因一定是您可能正在使用外部 jar 文件(在 libs 文件夹中)。

如果是这种情况,在行之前添加以下行-keep class ...应该可以解决您的问题。

-libraryjars libs/<jar_filename>

于 2014-02-21T08:54:13.107 回答
1

如果您不熟悉 proguard cmd 工具,那么您可以尝试位于tools/proguard/lib/proguardgui您的 android SDK 文件夹中的 proguard gui。

打开 proguardgui 并加载您的配置文件。

然后在输入/输出部分添加您的输入和输出 jar 以及添加您在项目中使用的 android lib。 添加你的库 *****您的主要问题是您没有添加项目中使用的库(Aquery.jar 和其他)jar,因此 proguard 找不到所需的类。***

于 2014-02-24T04:36:24.497 回答