Hi!下午好!欢迎访问互联网
当前位置:主页 > 科技

Testin云测联合ARM解决

时间:2018-08-05 20:43:52| 来源:| 编辑:笔名| 点击:0次

Testin云测联合ARM解决Android 5.0 Art之“祸”

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平台

Testin云测联合ARM解决

,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加密、爱加密、梆梆加密、加密等第三方加密的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继续深化合作,继续为广大移动开发者提供更加完善。