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 提及这种可能性。
我正在为我的 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 提及这种可能性。