Google Android似乎与“甜点”结下了不解之缘。从Android 1.5的“纸杯蛋糕”到现在的 Android 5.0 Lollipop“棒棒糖”,一路走来都飘着“甜”味,但是v5.0更新之后似乎并不是那么甜了。 由于全新的UI设计规范,以及Android从v4.4到v5.0升级后最大的修改是虚拟机从dalvik切换到了Art、从32Bit到64Bit,为开发者带来相当大的麻烦,尤其是在兼容性问题上问题非常严重。 目前各大Top应用与游戏在Android 5.0上出现了很多问题,其中以地址溢出、闪退与显示异常为主要问题: “微信”等App代码maxlen传入有问题,导致在32位地址溢出; “天天飞机大战”、“天天酷跑”等游戏出现闪退问题 “欢乐斗地主”出现一帧显示异常问题 “雷霆战机”出现卡顿问题 “聚美优品”出现闪屏和显示异常的问题,主要是因为blending在4.4和5.0的差异 “3D狂野飙车”出现闪退问题,主要是应用错误使用GL函数导致。 通过连续半年对应用宝、百度手机助手、豌豆荚、安卓市场、安智市场、应用汇、机锋市场、拇指玩(大游戏)和华为应用市场TOP50手机游戏的跟踪发现,虽然各个应用市场的TOP 50游戏列表会动态更新,但是通过率增长比较慢。v4.4上游戏的通过率能达到94%,但是在5.0比较差,32bit的5.0较64bit的5.0好,已上市部分机器的测试结果如下: 测试终端:HTC D826w(Q8939平台,64位Android 5.0) 测试终端:MOTO X(骁龙801平台,32位Android 5.0) 目前开发者在5.0设备上主面临以下7大类型的错误: 1. art中的dlopen报错,豌豆荚等市场有约50%的游戏与此相关。 2. Android5.0增强了JNI的检查,导致应用abort。如果把Google check JNI的操作回退,游戏就可以运行,需要游戏检查JNI相关的适配。有部分是游戏的原因,有部分是游戏引擎不适配导致的。 3. art中JNI的取址异常 4. 应用直接报错,这类问题的判断,还需要根据游戏引擎的不同,通过Testin 崩溃分析进行监测分析,才能判断出具体的原因。 5. 加壳,有些应用使用了360加密、爱加密、梆梆加密、libchaosvmp.so加密等第三方加密的so,导致应用的某些类找不到。 6. 应用的jar文件有误,Android 4.4使用的虚拟机为dalvik,使用的是dex2odex,但在art上是dex2oat,就导致应用之前生成的一些jar文件在art上运行失败。 7. 安装冲突 如果两个apk定义了相同的permission,如果签名不同,就会提示安装冲突。自从google开放了Android L的下载后,很多人为了尝鲜,刷入了这个并不完善的新系统.毕竟是预览版,难免存在各种各样的问题,如保留数据刷入导致通知栏无法下拉,按home键不能回到桌面,sdcard无法读取等等.但是相比程序安装来说这都不是问题,因为前面的可以通过wipe解决,一劳永逸,而后者却会一直存在。刷了Android L之后,有一部分软件无法正常安装,多表现为同一个开发则者开发的软件只能安装一个或者一部分,并且基本上安装的时候都可以在底部看到了非android自带的权限。 通过实验,发现这些apk有一个或多个相同的自定义权限,但是签名不一致,因而无法正常安装,并不是什么防止相互唤醒之类的,这应该是Android L的新规则。碰到这类无法安装问题的解决办法有两个:1)(无需root)将所有冲突的apk用相同的签名文件重新签名即可正常安装;2)(需要root,这应该是目前大多数人在用的办法)用rootexplorer或es文件管理器等将apk文件复制到/data/app/目录下,然后重启。 Android 5.0开发者重点适配设备 目前,在Testin与ARM的共同努力下,开发者已经可以在开发过程中避免Android 5.0所带来的诸多兼容性问题。接下来,Testin将与ARM继续深化合作,继续为广大移动开发者提供更加完善。 测试地址:http://activity.testin.cn/android5/ |