我在带有proguard的Android项目中使用了crittercism库。当我编译应用程序时,在控制台中出现以下错误:
警告:crittercism.android.c:在类org.json.JSONArray中找不到引用的方法'org.json.JSONArray put(long)'
我可以添加-dontwarn行来避免此错误,但是crittercism不起作用。我已阅读crittercism文档,以使用以下行配置proguard文件:
-keep public class com.crittercism.**
-keepclassmembers public class com.crittercism.**{ *; }
但是我仍然有那个错误。
最佳答案
如果存在类,则Proguard错误会出现,该类同时存在于android框架和外部库文件中(在您的情况下为crittercism lib文件)。这会导致模棱两可。
您需要指定要保留在proguard中的确切类(例如-keep公共类com.crittercism.abcd),而不是(-keep公共类com.crittercism。*)。确定导致冲突的确切类别。
很明显,org.json.JSONArray存在于Android框架中,也可能存在于crittercism api中。
识别org.jason.JSONArray在crittercism库中的位置,并包含在proguard文件中,例如
-保持公共类com.crittercism ... JSONArray。