集成Scoreloop后,导出时出现以下错误。在那之前还好。
Proguard returned with error code 1. See console
Note: there were 211 duplicate class definitions.
You should check if you need to specify additional program jars.
Exception in thread "main" java.lang.StackOverflowError
at proguard.obfuscate.ClassObfuscator.visitEnclosingMethodAttribute(ClassObfuscator.java:182)
.........
.............
可能还有210多个错误,我在这里没有给出。我通过以下方式在proguard-project.txt中提到了Scoreloop:
#############
# Scoreloop #
#############
-dontwarn com.scoreloop.client.android.core.paymentprovider.**
-keep class com.scoreloop.client.android.core.paymentprovider.fortumo.FortumoPaymentProviderController {*;}
-keep class com.scoreloop.client.android.core.paymentprovider.fortumo.FortumoPaymentProvider {*;}
-keep class com.scoreloop.client.android.core.paymentprovider.paypalx.PayPalXPaymentProviderController {*;}
-dontwarn com.scoreloop.client.android.core.ui.WebViewDialog
-keep class com.scoreloop.client.android.core.ui.WebViewDialog {*;}
-keep class com.facebook.android.** {*;}
如何解决这些错误?
如果您之前成功签名,则与我经历的情况相同。
删除项目中的proguard文件夹后,我尝试再次对apk签名。
成功!
我自己解决了这个问题。只是想为什么我不一起调用所有的scoreloop类,看看会发生什么?而且有效。在行之后:
-dontwarn com.scoreloop.client.android.core.paymentprovider.**
我添加了:
-keep class com.scoreloop.** {*;}
这解决了。
使用-dontnote代替dontwarn。
https://www.guardsquare.com/en/products/proguard/manual/usage