Google 只有在我签署我的 APK 后,分析才会导致 Cordova 应用出错

Google Analytics causes error on Cordova app only after I sign my APK

我正在为我的 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)

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

$ionicPlatform.ready(function() {

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

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