Merge "[pm] derive correct abi override during prepare package"

This commit is contained in:
Songchun Fan
2020-08-19 22:33:35 +00:00
committed by Android (Google) Code Review

View File

@@ -11680,8 +11680,9 @@ public class PackageManagerService extends IPackageManager.Stub
if (DEBUG_ABI_SELECTION) {
Slog.d(TAG, "Resolved nativeLibraryRoot for " + parsedPackage.getPackageName()
+ " to root=" + parsedPackage.getNativeLibraryRootDir() + ", isa="
+ parsedPackage.isNativeLibraryRootRequiresIsa());
+ " to root=" + parsedPackage.getNativeLibraryRootDir()
+ ", to dir=" + parsedPackage.getNativeLibraryDir()
+ ", isa=" + parsedPackage.isNativeLibraryRootRequiresIsa());
}
// Push the derived path down into PackageSettings so we know what to
@@ -11689,9 +11690,10 @@ public class PackageManagerService extends IPackageManager.Stub
pkgSetting.legacyNativeLibraryPathString = parsedPackage.getNativeLibraryRootDir();
if (DEBUG_ABI_SELECTION) {
Log.d(TAG, "Abis for package[" + parsedPackage.getPackageName() + "] are" +
" primary=" + AndroidPackageUtils.getRawPrimaryCpuAbi(parsedPackage) +
" secondary=" + AndroidPackageUtils.getRawSecondaryCpuAbi(parsedPackage));
Log.d(TAG, "Abis for package[" + parsedPackage.getPackageName() + "] are"
+ " primary=" + pkgSetting.primaryCpuAbiString
+ " secondary=" + pkgSetting.primaryCpuAbiString
+ " abiOverride=" + pkgSetting.cpuAbiOverrideString);
}
if ((scanFlags & SCAN_BOOTING) == 0 && pkgSetting.sharedUser != null) {
@@ -17610,12 +17612,13 @@ public class PackageManagerService extends IPackageManager.Stub
}
boolean isUpdatedSystemAppFromExistingSetting = pkgSetting != null
&& pkgSetting.getPkgState().isUpdatedSystemApp();
final String abiOverride = deriveAbiOverride(args.abiOverride, pkgSetting);
AndroidPackage oldPackage = mPackages.get(pkgName);
boolean isUpdatedSystemAppInferred = oldPackage != null && oldPackage.isSystem();
final Pair<PackageAbiHelper.Abis, PackageAbiHelper.NativeLibraryPaths>
derivedAbi = mInjector.getAbiHelper().derivePackageAbi(parsedPackage,
isUpdatedSystemAppFromExistingSetting || isUpdatedSystemAppInferred,
args.abiOverride);
abiOverride);
derivedAbi.first.applyTo(parsedPackage);
derivedAbi.second.applyTo(parsedPackage);
} catch (PackageManagerException pme) {