Merge "[pm] clarify error message and comments for app install with RenderScript" into sc-dev

This commit is contained in:
Songchun Fan
2021-02-08 19:42:39 +00:00
committed by Android (Google) Code Review

View File

@@ -401,11 +401,16 @@ final class PackageAbiHelperImpl implements PackageAbiHelper {
String[] abiList = (cpuAbiOverride != null)
? new String[]{cpuAbiOverride} : Build.SUPPORTED_ABIS;
// Enable gross and lame hacks for apps that are built with old
// SDK tools. We must scan their APKs for renderscript bitcode and
// not launch them if it's present. Don't bother checking on devices
// that don't have 64 bit support.
// If an app that contains RenderScript has target API level < 21, it needs to run
// with 32-bit ABI, and its APK file will contain a ".bc" file.
// If an app that contains RenderScript has target API level >= 21, it can run with
// either 32-bit or 64-bit ABI, and its APK file will not contain a ".bc" file.
// Therefore, on a device that supports both 32-bit and 64-bit ABIs, we scan the app
// APK to see if it has a ".bc" file. If so, we will run it with 32-bit ABI.
// However, if the device only supports 64-bit ABI but does not support 32-bit ABI,
// we will fail the installation for such an app because it won't be able to run.
boolean needsRenderScriptOverride = false;
// No need to check if the device only supports 32-bit
if (Build.SUPPORTED_64_BIT_ABIS.length > 0 && cpuAbiOverride == null
&& NativeLibraryHelper.hasRenderscriptBitcode(handle)) {
if (Build.SUPPORTED_32_BIT_ABIS.length > 0) {
@@ -414,7 +419,8 @@ final class PackageAbiHelperImpl implements PackageAbiHelper {
} else {
throw new PackageManagerException(
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE,
"Apks with renderscript are not supported on 64-bit only devices");
"Apps that contain RenderScript with target API level < 21 are not "
+ "supported on 64-bit only platforms");
}
}