在APP中需要使用Unity,而Unity呢又不得不以android:process方式去定义启动,同时APP中又使用了阿里巴巴的SDK和极光推送的SDK。这些都需要在Application中进行初始化,殊不知某些SDK必须是当前APP主进程进行初始化运行,而放到其它的进程(android:process)中运行就会出现错误。然而Unity属于不属于Android范畴的,总之启动方式很奇怪,运行也很奇怪。这就造成与很多东西不兼容。最终的解决办法如下:
if (this.getPackageName().equals(ArshowContextUtil.getCurProcessName(this))) {
//本进程的初始化操作,比如我们使用的阿里巴巴SDK、极光推送SDK等等
} else {
//其它进程需要的初始化
}
注:ArshowContextUtil.getCurProcessName(this)是写的工具类获取当前进程名,说白了就是不同进程的初始化要区别对待,否则出现上述问题。这里最重要的就是android:process,在某些时候能解决特定的问题,但使用不当也会出现问题,而且问题还很难找。如果想彻底弄清楚android:process还得自己去查询相关资料才行。