Android O device owner&zero touch

最近manager让研究下device owner和zero touch。部分心得如下。

1.zero touch相关网址

https://support.google.com/androidpartners_gms/answer/9178208?hl=en#

这个网址普通的google账号是看不了,需要申请GMS partner权限,这个可以找gms认证机构来帮助申请,我司找的harman。

2.support zero touch的方式

根据文档,zero_touch是配合gms core api使用的,所以只有gms版本可以配置该功能。

我们这边需要做的是:

1. vendor\google\products\gms.mk

预制OobConfig

PRODUCT_PACKAGES += \

OobConfig

2. vendor\google\products\gms_overlay\frameworks\base\core\res\res\values\config.xml

新增

               <string name="config_deviceProvisioningPackage">com.google.android.apps.work.oobconfig</string>

               <string-array translatable="false" name="config_defaultFirstUserRestrictions">

               <item>"no_oem_unlock"</item>

               </string-array>

3. vendor/google/ etc/sysconfig/google.xml

新增

<!-- Enable Zero Touch Provisioning support. -->

    <feature name="com.google.android.feature.ZERO_TOUCH" />

我这边根据文档的test method来看,对应的log打印了,是没问题的。

3.device owner相关的网址

Nfc方式enable device owner的google demo,一定要看下源码熟悉下

https://github.com/googlesamples/android-NfcProvisioning/

https://github.com/googlesamples/android-DeviceOwner/

Android for work总结

https://blog.csdn.net/liu1314you/article/details/52028823

https://blog.csdn.net/liu1314you/article/details/52038916

device owner google官网介绍

https://developers.google.com/android/work/play/emm-api/prov-devices

Cisco对于device owner的介绍

https://documentation.meraki.com/SM/Deployment_Guides/Android_Enterprise_Deployment_Guide

nfc的一个操作视频,可以参考

https://sdgsystems.com/blog/implementing-kiosk-mode-android-part-3-android-lollipop

关于操作的视频建议去youtube上找点操作视频看看

4.device owner的玩法

1.adb的方法

root手机 or userdebug/eng软件,先装上面的google的DO demo

adb shell dpm set-device-owner com.example.android.deviceowner/.DeviceOwnerReceiver

打印出:

Success: Device owner set to package ComponentInfo{com.example.android.deviceowner/com.example.android.deviceowner.DeviceOwnerReceiver}

Active admin set to component {com.example.android.deviceowner/com.example.android.deviceowner.DeviceOwnerReceiver}

apk给do前

apk给do后

2.google 的DO(device owner) demo和Nfc-Pro demo的正确玩法

准备工作

github上拉下google demo的代码(前面给了网址),在as里面生成apk

两台机器,A和B

A:userdebug/eng 软件,带gms包

B:没啥要求,装NfcProvisioning这个apk

操作方式

B打开NfcProvisioning这个apk,输入wifi(用翻墙的)和密码,加密类型不填。

A恢复出厂设置,在开机向导界面adb install DO 这个apk(这也是为啥不用user软件)。

A连接wifi,和B连接同一个翻墙的wifi。

B和A机器背靠背,然后按提示一步步进行,即可。

B机器:

 

A机器:

 

 

DO mode下的apk保留

A进入Launcher后,可以看到,很多apk不见了,只保留了部分系统apk。

系统apk的保留这部分操作实际是google设计的。对应的文件是:

packages/apps/ManagedProvisioning/res/values/required_apps_managed_device.xml

packages/apps/ManagedProvisioning/res/values/vendor_required_apps_managed_device.xml

看名字就可以知道一个是针对android 原生的一些apk的保留,一个是针对google包的一些apk的保留。

这里要注意一点:

gms包里面是有个overlay的,所以在带有gms包的情况下,真正生效的是gms包里的xml

vendor/google/products/gms_overlay/packages/apps/ManagedProvisioning/ vendor_required_apps_managed_device.xml

 

这里我们碰到一个问题,因为没有预制gms包的Mms,而是用的android 的Mms。可以看到gms包的vendor_required_apps_managed_device.xml中保留了gms包的Mms。可以理解google设计的逻辑是想要在device owner的模式保留短信这个功能的。

而我们没有预制gms包的Mms,但是required_apps_managed_device.xml中却没有保留android的Mms,所以我们要在required_apps_managed_device.xml中需要加上android的Mms。这样就可以在DO mode下保留Mms了。

这两个文件的修改可以根据大家对于gms包的定制来做对应修改。

5.device owner 有价值做我还没做完的

1.testDPC

这个是google 的一个demo,让我们知道获得DO的apk可以做哪些事。

https://github.com/googlesamples/android-testdpc/

https://play.google.com/store/apps/details?id=com.afwsamples.testdpc&hl=en

 

2.device owner provision最正规的玩法

(也是企业客户用的方式,并不是我们之前的那种demo做法)

也就是要找提供EMMs的partner,他们的apk会和他们的服务器交互。为企业部署实现更强大的功能。

这些partner有很多,有Cisco,MobileIron等,可以参考

https://androidenterprisepartners.withgoogle.com/emm/

当然,这些partner,google自己也算。

这个我根据https://blog.csdn.net/liu1314you/article/details/52038916这个去尝试走了一下google作为partner的完整流程,发现现在需要注册google的G-suite账号,要出钱买域名。后续就没继续了,有兴趣的可以完整做一遍。对DO的理解会更深刻。

3.device owner相关类的学习

frameworks/base/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java

frameworks/base/core/java/android/app/admin/DevicePolicyManagerInternal.java

frameworks/base/core/java/android/app/admin/DevicePolicyManager.java

frameworks/base/core/java/android/app/admin/IDevicePolicyManager.aidl

…….

 

6.device owner学习过程中经常提到的一些概念

enterprise mobility management (EMM) 企业移动管理

Device policy controller(DPC)设备策略控制器

Android for Work (AFW)

Work Profile

device owner(DO)

device admin

zero touch

….

因为google的玩法和叫法也是在迭代的变化,大概感兴趣可以都去了解归纳下。最好的方式是去google官网。

 

总结:如果客户问贵司机器是否支持device owner。那他指的多半是企业device owner provision的那套玩法。那么是需要gms包做支持的,并且设备不是low ram。

以我的理解,user版本的软件上只能在开机向导处开始device owner provision一系列的操作。所以gms包是必须的(这一系列的操作中,不仅仅只是开机向导的代码,还有引用GMS mandatory core packages的一些东西,因为没有开机向导的源码,只能从各方面文档中推断出这一点)

 

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值