2015-07-10 189 views
1

這裏是我的配置:
安卓:Proguard的混淆沒有代碼,引發錯誤

project.properties

proguard.config=${sdk.dir}/tools/proguard/proguard-project.txt 

# Project target. 
target=Google Inc.:Google APIs:22 
android.library=false 
android.library.reference.1=../../libs/facebook/facebook-android-sdk-4.2.0/facebook 

proguard的-project.txt:這是空文件,即是一切評論它。

該項目通常編譯正確,沒有錯誤。

當我嘗試將APK我看到許多錯誤導出控制檯(和出口失敗):

Proguard returned with error code 1. See console 
    Warning: com.facebook.applinks.FacebookAppLinkResolver: can't find superclass or interface bolts.AppLinkResolver 
    Warning: com.facebook.applinks.FacebookAppLinkResolver$1: can't find superclass or interface bolts.Continuation 
    Warning: org.apache.commons.beanutils.BeanMap$2: can't find superclass or interface org.apache.commons.collections.Transformer 
    Warning: org.apache.commons.beanutils.BeanMap$3: can't find superclass or interface org.apache.commons.collections.Transformer 
... 

但是,如果我註釋掉proguard.config = ...項目線。屬性,我能夠成功導出沒有任何錯誤 - 但代碼不混淆。

我在這裏做錯了什麼?

+1

看看這有助於:http://stackoverflow.com/questions/13208784/proguard-returned- with-error-code-1-see-console – Kay

+0

Kay>是的,即使警告被取消並導出成功,但APK本身不起作用 - 當應用程序在Android d上啓動時,我看到ClassNotFoundExceptions evice。 – Jasper

+0

並與minifyenabled錯誤它運行正常? – Kay

回答

0

當您在導出時看到警告時,請確保所有支持庫在構建路徑中均可用。 你可以進一步抑制一些警告並逃脫 - 參見下文。

我的支持jar也被混淆(不知道這是否正常)導致應用程序在運行時失敗,所以我不得不顯式地阻止它們的混淆 - 請參見下文。

project.properties

proguard.config=/myapp/proguard-project.txt 
target=Google Inc.:Google APIs:22 
android.library=false 
android.library.reference.1=../../pathToLibrary 

proguard-project.properties

#To prevent a warning message: 
-dontwarn org.ietf.jgss.** 

#To prevent supporting jars from getting obfuscated you would need something like: 
-keep class javax.** { *; } 
-keep class org.** { *; } 
-keep class android.** { *; }