Android for work是什么
Android for Work(以下简称Afw)是由google主导开发的一套旨在支持Android在企业中运用的一套方案。这套方案可以实现在同一台设备上同时支持工作应用和个人应用。
基于afw方案的设备有以下优点:
数据安全
工作数据通过work profile和个人数据隔离出来,并且受到work profile的保护, IT可以部署工作数据被保护的策略App安全
work profile里面的app是通过Google play for work部署的。IT可以阻止
安装未知来源的app,并且可以配置app.设备安全
支持afw的设备受到磁盘加密,锁屏,远程attestation services的保护。如果hardware-backed keystore存在的话,也受到它的保护。
Afw支持的模式
Afw支持两种模式。
Device Owner
在设备Setupwizard的过程中就把EMM App设成管理设备的app就可以叫做Device Owner模式,这种模式可以简单的理解为IT具有完全控制设备的能力。Work Profile
又叫做Profile Owner或者BYOD.
在设备正常走完setupwizard流程以后,安装EMM app然后把它设成管理设备的app的模式叫做Work Profile模式。这种模式下有两种应用,一种是带有公文包图标的应用,这种应用由IT管理;另一种是个人应用,这种应用由用户自己管理。如下图
Afw的组成部分
Afw由四大部分构成。
设备管理APIs(Device Management APIs)
Android提供了一套Api来支持afw, 这些api分布在两个class文件中。
. /frameworks/base/core/java/android/app/admin/DevicePolicyManager.java
. /frameworks/base/core/java/android/os/UserManager.java
通过这些api可以实现IT 管理设备的不同策略,同时,Android提供了CTS测试case来确保这些API正确的被实现了。企业移动管理(Enterprise Mobility Management) Apps
又称为手机设备管理(Mobile Device Management) App,这是一个在Work Profile或者Device Owner模式下管理设备的app. 作为Device Owner的EMM App比作为Work Profile的EMM App能调用更多的设备管理Api.(比如在Device Owner模式可以禁用Camera,但是在work profile模式下不行)Google Play for Work
不管是Device Owner模式还是Work Profile模式,Google Play for Work是默认的部署应用到设备的方法。用户可以使用什么样的App是通过IT来配置和管理的。安全和证书
任何设备只要过了Google CTS测试并且兼容CDD,那么它就可以宣称完全兼容Android.然而,在企业中部署设备可能还需要额外的安全需求和证书。这些功能对于OEM来说是可选的。
Afw的集成
1. 相关配置
L平台
必须支持如下两个feature
android.software.device_admin
android.software.managed_users
可以通过adb shell pm list features验证
不能是低内存设备
ro.config.low_ram不能被定义,通过adb shell getprop ro.config.low_ram查看。满足L CDD文档9.5章节的需求
CDD的文档可以在source.android.com/compatibility/index.html下载。至少支持两个以上的用户
adb shell pm get-max-users查看。
如果是单用户,则需要打google提供的patch.
https://androidreview.googlesource.com/#/c/150805/
https://androidreview.googlesource.com/#/c/150599/
https://androidreview.googlesource.com/#/c/150783/
https://androidreview.googlesource.com/#/c/151597/AndroidForWork.apk必须预置在设备上
GMSCore版本号必须是6.5.99+
核心的GMS应用需要添加到白名单中
./packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml
比如
./packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_profile.xml
比如
Launcher需要支持work profile模式中的badging application
详细的描述可以参见
CDD 9.5章节。如果是google launcher或者AOSP的launcher,则一般都是默认支持的。支持NFC的设备,必须在SUW(Setupwizard)使能NFC并且配置接受相关的Intent.
/packages/apps/Nfc/res/values/provisioning.xml<bool name="enable_nfc_provisioning">true</bool> <item>application/com.android.managedprovisioning</item>
Setupwizard要满足以下条件
如果是google setupwizard则什么都不用做。
如果是OEM的Setupwizard:
需要支持Device Owner provisioning.当它开始的时候,需要检查是否另一个进程是否已经完成了setup.如果是这种情况,setupwizard需要触发开启桌面的Intent并且完成Setupwizard.这个可以通过如下代码完成:@Override protected void onStart() { super.onStart(); // When returning to a setup wizard activity, check to see if another setup process // has intervened and, if so, complete an orderly exit boolean completed = Settings.Secure.getInt(getContentResolver(), Settings.Secure. USER_SETUP_COMPLETE , 0) != 0; if (completed) { startActivity(new Intent(Intent.ACTION_MAIN, null) .addCategory(Intent.CATEGORY_HOME) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)); finish(); } ... }
M平台
除以下列举的,其余和L平台一致满足M CDD 3.9章节的需求
单用户多用户均支持,不需要额外打Patch.
AndroidForWork.apk不再需要,Device Owner集成在Google Play Services当中。
- GMScore的版本必须是7.8.99+版本。
2. 相关的代码/API/APK
L平台
- Provision App:下载EMM APP,设置Device Owner模式等等
/packages/apps/ManagedProvisioning
- 策略和管理的API:被EMM 和Provision APP调用
. /frameworks/base/core/java/android/app/admin/DevicePolicyManager.java . /frameworks/base/core/java/android/os/UserManager.java
AndroidForWork.apk
获取EMM App的相关信息等,然后调用Provision App
此APK是GMS里面包含的Phonesky.apk
Google Play Store- Setupwizard
调用AndroidForWork.apk开启Device Owner流程的设置
M平台
除了不再需要AndroidForWork.apk其余和L平台一致。
由于篇幅较大,剩下的内容将放在下一篇来讲解,包括Afw的流程,EMM服务端的配置等等内容。