3.1 KiB
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 systemDevice implementations.
- [C-0-2] MUST support verifying “.apk” files using the APK Signature Scheme v2 and JAR signing.
- [C-0-3] MUST NOT extend either the .apk, Android Manifest, Dalvik bytecode, or RenderScript bytecode formats in such a way that would prevent those files from installing and running correctly on other compatible devices.
- [C-0-4] MUST NOT allow apps other than the current
"installer of record" for the package to silently uninstall the app without any
prompt, as documented in the SDK for the
DELETE_PACKAGE
permission. The only exceptions are the system package verifier app handling PACKAGE_NEEDS_VERIFICATION intent and the storage manager app handling ACTION_MANAGE_STORAGE intent.
Device implementations MUST NOT install application packages from unknown sources, unless the app that requests the installation meets all the following requirements:
- It MUST declare the
REQUEST_INSTALL_PACKAGES
permission or have theandroid:targetSdkVersion
set at 24 or lower. - It MUST have been granted permission by the user to install apps from unknown sources.
Device implementations MUST have an activity that handles the
android.settings.MANAGE_UNKNOWN_APP_SOURCES
intent. They 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()
](http://developer.android.com/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent, int%29),
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.