Source:
public void build(ExtFile appDir, File outFile) throws BrutException { LOGGER.info("Using Apktool " + Androlib.getVersion()); MetaInfo meta = readMetaFile(appDir); apkOptions.isFramework = meta.isFrameworkApk; apkOptions.resourcesAreCompressed = meta.compressionType; apkOptions.doNotCompress = meta.doNotCompress; mAndRes.setSdkInfo(meta.sdkInfo); mAndRes.setPackageId(meta.packageInfo); mAndRes.setPackageRenamed(meta.packageInfo); mAndRes.setVersionInfo(meta.versionInfo); mAndRes.setSharedLibrary(meta.sharedLibrary); if (meta.sdkInfo != null && meta.sdkInfo.get("minSdkVersion") != null) mMinSdkVersion = Integer.parseInt(meta.sdkInfo.get("minSdkVersion")); if (outFile == null) { String outFileName = meta.apkFileName; outFile = new File(appDir, "dist" + File.separator + (outFileName == null ? "out.apk" : outFileName)); } new File(appDir, APK_DIRNAME).mkdirs(); buildSources(appDir); buildNonDefaultSources(appDir); File manifest = new File(appDir, "AndroidManifest.xml"); File manifestOriginal = new File(appDir, "AndroidManifest.xml.orig"); if (manifest.isFile() && manifest.exists()) { try { if (manifestOriginal.exists()) { manifestOriginal.delete(); } FileUtils.copyFile(manifest, manifestOriginal); ResXmlPatcher.fixingPublicAttrsInProviderAttributes(manifest); } catch (IOException ex) { throw new AndrolibException(ex.getMessage()); } } buildResources(appDir, meta.usesFramework); buildLib(appDir); buildLibs(appDir); buildCopyOriginalFiles(appDir); buildApk(appDir, outFile); buildUnknownFiles(appDir, outFile, meta); if (manifest.isFile() && manifest.exists()) { try { if (new File(appDir, "AndroidManifest.xml").delete()) { FileUtils.moveFile(manifestOriginal, manifest); } } catch (IOException ex) { throw new AndrolibException(ex.getMessage()); } } }

Target:
public void build(ExtFile appDir, File outFile) throws BrutException { LOGGER.info("Using Apktool " + Androlib.getVersion()); MetaInfo meta = readMetaFile(appDir); apkOptions.isFramework = meta.isFrameworkApk; apkOptions.resourcesAreCompressed = meta.compressionType; apkOptions.doNotCompress = meta.doNotCompress; mAndRes.setSdkInfo(meta.sdkInfo); mAndRes.setPackageId(meta.packageInfo); mAndRes.setPackageRenamed(meta.packageInfo); mAndRes.setVersionInfo(meta.versionInfo); mAndRes.setSharedLibrary(meta.sharedLibrary); if (meta.sdkInfo != null && meta.sdkInfo.get("minSdkVersion") != null) { mMinSdkVersion = Integer.parseInt(meta.sdkInfo.get("minSdkVersion")); } if (outFile == null) { String outFileName = meta.apkFileName; outFile = new File(appDir, "dist" + File.separator + (outFileName == null ? "out.apk" : outFileName)); } new File(appDir, APK_DIRNAME).mkdirs(); buildSources(appDir); buildNonDefaultSources(appDir); File manifest = new File(appDir, "AndroidManifest.xml"); File manifestOriginal = new File(appDir, "AndroidManifest.xml.orig"); if (manifest.isFile() && manifest.exists()) { try { if (manifestOriginal.exists()) { manifestOriginal.delete(); } FileUtils.copyFile(manifest, manifestOriginal); ResXmlPatcher.fixingPublicAttrsInProviderAttributes(manifest); } catch (IOException ex) { throw new AndrolibException(ex.getMessage()); } } buildResources(appDir, meta.usesFramework); buildLib(appDir); buildLibs(appDir); buildCopyOriginalFiles(appDir); buildApk(appDir, outFile); buildUnknownFiles(appDir, outFile, meta); if (manifest.isFile() && manifest.exists()) { try { if (new File(appDir, "AndroidManifest.xml").delete()) { FileUtils.moveFile(manifestOriginal, manifest); } } catch (IOException ex) { throw new AndrolibException(ex.getMessage()); } } }