java.lang.RuntimeException: 无法实例化接收器(未找到类)

4
我们使用一个第三方库来进行广告调解,该库在其清单文件中声明了不同的活动、接收器和服务。但并不是所有这些都会在应用中实际实现。
我已经开始看到我们的应用程序用户遇到以下异常:
java.lang.RuntimeException: Unable to instantiate receiver com.inmobi.commons.core.utilities.uid.ImIdShareBroadCastReceiver: java.lang.ClassNotFoundException: Didn't find class "com.inmobi.commons.core.utilities.uid.ImIdShareBroadCastReceiver" on path: DexPathList
我的问题是 - 如果接收器(或其他在AndroidManifest中定义的组件)不存在,Android是否会尝试实例化它们?
我没有找到任何描述这种特定场景的文档。

你找到解决方案了吗? - Oli
@Oli,你能分享一下你的解决方案吗?我也遇到了这个问题。 - Ranjithkumar
我也遇到了这个崩溃问题,我使用的是Appodeal广告库。 - user4806728
1个回答

0

1) 要解决这个问题,您需要确保inmobi.jar和picasso.jar(inmobi所需)位于libs文件夹中。默认情况下,picasso位于可选文件夹中。您必须将其从可选项移动到libs中。

此外,对于picasso,您需要将以下内容添加到build.gradle文件中:compile 'com.squareup.picasso:picasso:2.5.2'。

如果您使用proguard文件,则需要为inmobi添加以下内容:

-keep class com.inmobi.** { *; }
-dontwarn com.inmobi.**
-dontwarn com.squareup.picasso.**
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.picasso.**
-dontwarn com.squareup.okhttp.**
-keep class com.moat.** {*;}
-dontwarn com.moat.**

2) 如果您未使用上述指定的构建类型,则需要启用multidex。然后您必须使用nodex build。Android Native的最新nodex版本在此处

您可以在此处找到文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接