8. Performance Compatibility
符合兼容性规范的设备不仅要保证APP可以正确的运行在设备上,效率和用户体验也要过得去。因此,设备必须满足下面规定的关键效率参数。
图表略。。。
Security Model Compatibility
设备必须实现一个与SDK文档的Securityand
Permissions
部分一致的安全模型,并且能安装一个没有任何附加权限和第三方认证的自签名APP。同时,还必须要满足下面的要求。
9.1 Permission
设备必须支持SDK文档中的权限模型中规定的所有权限,并且不能删除、修改或忽略任何权限。定制设备可以添加新权限,但不能放在android.*这个命名空间中。
9.2 UID and Process Isolation
设备必须支持Android的APP沙箱模型,即,每个APP有一个唯一的Unix风格的UID并运行在独自的进程中。另外,只要加上适当的标识,多个APP还可以用同一个UID运行。
9.3 Filesystem Permissions
设备还必须支持开发文档的Securityand Permission部分规定的文件访问权限模型。
9.4 Alternate Execution Environment
设备可能包含Dalvik和本地代码以外的第三方运行环境。但绝不能危害到Android的安全模型或安装的APP的安全。
第三方运行环境本身必须是AndroidAPP,绝不能允许自己的APP访问没有在AndroidManifest.xml中通过<uses-permission>要求的权限,也不能让自己的APP使用那些只有Android的系统程序才有的功能。还有,第三方环境本身要遵守标准的Android安全模型:
细节略过。。。
另外,第三方运行环境不能以ROOT身份运行,也不能把ROOT权限给其它的APP。第三方运行环境的.apk文件可能包含在系统镜像文件中,但它的签名必须与镜像文件中的其它APP不一样。
如果第三方运行环境的APP要访问一些在Android中需要相应权限才能访问的资源的话,第三方运行环境必须通知用户。如果不这样,那在安装这些APP的时候告诉用户也可以。
10 Software Compatibility Testing
我们提供了许多工具来测试设备的兼容性,你的设备必须通过本节提到的所有测试。当然,没有哪个测试是完美的,所以,尽量少地修改系统吧,这才是减少BUG的的根本。
10.1 Compatibility Test Suite
CTS是在真实设备上面运行的,它本身也可能存在BUG,它的更新与本文档无关。你的设备必须要通过最新的CTS测试才可以。
10.2 CTS Verifier
CTSVerifier算是CTS的一部分,需要手动进行,主要用于测试那些自动测试系统无法测试的功能,比如相机、传感器等。
CTSVerifier会测试许多硬件,包括那些可选的。你的设备必须对它支持的所有硬件用CTSVerifier进行测试。对于那些CDD中可选的测试用例,可以跳过。
设备的每个版本都要通过上面的测试才可以,但由于许多版本都是相似的,因此不必在所有版本上都测试。
10.3 Reference Application
除了上面要求的以外,你还设备必须使用下面提供的开源APP测试兼容性:
“Apps for Android”
Replica Island(在AndroidMarket可以找到,只有支持OpenGLES2.0的设备才需要测试)
上面的每个APP都必须正确加载并运行,才能说设备是兼容的。
11. Updatable Software
你的设备必须有一种机制可以升级系统,升级时允许系统重启。通常,有这么几种方式可以做到升级系统:
OTA
USB
Sd卡
如果一个系统已经被发布出去之后发现了BUG,可以通过这种方式升级系统解决问题。
12 Contact Us
你可以通过[email protected]联系本文章的原作者。
附录A——BluetoothTest Procedure
CTS包含了对RFCOMM蓝牙API的基于测试,但由于蓝牙是用于设备间通信的,只通过运行在一个设备上的软件是无法测试的。所以,你的设备必须通过下面的方法进行手动测试。
这个测试是基于Android源码中的蓝牙聊天程序的,需要有两个蓝牙设备:
具体测试细节略过。。。