public static File getPackageCacheFile(String packageName) { return new File(getDataAppPackageDirectory(packageName), "package.ini"); }
public static File getSignatureFile(String packageName) { return new File(getDataAppPackageDirectory(packageName), "signature.ini"); }
public static File getPackageResourcePath(String packgeName) { return new File(getDataAppPackageDirectory(packgeName), EncodeUtils.decode("YmFzZS5hcGs=")); // base.apk }
public static File getAppLibDirectory(String packageName) { return ensureCreated(new File(getDataAppPackageDirectory(packageName), "lib")); }
private void cleanUpResidualFiles(PackageSetting ps) { VLog.w(TAG, "cleanUpResidualFiles: " + ps.packageName); File dataAppDir = VEnvironment.getDataAppPackageDirectory(ps.packageName); FileUtils.deleteDir(dataAppDir); // We shouldn't remove user data here!!! Just remove the package. // for (int userId : VUserManagerService.get().getUserIds()) { // FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(userId, ps.packageName)); // } }
public static File getOdexFile(String packageName) { if (isAndroidO()) { // in Android O, the oatfile is relate with classloader, we must ensure the correct location to avoid repeated load dex. String instructionSet = VMRuntime.getCurrentInstructionSet.call(); File oatDir = ensureCreated(new File(getDataAppPackageDirectory(packageName), "oat" + File.separator + instructionSet)); return new File(oatDir, EncodeUtils.decode("YmFzZS5vZGV4")); // base.odex } else { // return new File(DALVIK_CACHE_DIRECTORY, "data@app@" + packageName + "-1@base.apk@classes.dex"); return new File(DALVIK_CACHE_DIRECTORY, EncodeUtils.decode("ZGF0YUBhcHBA") + packageName + EncodeUtils.decode("LTFAYmFzZS5hcGtAY2xhc3Nlcy5kZXg=")); } }
private void uninstallPackageFully(PackageSetting ps) { String packageName = ps.packageName; try { BroadcastSystem.get().stopApp(packageName); VActivityManagerService.get().killAppByPkg(packageName, VUserHandle.USER_ALL); VEnvironment.getPackageResourcePath(packageName).delete(); FileUtils.deleteDir(VEnvironment.getDataAppPackageDirectory(packageName)); VEnvironment.getOdexFile(packageName).delete(); for (int id : VUserManagerService.get().getUserIds()) { FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(id, packageName)); FileUtils.deleteDir(VEnvironment.getVirtualPrivateStorageDir(id, packageName)); } PackageCacheManager.remove(packageName); } catch (Exception e) { e.printStackTrace(); } finally { notifyAppUninstalled(ps, -1); } }
File appDir = VEnvironment.getDataAppPackageDirectory(pkg.packageName); File libDir = new File(appDir, "lib"); if (res.isUpdate) {
public static File getSignatureFile(String packageName) { return new File(getDataAppPackageDirectory(packageName), "signature.ini"); }
public static File getPackageResourcePath(String packgeName) { return new File(getDataAppPackageDirectory(packgeName), "base.apk"); }
public static File getSignatureFile(String packageName) { return new File(getDataAppPackageDirectory(packageName), "signature.ini"); }
public static File getPackageCacheFile(String packageName) { return new File(getDataAppPackageDirectory(packageName), "package.ini"); }
public static File getPackageCacheFile(String packageName) { return new File(getDataAppPackageDirectory(packageName), "package.ini"); }
public static File getPackageResourcePath(String packgeName) { return new File(getDataAppPackageDirectory(packgeName), EncodeUtils.decode("YmFzZS5hcGs=")); // base.apk }
public static File getAppLibDirectory(String packageName) { return ensureCreated(new File(getDataAppPackageDirectory(packageName), "lib")); }
public static File getAppLibDirectory(String packageName) { return ensureCreated(new File(getDataAppPackageDirectory(packageName), "lib")); }
private void cleanUpResidualFiles(PackageSetting ps) { VLog.w(TAG, "cleanUpResidualFiles: " + ps.packageName); File dataAppDir = VEnvironment.getDataAppPackageDirectory(ps.packageName); FileUtils.deleteDir(dataAppDir); // We shouldn't remove user data here!!! Just remove the package. // for (int userId : VUserManagerService.get().getUserIds()) { // FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(userId, ps.packageName)); // } }
public static File getOdexFile(String packageName) { if (isAndroidO()) { // in Android O, the oatfile is relate with classloader, we must ensure the correct location to avoid repeated load dex. String instructionSet = VMRuntime.getCurrentInstructionSet.call(); File oatDir = ensureCreated(new File(getDataAppPackageDirectory(packageName), "oat" + File.separator + instructionSet)); return new File(oatDir, EncodeUtils.decode("YmFzZS5vZGV4")); // base.odex } else { // return new File(DALVIK_CACHE_DIRECTORY, "data@app@" + packageName + "-1@base.apk@classes.dex"); return new File(DALVIK_CACHE_DIRECTORY, EncodeUtils.decode("ZGF0YUBhcHBA") + packageName + EncodeUtils.decode("LTFAYmFzZS5hcGtAY2xhc3Nlcy5kZXg=")); } }
private void cleanUpResidualFiles(PackageSetting ps) { File dataAppDir = VEnvironment.getDataAppPackageDirectory(ps.packageName); FileUtils.deleteDir(dataAppDir); for (int userId : VUserManagerService.get().getUserIds()) { FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(userId, ps.packageName)); } }
private void uninstallPackageFully(PackageSetting ps) { String packageName = ps.packageName; try { BroadcastSystem.get().stopApp(packageName); VActivityManagerService.get().killAppByPkg(packageName, VUserHandle.USER_ALL); VEnvironment.getPackageResourcePath(packageName).delete(); FileUtils.deleteDir(VEnvironment.getDataAppPackageDirectory(packageName)); VEnvironment.getOdexFile(packageName).delete(); for (int id : VUserManagerService.get().getUserIds()) { FileUtils.deleteDir(VEnvironment.getDataUserPackageDirectory(id, packageName)); } PackageCacheManager.remove(packageName); } catch (Exception e) { e.printStackTrace(); } finally { notifyAppUninstalled(ps, -1); } }