Merge "Create sdk directory for an app only if app consumes sdk" into tm-dev
This commit is contained in:
@@ -273,12 +273,15 @@ public class StorageManager {
|
||||
public static final int FLAG_STORAGE_CE = IInstalld.FLAG_STORAGE_CE;
|
||||
/** {@hide} */
|
||||
public static final int FLAG_STORAGE_EXTERNAL = IInstalld.FLAG_STORAGE_EXTERNAL;
|
||||
/** @hide */
|
||||
public static final int FLAG_STORAGE_SDK = IInstalld.FLAG_STORAGE_SDK;
|
||||
|
||||
/** {@hide} */
|
||||
@IntDef(prefix = "FLAG_STORAGE_", value = {
|
||||
FLAG_STORAGE_DE,
|
||||
FLAG_STORAGE_CE,
|
||||
FLAG_STORAGE_EXTERNAL
|
||||
FLAG_STORAGE_EXTERNAL,
|
||||
FLAG_STORAGE_SDK,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface StorageFlags {}
|
||||
|
||||
@@ -218,8 +218,9 @@ final class AppDataHelper {
|
||||
|
||||
final String seInfo = pkgSeInfo + seInfoUser;
|
||||
final int targetSdkVersion = pkg.getTargetSdkVersion();
|
||||
final boolean usesSdk = !pkg.getUsesSdkLibraries().isEmpty();
|
||||
final CreateAppDataArgs args = Installer.buildCreateAppDataArgs(volumeUuid, packageName,
|
||||
userId, flags, appId, seInfo, targetSdkVersion);
|
||||
userId, flags, appId, seInfo, targetSdkVersion, usesSdk);
|
||||
args.previousAppId = previousAppId;
|
||||
|
||||
return batch.createAppData(args).whenComplete((ceDataInode, e) -> {
|
||||
|
||||
@@ -92,6 +92,7 @@ public class Installer extends SystemService {
|
||||
public static final int FLAG_STORAGE_DE = IInstalld.FLAG_STORAGE_DE;
|
||||
public static final int FLAG_STORAGE_CE = IInstalld.FLAG_STORAGE_CE;
|
||||
public static final int FLAG_STORAGE_EXTERNAL = IInstalld.FLAG_STORAGE_EXTERNAL;
|
||||
public static final int FLAG_STORAGE_SDK = IInstalld.FLAG_STORAGE_SDK;
|
||||
|
||||
public static final int FLAG_CLEAR_CACHE_ONLY = IInstalld.FLAG_CLEAR_CACHE_ONLY;
|
||||
public static final int FLAG_CLEAR_CODE_CACHE_ONLY = IInstalld.FLAG_CLEAR_CODE_CACHE_ONLY;
|
||||
@@ -190,12 +191,16 @@ public class Installer extends SystemService {
|
||||
// We explicitly do NOT set previousAppId because the default value should always be 0.
|
||||
// Manually override previousAppId after building CreateAppDataArgs for specific behaviors.
|
||||
static CreateAppDataArgs buildCreateAppDataArgs(String uuid, String packageName,
|
||||
int userId, int flags, int appId, String seInfo, int targetSdkVersion) {
|
||||
int userId, int flags, int appId, String seInfo, int targetSdkVersion,
|
||||
boolean usesSdk) {
|
||||
final CreateAppDataArgs args = new CreateAppDataArgs();
|
||||
args.uuid = uuid;
|
||||
args.packageName = packageName;
|
||||
args.userId = userId;
|
||||
args.flags = flags;
|
||||
if (usesSdk) {
|
||||
args.flags |= FLAG_STORAGE_SDK;
|
||||
}
|
||||
args.appId = appId;
|
||||
args.seInfo = seInfo;
|
||||
args.targetSdkVersion = targetSdkVersion;
|
||||
|
||||
@@ -4190,10 +4190,11 @@ public final class Settings implements Watchable, Snappable {
|
||||
// Accumulate all required args and call the installer after mPackages lock
|
||||
// has been released
|
||||
final String seInfo = AndroidPackageUtils.getSeInfo(ps.getPkg(), ps);
|
||||
final boolean usesSdk = !ps.getPkg().getUsesSdkLibraries().isEmpty();
|
||||
final CreateAppDataArgs args = Installer.buildCreateAppDataArgs(
|
||||
ps.getVolumeUuid(), ps.getPackageName(), userHandle,
|
||||
StorageManager.FLAG_STORAGE_CE | StorageManager.FLAG_STORAGE_DE,
|
||||
ps.getAppId(), seInfo, ps.getPkg().getTargetSdkVersion());
|
||||
ps.getAppId(), seInfo, ps.getPkg().getTargetSdkVersion(), usesSdk);
|
||||
batch.createAppData(args);
|
||||
} else {
|
||||
// Make sure the app is excluded from storage mapping for this user
|
||||
|
||||
Reference in New Issue
Block a user