4. Application Packaging Compatibility

Devices implementations:

  • [C-0-1] MUST be capable of installing and running Android “.apk” files as generated by the “aapt” tool included in the official Android SDK.
  • As the above requirement may be challenging, device implementations are RECOMMENDED to use the AOSP reference implementation's package management system.

Device implementations:

*   It MUST declare the [`REQUEST_INSTALL_PACKAGES`](http://developer.android.com/reference/android/Manifest.permission.html#REQUEST_INSTALL_PACKAGES)
permission or have the `android:targetSdkVersion` set at 24 or lower.
*   It MUST have been granted permission by the user to install apps from
unknown sources.
  • SHOULD provide a user affordance to grant/revoke the permission to install apps from unknown sources per application, but MAY choose to implement this as a no-op and return RESULT_CANCELED for startActivityForResult(), if the device implementation does not want to allow users to have this choice. However, even in such cases, they SHOULD indicate to the user why there is no such choice presented.

  • [C-0-7] MUST display a warning dialog with the warning string that is provided through the system API PackageManager.setHarmfulAppWarning to the user before launching an activity in an application that has been marked by the same system API PackageManager.setHarmfulAppWarning as potentially harmful.

  • SHOULD provide a user affordance to choose to uninstall or launch an application on the warning dialog.

  • [C-0-8] MUST implement support for Incremental File System as documented here.

  • [C-0-9] MUST support verifying .apk files using the APK Signature Scheme v4.

  • If device implementations are already launched on an earlier Android version and cannot meet the requirements [C-0-8] and [C-0-9] through a system software update, they MAY be exempted from these requirements.