【问题标题】:proguard exception while creating apk in ecllipse in android在 android 的 eclipse 中创建 apk 时出现 proguard 异常
【发布时间】:2015-04-21 15:04:08
【问题描述】:

在我的应用程序中,我想为此启用 proguard,我添加了 proguard.config=proguard.cfg 在 project.properties 中。

我的 proguard.cfg 包含

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-dontwarn javax.management.**
-dontwarn java.lang.management.**
-dontwarn org.apache.log4j.**
-dontwarn org.apache.commons.logging.**
-dontwarn org.slf4j.**
-dontwarn org.json.*
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }

-keepclasseswithmembernames class * {
    native <methods>; }

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet); }

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int); }

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

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String); }

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

我的控制台:

[2013-06-06 18:32:00 - Explosionfilters] Proguard returned with error code 1. See console
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.io.Buffer
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields$Field
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields$Field
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields$Field
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.Address
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.io.Buffer
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.Address
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields$Field
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.HttpRequestAdapter: can't find referenced class org.mortbay.jetty.HttpFields
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.jetty.JettyOAuthConsumer: can't find referenced class org.mortbay.jetty.client.HttpExchange
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.signature.OAuthMessageSigner: can't find referenced class org.apache.commons.codec.binary.Base64
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.signature.OAuthMessageSigner: can't find referenced class org.apache.commons.codec.binary.Base64
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.signature.OAuthMessageSigner: can't find referenced class org.apache.commons.codec.binary.Base64
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.signature.OAuthMessageSigner: can't find referenced class org.apache.commons.codec.binary.Base64
[2013-06-06 18:32:00 - Explosionfilters] Warning: oauth.signpost.signature.OAuthMessageSigner: can't find referenced class org.apache.commons.codec.binary.Base64
[2013-06-06 18:32:00 - Explosionfilters]       You should check if you need to specify additional program jars.
[2013-06-06 18:32:00 - Explosionfilters] Warning: there were 31 unresolved references to classes or interfaces.
[2013-06-06 18:32:00 - Explosionfilters]          You may need to specify additional library jars (using '-libraryjars').
[2013-06-06 18:32:00 - Explosionfilters] java.io.IOException: Please correct the above warnings first.
[2013-06-06 18:32:00 - Explosionfilters]    at proguard.Initializer.execute(Initializer.java:321)
[2013-06-06 18:32:00 - Explosionfilters]    at proguard.ProGuard.initialize(ProGuard.java:211)
[2013-06-06 18:32:00 - Explosionfilters]    at proguard.ProGuard.execute(ProGuard.java:86)
[2013-06-06 18:32:00 - Explosionfilters]    at proguard.ProGuard.main(ProGuard.java:492)
    please help me how to solve this issue

【问题讨论】:

标签: android proguard


【解决方案1】:

您没有在 proguard 中添加 twitter4j 的设置。您应该添加以下设置

-dontwarn javax.management.**
-dontwarn java.lang.management.**
-dontwarn org.apache.log4j.**
-dontwarn org.apache.commons.logging.**
-dontwarn org.slf4j.**
-dontwarn org.json.*

还有这个:

-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }

这将解决您的问题

【讨论】:

  • 嗨,感谢您的回复,我添加了您的代码,但仍然出现错误
  • 警告:oauth.signpost.jetty.HttpRequestAdapter:找不到引用的类 org.mortbay.jetty.client.HttpExchange [2013-06-06 18:32:00 - Explosionfilters] 警告:oauth .signpost.jetty.HttpRequestAdapter:找不到引用的类 org.mortbay.jetty.HttpFields 警告:oauth.signpost.signature.OAuthMessageSigner:找不到引用的类 org.apache.commons.codec.binary.Base64 [2013- 06-06 18:32:00 - Explosionfilters] 警告:oauth.signpost.signature.OAuthMessageSigner:找不到引用的类 org.apache.commons.codec.binary.Base64
  • 我编辑了我的帖子我正在使用signpost-commonshttp4-1.2.1.1.jar,signpost-core-1.2.1.1.jar,signpost-jetty6-1.2.1.1.jartwitter4j-core-2.2.5 .jar,这些是我正在使用的 jar,如何在 proguard.cfg 中添加它们
  • -keep class twitter4j.** { *; } 一样用于所有外部罐子。将 twitter4j 替换为每个 jar 的最顶层包名
【解决方案2】:

我遇到了同样的错误,但我的问题已通过在我的“proguard-android.txt”文件中添加以下行来解决。

-dontwarn com.google.android.gms.**

-dontwarn org.mortbay.**
-dontwarn org.slf4j.**
-dontwarn org.apache.log4j.**
-dontwarn org.apache.commons.logging.**
-dontwarn org.apache.commons.codec.binary.**

-keep class twitter4j.** { *; }

对于 Google play 服务,如警告:com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced class android.content.pm.PackageInstaller

这就是解决方案!希望它也对你有用!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多