在项目中集成友盟统计,本来以为挺简单的,结果刚接入就遇到问题了。在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",
编译,通过!!!
问题终于得到解决。