2015-07-10 195 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.** { *; }