Merge "Checks that secondary instrumentation ABI matches" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
096e0587d2
@@ -5442,7 +5442,8 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
* runtime's instruction set is.
|
||||
*/
|
||||
private String getInstrumentationLibrary(ApplicationInfo appInfo, InstrumentationInfo insInfo) {
|
||||
if (appInfo.primaryCpuAbi != null && appInfo.secondaryCpuAbi != null) {
|
||||
if (appInfo.primaryCpuAbi != null && appInfo.secondaryCpuAbi != null
|
||||
&& appInfo.secondaryCpuAbi.equals(insInfo.secondaryCpuAbi)) {
|
||||
// Get the instruction set supported by the secondary ABI. In the presence
|
||||
// of a native bridge this might be different than the one secondary ABI used.
|
||||
String secondaryIsa =
|
||||
@@ -5671,6 +5672,16 @@ public final class ActivityThread extends ClientTransactionHandler {
|
||||
"Unable to find instrumentation info for: " + data.instrumentationName);
|
||||
}
|
||||
|
||||
// Warn of potential ABI mismatches.
|
||||
if (!Objects.equals(data.appInfo.primaryCpuAbi, ii.primaryCpuAbi)
|
||||
|| !Objects.equals(data.appInfo.secondaryCpuAbi, ii.secondaryCpuAbi)) {
|
||||
Slog.w(TAG, "Package uses different ABI(s) than its instrumentation: "
|
||||
+ "package[" + data.appInfo.packageName + "]: "
|
||||
+ data.appInfo.primaryCpuAbi + ", " + data.appInfo.secondaryCpuAbi
|
||||
+ " instrumentation[" + ii.packageName + "]: "
|
||||
+ ii.primaryCpuAbi + ", " + ii.secondaryCpuAbi);
|
||||
}
|
||||
|
||||
mInstrumentationPackageName = ii.packageName;
|
||||
mInstrumentationAppDir = ii.sourceDir;
|
||||
mInstrumentationSplitAppDirs = ii.splitSourceDirs;
|
||||
|
||||
@@ -101,6 +101,12 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
|
||||
/** {@hide} */
|
||||
public String credentialProtectedDataDir;
|
||||
|
||||
/** {@hide} */
|
||||
public String primaryCpuAbi;
|
||||
|
||||
/** {@hide} */
|
||||
public String secondaryCpuAbi;
|
||||
|
||||
/** {@hide} Full path to the directory containing primary ABI native libraries. */
|
||||
public String nativeLibraryDir;
|
||||
|
||||
@@ -131,6 +137,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
|
||||
dataDir = orig.dataDir;
|
||||
deviceProtectedDataDir = orig.deviceProtectedDataDir;
|
||||
credentialProtectedDataDir = orig.credentialProtectedDataDir;
|
||||
primaryCpuAbi = orig.primaryCpuAbi;
|
||||
secondaryCpuAbi = orig.secondaryCpuAbi;
|
||||
nativeLibraryDir = orig.nativeLibraryDir;
|
||||
secondaryNativeLibraryDir = orig.secondaryNativeLibraryDir;
|
||||
handleProfiling = orig.handleProfiling;
|
||||
@@ -160,6 +168,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
|
||||
dest.writeString(dataDir);
|
||||
dest.writeString(deviceProtectedDataDir);
|
||||
dest.writeString(credentialProtectedDataDir);
|
||||
dest.writeString(primaryCpuAbi);
|
||||
dest.writeString(secondaryCpuAbi);
|
||||
dest.writeString(nativeLibraryDir);
|
||||
dest.writeString(secondaryNativeLibraryDir);
|
||||
dest.writeInt((handleProfiling == false) ? 0 : 1);
|
||||
@@ -190,6 +200,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
|
||||
dataDir = source.readString();
|
||||
deviceProtectedDataDir = source.readString();
|
||||
credentialProtectedDataDir = source.readString();
|
||||
primaryCpuAbi = source.readString();
|
||||
secondaryCpuAbi = source.readString();
|
||||
nativeLibraryDir = source.readString();
|
||||
secondaryNativeLibraryDir = source.readString();
|
||||
handleProfiling = source.readInt() != 0;
|
||||
@@ -208,6 +220,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
|
||||
ai.dataDir = dataDir;
|
||||
ai.deviceProtectedDataDir = deviceProtectedDataDir;
|
||||
ai.credentialProtectedDataDir = credentialProtectedDataDir;
|
||||
ai.primaryCpuAbi = primaryCpuAbi;
|
||||
ai.secondaryCpuAbi = secondaryCpuAbi;
|
||||
ai.nativeLibraryDir = nativeLibraryDir;
|
||||
ai.secondaryNativeLibraryDir = secondaryNativeLibraryDir;
|
||||
}
|
||||
|
||||
@@ -11488,6 +11488,8 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
a.info.dataDir = pkg.applicationInfo.dataDir;
|
||||
a.info.deviceProtectedDataDir = pkg.applicationInfo.deviceProtectedDataDir;
|
||||
a.info.credentialProtectedDataDir = pkg.applicationInfo.credentialProtectedDataDir;
|
||||
a.info.primaryCpuAbi = pkg.applicationInfo.primaryCpuAbi;
|
||||
a.info.secondaryCpuAbi = pkg.applicationInfo.secondaryCpuAbi;
|
||||
a.info.nativeLibraryDir = pkg.applicationInfo.nativeLibraryDir;
|
||||
a.info.secondaryNativeLibraryDir = pkg.applicationInfo.secondaryNativeLibraryDir;
|
||||
mInstrumentation.put(a.getComponentName(), a);
|
||||
|
||||
Reference in New Issue
Block a user