public void adjustPackageManifest(ResTable resTable, String filePath) throws AndrolibException { // compare resources.arsc package name to the one present in AndroidManifest ResPackage resPackage = resTable.getCurrentResPackage(); String packageOriginal = resPackage.getName(); mPackageRenamed = resTable.getPackageRenamed(); resTable.setPackageId(resPackage.getId()); resTable.setPackageOriginal(packageOriginal); // 1) Check if packageOriginal === mPackageRenamed // 2) Check if packageOriginal is ignored via IGNORED_PACKAGES // 2a) If its ignored, make sure the mPackageRenamed isn't explicitly allowed if (packageOriginal.equalsIgnoreCase(mPackageRenamed) || (Arrays.asList(IGNORED_PACKAGES).contains(packageOriginal) && ! Arrays.asList(ALLOWED_PACKAGES).contains(mPackageRenamed))) { LOGGER.info("Regular manifest package..."); } else { LOGGER.info("Renamed manifest package found! Replacing " + mPackageRenamed + " with " + packageOriginal); ResXmlPatcher.renameManifestPackage(new File(filePath), packageOriginal); } }
private void putPackageInfo(MetaInfo meta) throws AndrolibException { String renamed = getResTable().getPackageRenamed(); String original = getResTable().getPackageOriginal(); int id = getResTable().getPackageId(); try { id = getResTable().getPackage(renamed).getId(); } catch (UndefinedResObject ignored) {} if (Strings.isNullOrEmpty(original)) { return; } meta.packageInfo = new PackageInfo(); // only put rename-manifest-package into apktool.yml, if the change will be required if (!renamed.equalsIgnoreCase(original)) { meta.packageInfo.renameManifestPackage = renamed; } meta.packageInfo.forcedPackageId = String.valueOf(id); }
if (mResTable.getPackageOriginal() == null && mResTable.getPackageRenamed() == null) { mResTable.setSharedLibrary(true);
private void putPackageInfo(MetaInfo meta) throws AndrolibException { String renamed = getResTable().getPackageRenamed(); String original = getResTable().getPackageOriginal(); int id = getResTable().getPackageId(); try { id = getResTable().getPackage(renamed).getId(); } catch (UndefinedResObject ignored) { } if (original != null || original.isEmpty()) { return; } meta.packageInfo = new PackageInfo(); // only put rename-droidefense.sdk.manifest-package into apktool.yml, if the change will be required if (!renamed.equalsIgnoreCase(original)) { meta.packageInfo.renameManifestPackage = renamed; } meta.packageInfo.forcedPackageId = String.valueOf(id); }