commit | 599043a2356e801da02f7d246227c389c85151bb | [log] [tgz] |
---|---|---|
author | Jiyong Park <jiyong@google.com> | Tue Oct 19 12:28:49 2021 +0900 |
committer | Jiyong Park <jiyong@google.com> | Tue Oct 19 17:15:28 2021 +0900 |
tree | 98baab0e96f44f6dc3d4c2884401c6c643150c98 | |
parent | 2294b03332be488acaba7043cc264b10be0bfc11 [diff] |
Unbundled test apps can obtain virtual machine permissions Currently, tests for pKVM are written as hode-side tests which interact with the platform using the `vm` tool. However, that approach has cause many problems: * Can't test Java APIs; we were testing the command line interface of the tool actually. * Unreliable connection to adb; we had to add busy loops to work around some of the flakes. We should move on to the device-side tests. There will be a self-instrumened test apk which will be driven by tradefed. However, one blocker to the plan is that the Java APIs are not available to test apps, as we don't have a plan to make the APIs public in TM and therefore we put the APIs behind signature-protected permissions (com.android.MANAGE_VIRTUAL_MACHINE, com.android.DEBUG_VIRTUAL_MACHINE). Since test apps can't be signed with the platform key, our test apk can't have the permission. This CL fixes the problem by turning on the `development` bit in the protection level of the permissions. Then the permission can be granted to the test apps satisfying following conditions (all): * test app has `android:testOnly="true"` in its manifest. The flag prevents the app from being uploaded to Play or installed from there. * the app has to be installed with the "-t" (`INSTALL_ALLOW_TEST`) flag * the permission has to be explicitly granted via `pm grant <package> <perm>` command`. Bug: 203483081 Test: TARGET_BUILD_APPS="MicrodroidDemoApp" m apps_only dist adb install --no-streaming -t out/dist/MicrodroidDemoApp.apk adb shell $ su; setenforce 0 // will be fixed $ pm grant com.android.microdroid.demo android.permission.MANAGE_VIRTUAL_MACHINE run the demo app Change-Id: Ic163a3bc745fc310d690faddde638405faad686c
This repository contains userspace services related to running virtual machines on Android, especially protected virtual machines. See the getting started documentation and Microdroid README for more information.