这是我的配置:
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
...
但是,如果我在project.properties中注释掉proguard.config = ...行,我可以成功导出而不会出现任何错误 - 但代码不会被混淆。
我在这里做错了什么?
答案 0 :(得分:0)
导出时看到警告,请确保构建路径中的所有支持库都可用。 你可以进一步抑制一些警告并侥幸逃脱 - 见下文。
我的支持罐也被混淆了(不确定这是否正常)导致应用程序在运行时失败,所以我必须明确地防止它们的混淆 - 见下文。
<强> 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.** { *; }