首页
社区
课程
招聘
[原创]基于Android AFW实现的app多开研究
2020-8-16 14:55 18915

[原创]基于Android AFW实现的app多开研究

2020-8-16 14:55
18915

基于Android AFW实现的app多开研究

1.afw 简介

Android for Work 是协议企业使用 Android 的方案,包括 Android 的产品功能,Google Play for Work 及其他生产力工具. Android for Work 主要透过 API 发布,可让企业行动管理服务(EMM)供应商和企业应用程式开发商为客户员工提供安全,有效率而多元化的行动环境。
以 Android for Work 为基础所建立的解决方案具有以下优点:
资料安全性:公司资料是独立储存在工作管理化装置上的工作设定档中,在装置层级受保护 IT 人员也可以套用资料外泄防范政策。
应用程式安全性:透过 Google Play for Work 部署工作应用程式 IT 人员可禁止使用者安装不明来源的应用程式和套用应用程式设定。
装置安全性:Android for Work装置具备各项保护机制,包括磁碟加密,萤幕锁定,远端认证服务与硬碟支持金钥库(如果有的话)。

2 多用户功能

AFW使用了android多用户实现。多用户模式主要用到 UserManager 相关类,切换不同的用户,在不同的用户下运行 App,实现多开。

3 基于AFW实现双开

android官方提供了afw的实现demo dpc,地址:
https://github.com/googlesamples/android-testdpc
Island的双开也是使用afw技术。
现在的小米、华为等应用双开也是基于afw技术。

4 基于AFW多开实现

由于afw系统限制了只能分身一个,需要实现多开,就需要进行系统二次开发。
涉及修改:
UserManagerService中解除afw分身限制个数
UserManager中解除多用户个数限制
基于android dpc demo实现对任意App的分身控制
修改ManagedProvisioning App,解除大于1个分身情况下,会提示已创建工作资料空间。根据代码分析,ManagedProvisioning负责工作资料空间的创建和配置。
修改Launcher,根据分身之后的app 进行图标绘制以及分身控制

 

##5 效果展示

 

6 测试情况

本人基于8.1系统开发测试,由于分身一个app就会后台创建一个用户,这种方式的多开对手机系统性能消耗很大。afw 实现分身,需要对手机内存、处理器性能、存储空间都需要考虑。手机性能好,app分身上百个也没问题。


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

最后于 2022-1-17 10:40 被蟑螂一号编辑 ,原因:
收藏
点赞6
打赏
分享
最新回复 (10)
雪    币: 174
活跃值: (3646)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
TUGOhost 2020-8-19 10:20
2
0
大佬厉害!
雪    币: 5995
活跃值: (3470)
能力值: ( LV6,RANK:96 )
在线值:
发帖
回帖
粉丝
Imyang 1 2020-8-27 19:42
3
0


根据楼主的提示,已经创建好了

雪    币: 1
活跃值: (883)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zoukaiping 2020-8-28 10:36
4
0

里面有个

setup-wizard-lib-platform-release.aar,怎么不是源代码?

最后于 2020-8-28 12:17 被zoukaiping编辑 ,原因:
雪    币: 257
活跃值: (3623)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
蟑螂一号 1 2020-8-28 13:36
5
0
zoukaiping 里面有个setup-wizard-lib-platform-release.aar,怎么不是源代码?
那个代码不是很重要吧
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_喂 2021-2-16 22:43
6
0
那个rom是用什么工具安装的。。想搞个尝试下弄弄~
雪    币: 3212
活跃值: (693)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
疯子Tear 2021-3-26 13:49
7
0
Imyang 根据楼主的提示,已经创建好了
大佬求教
雪    币: 6
活跃值: (841)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
路易 2021-4-1 16:58
8
0
如何在多开运用中注入内容?
雪    币: 227
活跃值: (601)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jasonxgw 2022-1-4 21:49
9
0
这里说的意思没懂“修改ManagedProvisioning App,解除大于1个分身情况下,会提示已创建工作资料空间。根据代码分析,ManagedProvisioning负责工作资料空间的创建和配置。“
不知道是不是指这 com.android.managedprovisioning.task.CrossProfileIntentFiltersSetter.resetFilters() 这个方法
雪    币: 202
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
胖虎1103 2022-1-16 14:13
10
0
付费求成品
雪    币: 257
活跃值: (3623)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
蟑螂一号 1 2022-1-17 10:35
11
0
mb_xzfwsiuy 付费求成品
加q   四八二七七九八零三
游客
登录 | 注册 方可回帖
返回