Android:Proguard正在弄乱我

时间:2017-01-30 01:27:25

标签: android proguard

我来到这里是因为我花了好几个小时用proguard修复我的问题。

我可以生成我的debug-apk而没有任何错误,而对于proguard,它有很多错误。

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

现在使用这些设置,我收到以下错误: (proguard-rules.pro =空)

  

警告:com.squareup.picasso.OkHttpDownloader:无法找到引用   class com.squareup.okhttp.OkHttpClient

所以我把这一行添加到我的proguard-rules.pro :(根据这个回答:https://stackoverflow.com/a/24765921/6510329

-dontwarn com.squareup.picasso.**

现在我遇到以下错误:

Warning:Exception while processing task java.io.IOException: Can't write
 [C:\Users\lexha\Desktop\Spaarkaart5\app\build\intermediates\transforms\proguard\release\jars\3\1f\main.jar] 
(Can't read [C:\Users\[username]\.gradle\caches\modules-2\files-2.1\com.squareup.picasso\picasso\2.5.2\7446d06ec8d4f7ffcc53f1da37c95f200dcb9387\picasso-2.5.2.jar(;;;;;;**.class)] 
(Duplicate zip entry [com/a/a/a$a.class == picasso-2.5.2.jar:com/squareup/picasso/Action$RequestWeakReference.class]))

放置picasso.jar的唯一地方是我的root \ app \ libs

所以我将这行添加到build.gradle中,因为我知道这是唯一的地方吗?

-injars libs\picasso-2.5.2.jar(!META-INF/MANIFEST.MF)

这给了我以下错误:

Warning:Exception while processing task java.io.IOException: Can't write [C:\Users\lexha\Desktop\Spaarkaart5\app\build\intermediates\transforms\proguard\release\jars\3\1f\main.jar]
 (Can't read [C:\Users\lexha\.gradle\caches\modules-2\files-2.1\com.squareup.picasso\picasso\2.5.2\7446d06ec8d4f7ffcc53f1da37c95f200dcb9387\picasso-2.5.2.jar(;;;;;;**.class)]
 (Duplicate zip entry [com/a/a/a$a.class == picasso-2.5.2.jar:com/squareup/picasso/Action$RequestWeakReference.class]))

这是我之前收到的错误。现在我真的很困惑,而且我现在还不知道该怎么做。

任何人都可以帮助我吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

尝试将此添加到您的proguard

-useuniqueclassmembernames

#########--------Android Support--------#########
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-dontwarn android.support.**

#########--------Picasso Setting--------#########    
-keepattributes SourceFile,LineNumberTable
-keep class com.parse.*{ *; }
-dontwarn com.parse.**
-dontwarn com.squareup.picasso.**
-keepclasseswithmembernames class * {
    native <methods>;
}  

答案 1 :(得分:0)

这是因为您的应用中存在 duplicate picasso库依赖项。删除root\app\libs中的jar并使用以下命令保留或添加依赖项中的picasso库:

dependencies {
  ..
  compile 'com.squareup.picasso:picasso:2.5.2'
  ..
}