【问题标题】:Google Analytics causes error on Cordova app only after I sign my APK仅在我签署我的 APK 后,Google Analytics 才会在 Cordova 应用程序上导致错误
【发布时间】:2015-05-22 12:44:15
【问题描述】:

我在 Ionic/Cordova 应用程序中使用 google-analytics-plugin。当我处于调试模式时,一切正常,使用以下代码:

$ionicPlatform.ready(function() {

    if (typeof analytics !== "undefined") {
        analytics.startTrackerWithId("UA-x-x");
    } else {
        console.log("Google Analytics Unavailable");
    }
});

无论哪个模板(页面)需要跟踪,我都将它添加到它的控制器中:

analytics.trackView('my-page');

但是在我使用我的密钥库文件签署我的应用程序然后安装 apk 后,该应用程序卡在 index.html 页面上,即错误在于任何运行分析的模板。我检查了logcat,发现了这个:

D/CordovaLog(29315): file:///android_asset/www/lib/ionic/js/ionic.bundle.js: Line 19387 : ReferenceError: analytics is not defined
D/CordovaLog(29315):     at new <anonymous> (file:///android_asset/www/js/controllers.js:224:5)
D/CordovaLog(29315):     at invoke (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:11994:17)
D/CordovaLog(29315):     at Object.instantiate (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:12002:27)
D/CordovaLog(29315):     at file:///android_asset/www/lib/ionic/js/ionic.bundle.js:16255:28
D/CordovaLog(29315):     at self.appendViewElement (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:47320:24)
D/CordovaLog(29315):     at Object.switcher.render (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:45864:41)
D/CordovaLog(29315):     at Object.switcher.init (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:45784:20)
D/CordovaLog(29315):     at self.render (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:47225:14)
D/CordovaLog(29315):     at self.register (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:47181:10)
D/CordovaLog(29315):     at updateView (file:///android_asset/www/lib/ionic/js/ionic.bundle.js:50834:23)

【问题讨论】:

  • 错误是“未定义分析”。您可以在平台/android 中检查您的插件文件夹,这个 google-analytics 是否可用?由于某种原因,您的插件对您的应用不可见。
  • 是的,它可用。而且,如果您错过了它,当 apk 未签名时,该插件确实可以工作。
  • 是的,这很奇怪。日志中在此之前是否有任何错误。此错误意味着插件不是“可见的”。因为正如您所说,插件在那里,所以加载cordova上下文时一定有一些错误,可能或在此之前导致插件不可用。重新加载页面时,Web 浏览器控制台中是否有任何内容?
  • 在网络浏览器上显示“Google Analytics Unavailable”,这很好,因为它无法在浏览器上运行。不,没有任何与 Cordova 相关的错误(我正在使用 adb logcat CordovaLog:D *:S 过滤它们)。如果您知道这不是阅读日志的正确方式,请告诉我。
  • 当我说要在浏览器中调试时,我想在设备上运行应用程序,但要在浏览器上调试。请查看此链接developer.chrome.com/devtools/docs/remote-debugging

标签: android cordova google-analytics cordova-plugins


【解决方案1】:

由于问题是在奇怪的情况下发生的,因此解决方案必须更加奇怪。我在 $ionicPlatform.ready 函数中去掉了 undefined 周围的双引号,它起作用了。所以现在代码看起来像:

$ionicPlatform.ready(function() {

    if (typeof analytics !== undefined) {
        analytics.startTrackerWithId("UA-x-x");
    } else {
        console.log("Google Analytics Unavailable");
    }
});

感谢 Nic Raboy 提及这种可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2015-01-13
    • 2011-03-07
    • 1970-01-01
    • 2022-10-15
    • 2019-12-06
    • 2020-11-29
    相关资源
    最近更新 更多