【问题标题】:Android Google Analytics Unable to instantiate receiver com.google.analytics.tracking.android.CampaignTrackingReceiverAndroid Google Analytics 无法实例化接收器 com.google.analytics.tracking.android.CampaignTrackingReceiver
【发布时间】:2017-02-08 10:11:22
【问题描述】:

我正在使用 Google Analytics (29.0.0.2) 开发 Xamarin,我的最低 Android 版本是 4.2Target Android 版本 5.0 目标框架为 5.0

当我在 Debug 中以及在 Dropbox 和 Airdroid 上分发我的发布应用程序时一切正常,但是当我将我的应用程序放在 Google Play Console Beta 上时,在第一次安装时,Google Analytics 崩溃并出现以下错误:

java.lang.RuntimeException: Unable to instantiate receiver com.google.analytics.tracking.android.CampaignTrackingReceiver: java.lang.ClassNotFoundException: Didn't find class "com.google.analytics.tracking.android.CampaignTrackingReceiver" on path: DexPathList[[zip file "/data/app/it.riciclario.app-1/base.apk"],nativeLibraryDirectories=[/data/app/it.riciclario.app-1/lib/arm, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2587)
    at android.app.ActivityThread.access$1700(ActivityThread.java:147)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1358)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5264)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.analytics.tracking.android.CampaignTrackingReceiver" on path: DexPathList[[zip file "/data/app/it.riciclario.app-1/base.apk"],nativeLibraryDirectories=[/data/app/it.riciclario.app-1/lib/arm, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    at android.app.ActivityThread.handleReceiver(ActivityThread.java:2582)
    ... 9 more
    Suppressed: java.lang.ClassNotFoundException: com.google.analytics.tracking.android.CampaignTrackingReceiver
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
        ... 11 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

我不明白问题出在哪里,我不知道它到底附加了什么。当应用程序第一次崩溃时,第二次一切正常。我有这个问题ONLY ON GOOGLE PLAY STORE没有调试,没有Dropbox版本或Airdroid安装。没有崩溃,我的Android Monitor Tool上没有错误。

有什么想法吗?非常感谢。

【问题讨论】:

标签: xamarin xamarin.android analytics


【解决方案1】:

原因:java.lang.ClassNotFoundException:找不到类“com.google.analytics.tracking.android.CampaignTrackingReceiver”

从 Play 商店安装应用时,将调用 CampaignTrackingReceiver Intent(带有 com.android.vending.INSTALL_REFERRER)。

注意:CampaignTrackingReceiver 有三个不同的“类”位置,具体取决于您使用的版本 (v2/v3/v4)。 (由于早期版本中存在各种问题,我现在使用 v4+)

  • 您的清单是否正确?如果您可以在没有安装引用跟踪的情况下生存,请从您的应用清单中删除接收器。

  • 您是否启用了 Proguard 并且未将 com.google.analytics.* 列入白名单,因此正在剥离类

  • 您是否安装了其他 Google Play 服务?游戏、位置等。因为其中一些与 Analytics 之间存在命名冲突。 V2 和 V3 都存在与此相关的问题以及不同的包。它最终在 V4 中得到纠正。知道 V2 和 V3 的修复是手动编辑 Google .jars(Google 搜索是您的朋友...)

【讨论】:

  • 谢谢,我刚刚启用了 ProGuard,但应用程序在启动时仍然崩溃。我正在使用 Google Play 服务地图和 Google Play 服务分析。我无法删除 INSTALL_REFERRER。所以我认为 V2 和 V3 存在命名问题。有什么建议吗?我的清单已正确配置为 Lib 中的示例。谢谢。
  • 我有同样的问题,尝试添加 proguard 规则并没有帮助。关于清单文件,我的清单集中没有 CampaignTrackingReceiver 的接收器。所以这应该不是问题。
  • @Shaegorath 针对您的设置和问题提出一个新问题。
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多