在項目中集成友盟統計,本來以爲挺簡單的,結果剛接入就遇到問題了。在Application中進行了初始化
//友盟
StatisticsUmeng.init(this.getApplicationContext(), mChannel, AccountConfig.UMENG_APP_KEY);
同時,定義了以下兩個方法:
public static void onResume(Context context) {
if (context != null) {
try {
MobclickAgent.onResume(context);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void onPause(Context context) {
if (context != null) {
try {
MobclickAgent.onPause(context);
} catch (Exception e) {
e.printStackTrace();
}
}
}
然後在BaseActivity中調用這兩個方法,結果啓動app就掛了。(app一直停在啓動頁,不會正常跳轉了。再把友盟相關代碼註釋掉,又恢復正常)。
然後就去研究友盟:
在每個Activity的onResume方法中調用 MobclickAgent.onResume(Context), 傳入的參數爲當前context的引用,這個方法將會自動地從AndroidManifest.xml文件裏讀取Appkey。(注:請不要將全局的application context傳入)
但是,如果使用了新版本,新版本默認是AUTO模式,不需要再手動調用onResume 和 onPause 埋點。
排除是onResume 和 onPause的問題。
注:Android 4.0及以上版本支持Activity生命週期的自動監控(通過註冊自定義callback函數)。在Android 4.0以上設備中,推薦使用系統自動監控機制進行頁面及基礎指標自動埋點(AUTO模式下SDK會自動調用MobclickAgent.onResume/MobclickAgent.onPause接口,用戶無須手動調用這兩個接口)。
如果需要統計 Android 4.0 以下版本設備統計數據,則必須選擇手動模式(MANUAL),對宿主App中所有Activity都手動調用MobclickAgent.onResume/MobclickAgent.onPause手動埋點。
- 在AUTO或MANUAL模式下,如果需要對非Activity頁面,如Fragment、自定義View等非標準頁面進行統計。需要通過MobclickAgent.onPageStart/MobclickAgent.onPageEnd接口在合適的時機進行頁面統計。
- 一次成對的 onPageStart -> onPageEnd 調用,對應一次非Activity頁面(如:Fragment)生命週期統計。
好吧,去友盟平臺再看,發現是因爲Appkey替換錯了。那就換正確嘍,,,
編譯,通過???
然而,依然報錯
MobclickAgent: getAppkey failed. the applicationinfo is null!
鬱悶之極。。。
關鍵是除了這個報錯信息,看不到其他信息了。
還有什麼可能呢?會不會因爲依賴的版本呢?那就試試吧
最開始使用的是:
//友盟統計
umsdk_analytics : "com.umeng.umsdk:analytics:8.0.2",
umsdk_common : "com.umeng.umsdk:common:1.5.4",
umsdk_utdid : "com.umeng.umsdk:utdid:1.1.5.3",
改成友盟平臺示例所用的依賴
//友盟統計
umsdk_analytics : "com.umeng.umsdk:analytics:8.0.0",
umsdk_common : "com.umeng.umsdk:common:2.0.0",
umsdk_utdid : "com.umeng.umsdk:utdid:1.1.5.3",
編譯,通過!!!
問題終於得到解決。