Android TestDPC 工程详解
一、TestDPC 核心定位
-
本质:Android 官方开源的 DPC 参考应用(Device Policy Controller,设备政策控制器)
-
依赖框架:Android for Work(AFW,Android 5.0+ 引入的企业级框架)
-
核心用途:
-
测试企业级应用的兼容性(如工作资料隔离、政策管控)
-
验证 Android 设备的管理能力(如锁屏、应用黑白名单)
-
作为自定义 DPC 开发的参考模板(开源可二次开发)
- 适用系统:Android 5.0(API 21)及以上(支持工作资料模式的设备)
二、核心功能模块(附使用场景)
2.1 设备管理(Device Management)
核心功能:
-
设备锁定与重置:强制锁定设备、恢复出厂设置(需设备所有者权限)
-
屏幕与休眠管控:设置屏幕超时时间、禁止休眠、锁定屏幕旋转
-
系统设置限制:禁用蓝牙 / Wi-Fi / 移动数据开关、禁止修改系统时间、隐藏状态栏
-
设备标识管理:获取设备 IMEI、MEID、序列号,配置设备名称
使用场景:
-
企业办公设备:锁定设备仅运行指定应用(如考勤机、收银设备)
-
教育设备:禁用娱乐功能,限制学生设备操作权限
2.2 工作资料管理(Work Profile)
核心功能:
-
工作 / 个人资料隔离:创建独立的工作资料分区(应用、数据、缓存分开存储)
-
工作应用管控:仅允许安装企业授权应用,禁止安装第三方应用
-
数据安全:工作资料加密、禁止工作数据导出(如禁止截图、文件分享)
-
资料擦除:单独擦除工作资料(不影响个人数据)
使用场景:
- BYOD(自带设备办公):员工手机同时使用个人 / 工作账号,数据隔离防泄露
2.3 应用管理(App Management)
核心功能:
-
应用黑白名单:限制设备可运行的应用(白名单)或禁止运行的应用(黑名单)
-
应用安装 / 卸载管控:强制安装企业应用、禁止卸载核心应用(如办公软件)
-
应用权限管理:统一配置应用权限(如禁止相机、定位权限)
-
应用使用统计:监控应用启动次数、使用时长
使用场景:
-
企业设备标准化:确保所有办公设备安装统一的工具应用,禁止娱乐应用
-
学校平板:仅允许运行学习类应用,禁止游戏、视频应用
2.4 安全政策配置(Security Policies)
核心功能:
-
密码政策:强制设置屏幕密码(复杂度要求:数字 + 字母、最小长度)、密码过期时间
-
加密政策:强制设备加密、工作资料加密
-
证书管理:安装企业 CA 证书、配置 VPN 证书(支持 SSL VPN)
-
安全行为限制:禁止 root 设备、禁止 USB 调试、禁止安装未知来源应用
使用场景:
-
金融设备:强制密码复杂度,防止设备被破解
-
涉密设备:禁用调试和 root,防止数据泄露
2.5 其他辅助功能
-
政策导出 / 导入:将配置好的管理政策导出为 XML 文件(可复用)
-
日志记录:记录设备操作日志、政策应用日志(用于调试)
-
多设备管理:支持通过 EMM 服务器批量管理多台设备(需配合 EMM 平台)
三、工程 "输出" 解析(重点解答)
TestDPC 工程的 "输出" 主要指 编译输出产物 和 运行时输出内容,核心如下:
3.1 编译输出产物(Android Studio 构建后)
| 输出文件 / 目录 | 路径 | 用途 |
|---|---|---|
| testdpc.apk | app/build/outputs/apk/release/ | 可安装的测试 APK(核心产物) |
| testdpc-debug.apk | app/build/outputs/apk/debug/ | 调试版 APK(含调试信息) |
| testdpc.aab | app/build/outputs/bundle/ | Android App Bundle(应用商店发布用) |
| 混淆映射文件 | app/build/outputs/mapping/release/ | ProGuard 混淆映射(调试崩溃用) |
| 依赖库文件 | app/build/intermediates/ | 编译过程中生成的依赖库、class 文件 |
如何获取输出:
-
克隆官方源码:
git clone ``https://github.com/googlesamples/android-testdpc.git -
用 Android Studio 打开工程(需配置 Android SDK 21+)
-
点击「Build → Build Bundle (s) / APK (s) → Build APK (s)」
-
构建完成后,通过「locate」按钮直接打开输出目录
3.2 运行时输出内容
(1)政策配置输出(核心输出)
-
输出格式:XML 文件(包含所有配置的管理政策)
-
导出路径:设备内部存储 → Android → data → com.google.android.apps.testdpc → files → policies → [政策名称].xml
-
内容示例(简化):
="6" required-characters="letters+digits"/>
itelist>
package="com.google.android.gms"/>
="com.example.office"/>
itelist>
-profile enabled="true" encrypt="true"/>
</policy>
-
用途:复用政策配置(导入其他设备直接应用)、备份配置
(2)日志输出(调试用)
- 输出类型:
-
系统日志(Logcat):过滤标签「TestDPC」可查看政策应用日志、错误信息
-
应用内日志:TestDPC 应用内「设置 → 关于 → 日志」可查看操作记录
-
关键日志示例:
D/TestDPC: 政策应用成功:密码复杂度(6位数字+字母)
D/TestDPC: 工作资料创建成功:package=com.google.android.apps.testdpc.work
E/TestDPC: 应用安装失败:com.example.unauthorized(不在白名单)
(3)设备状态输出(管理结果)
-
输出内容:设备当前的管理状态(如政策是否生效、工作资料是否激活)
-
查看路径:TestDPC 应用首页 → 「设备状态」模块
-
核心状态指标:
-
设备所有者:已激活(绿色)/ 未激活(红色)
-
工作资料:已创建(显示工作资料图标)/ 未创建
-
生效政策数:当前激活的管理政策数量
-
受限应用数:被黑白名单管控的应用数量
-
四、工程使用步骤(快速上手)
4.1 环境准备
-
开发工具:Android Studio 4.0+
-
依赖:Android SDK Build-Tools 28+、AndroidX 库
-
测试设备:Android 5.0+ 手机 / 模拟器(需开启开发者选项)
4.2 关键操作流程
- 安装 TestDPC APK:
- 编译工程生成 APK,通过 adb 安装:
adb install testdpc.apk
- 激活设备所有者权限(核心步骤):
-
设备恢复出厂设置后,首次开机时连接电脑
-
执行 adb 命令:
adb shell dpm set-device-owner com.google.android.apps.testdpc/.DeviceAdminReceiver -
激活成功后,TestDPC 会显示「设备所有者已激活」
- 配置管理政策:
-
首页选择「政策配置」→ 按需开启「密码政策」「应用白名单」等功能
-
点击「导出政策」保存配置,点击「应用政策」生效
- 验证输出结果:
-
查看应用内「设备状态」确认政策生效
-
通过 Logcat 过滤「TestDPC」标签查看日志输出
-
导出 XML 政策文件验证配置是否正确
五、二次开发与扩展
5.1 工程结构(核心目录)
android-testdpc/
├── app/
│ ├── src/main/
│ │ ├── java/com/google/android/apps/testdpc/
│ │ │ ├── DeviceAdminReceiver.java // 设备管理广播接收者(核心)
│ │ │ ├── PolicyActivity.java // 政策配置界面
│ │ │ ├── WorkProfileManager.java // 工作资料管理类
│ │ ├── res/ // 布局、资源文件
│ │ └── AndroidManifest.xml // 权限声明(如设备管理权限)
│ └── build.gradle // 依赖配置(如AndroidX、EMM API)
5.2 常见扩展场景
-
自定义政策配置界面:修改 res/layout 中的政策配置页面
-
新增管理功能:基于 Android EMM API 扩展(如远程定位、设备拍照)
-
集成 EMM 服务器:对接企业 EMM 平台,实现多设备批量管理
六、注意事项
-
设备所有者权限激活后,需恢复出厂设置才能解除(测试时建议用模拟器)
-
部分功能依赖硬件支持(如加密功能需设备支持 AES 加密)
-
Android 10+ 部分政策(如禁用 USB 调试)需系统签名或 Root 权限
-
工作资料模式仅支持 Android 5.0+ 且未被厂商定制关闭的设备(如部分国产手机需开启 "工作空间" 功能)