Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/googlesamples/android-testdpc
Test DPC is a sample device policy controller for use with Android Enterprise. It gives developers the ability to see how their app will behave in a managed context such as device owner or within a managed profile. Users can set up a work profile, enable work apps, set applications restrictions, manage security polices, and much more. The app also serves as a implementation reference for other DPCs
https://github.com/googlesamples/android-testdpc
Last synced: 7 days ago
JSON representation
Test DPC is a sample device policy controller for use with Android Enterprise. It gives developers the ability to see how their app will behave in a managed context such as device owner or within a managed profile. Users can set up a work profile, enable work apps, set applications restrictions, manage security polices, and much more. The app also serves as a implementation reference for other DPCs
- Host: GitHub
- URL: https://github.com/googlesamples/android-testdpc
- Owner: googlesamples
- License: apache-2.0
- Created: 2015-05-22T02:46:28.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-09-09T08:36:32.000Z (3 months ago)
- Last Synced: 2024-11-21T06:03:05.449Z (22 days ago)
- Language: Java
- Homepage: https://play.google.com/store/apps/details?id=com.afwsamples.testdpc
- Size: 8.87 MB
- Stars: 785
- Watchers: 83
- Forks: 329
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mdm-dev - googlesamples/android-testdpc - Test DPC is an app designed to help test applications and platforms in an Android work profile (Tools :hammer_and_wrench:)
README
Test Device Policy Control (Test DPC) App
=========================================Test DPC is an app designed to help EMMs, ISVs, and OEMs to test their applications and platforms in a Android enterprise managed profile (i.e. work profile). It serves as both a sample Device Policy Controller and a testing application to flex the APIs available for Android enterprise. It supports devices running Android 5.0 Lollipop or later.
See the [documentation](https://developer.android.com/work/index.html) to learn more about Android in the enterprise.
## Getting Started
This sample uses the Bazel build system. To build this project, use the "bazel build testdpc" command.
This app can also be found [on the Play store](https://play.google.com/store/apps/details?id=com.afwsamples.testdpc).
## Provisioning
You can find various kinds of provisioning methods [here](https://developers.google.com/android/work/prov-devices#Key_provisioning_differences_across_android_releases). Let's take a few of them as an example.
### AFW# code provisioning (Device Owner M+)
1. Factory reset your device and tap the welcome screen in setup wizard 6 times.
2. When prompted to sign in, enter **afw#testdpc**
3. Follow onscreen instructions### QR code provisioning (Device Owner N+ only)
1. Factory reset your device and tap the welcome screen in setup wizard 6 times.
1. On Android O or older, the setup wizard prompts the user to connect to the Internet so the setup wizard can download a QR code reader.
Android P and newer devices already have the QR code reader available.
1. Generate a QR code with the content:
```
{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.afwsamples.testdpc/com.afwsamples.testdpc.DeviceAdminReceiver",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "gJD2YwtOiWJHkSMkkIfLRlj-quNqG1fb6v100QmzM9w=",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://testdpc-latest-apk.appspot.com"
}
```
or use this pre-made QR code:
![testdpc_provisioning](qrcode.png)
1. Scan the QR code and follow onscreen instructions### ADB command
#### Device Owner (DO)
* Run the `adb` command:
```console
adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver
```#### Profile Owner - Personal device (PO - BYOD)
* Create a managed profile by launching the “Set up TestDPC” app
* Skip adding an account at the end of the flow#### Profile Owner - Corporate-owned device (PO - COPE)
* Create a managed profile by launching the “Set up TestDPC” app
* Skip adding an account at the end of the flow
* Run the `adb` command:```console
adb shell dpm mark-profile-owner-on-organization-owned-device --user 10 com.afwsamples.testdpc/.DeviceAdminReceiver`
```#### TestDPC as DM role holder
TestDPC v9.0.5+ can be setup as Device Management Role Holder.
* Running the following `adb` commands:
```console
adb shell cmd role set-bypassing-role-qualification true
adb shell cmd role add-role-holder android.app.role.DEVICE_POLICY_MANAGEMENT com.afwsamples.testdpc
```Note: unlike DO/PO, this change is not persisted so TestDPC needs to be
marked as role holder again if the device reboots.## Android Studio import
To import this repository in Android Studio, you need to use the
[Bazel for Android Studio](https://plugins.jetbrains.com/plugin/9185-bazel-for-android-studio)
Plugin.When importing the project you have to select the folder containing the Bazel's
`BUILD` file. When prompted to select a "project view", you can choose the
option "Copy external" and choose the `scripts/ij.bazelproject` available in
this repository.Once Bazel has complete the import operation and the first sync of the
project, you can create a "Run Configuration".
Select "Bazel Command" as Configuration type and add `//:testdpc` as
"target expression".You can now run the project from inside Android Studio.
## Building with Bazel
The repository includes a `build.sh` script to build the application. The required
[setupdesign library](https://android.googlesource.com/platform/external/setupdesign/+/refs/heads/main)
is now imported and patched dynamically using the command line utility `ed`. This needs to be
available on the path to successfully build the project.### `ANDROID_HOME` environment setup
Bazel requires that you set the `ANDROID_HOME` environment variable to the path of your Android SDK.
As an example, you can add to your `.bashrc` on linux:
```
export ANDROID_HOME=
```## Support
If you've found an error in this sample, please file an issue:
https://github.com/googlesamples/android-testdpc/issuesPatches are encouraged, and may be submitted by forking this project and submitting a pull request through GitHub.
## License
Licensed under the Apache 2.0 license. See the LICENSE file for details.
## How to make contributions?
Please read and follow the steps in the CONTRIB file.