Merge branch 'realityJie-fix/uncompressed_files_bug'

This commit is contained in:
Connor Tumbleson 2019-11-19 06:55:41 -05:00
commit aedee6052f
No known key found for this signature in database
GPG Key ID: C3CC0A201EC7DA75

View File

@ -19,7 +19,6 @@ package brut.androlib;
import brut.androlib.meta.MetaInfo;
import brut.androlib.meta.UsesFramework;
import brut.androlib.res.AndrolibResources;
import brut.androlib.res.data.ResConfigFlags;
import brut.androlib.res.data.ResPackage;
import brut.androlib.res.data.ResTable;
import brut.androlib.res.data.ResUnknownFiles;
@ -42,7 +41,6 @@ import java.util.zip.ZipOutputStream;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
/**
* @author Ryszard Wiśniewski <brut.alll@gmail.com>
@ -168,15 +166,10 @@ public class Androlib {
String ext;
for (String file : files) {
if (isAPKFileNames(file) &&
unk.getCompressionLevel(file) == 0 &&
unk.getSize(file) != 0) {
if (isAPKFileNames(file) && unk.getCompressionLevel(file) == 0 && unk.getSize(file) != 0) {
ext = FilenameUtils.getExtension(file);
// If we don't have a png extension, but we have multiple "dots", we may have another iteration
// of OEM specific 9patch files. We need to record full path for these.
if (ext.isEmpty() || (!ext.equals("png") && StringUtils.countMatches(file, ".") > 1)) {
if (ext.isEmpty() || !NO_COMPRESS_PATTERN.matcher(ext).find()) {
ext = file;
}
if (!uncompressedFilesOrExts.contains(ext)) {
@ -485,7 +478,7 @@ public class Androlib {
ninePatch = null;
}
mAndRes.aaptPackage(apkFile, new File(appDir,
"AndroidManifest.xml"), new File(appDir, "res"),
"AndroidManifest.xml"), new File(appDir, "res"),
ninePatch, null, parseUsesFramework(usesFramework));
Directory tmpDir = new ExtFile(apkFile).getDirectory();
@ -547,7 +540,7 @@ public class Androlib {
}
mAndRes.aaptPackage(apkFile, new File(appDir,
"AndroidManifest.xml"), null, ninePatch, null,
"AndroidManifest.xml"), null, ninePatch, null,
parseUsesFramework(usesFramework));
Directory tmpDir = new ExtFile(apkFile).getDirectory();
@ -796,4 +789,7 @@ public class Androlib {
private final static String[] APK_STANDARD_ALL_FILENAMES = new String[] {
"classes.dex", "AndroidManifest.xml", "resources.arsc", "res", "r", "R",
"lib", "libs", "assets", "META-INF", "kotlin" };
private final static Pattern NO_COMPRESS_PATTERN = Pattern.compile("(" +
"jpg|jpeg|png|gif|wav|mp2|mp3|ogg|aac|mpg|mpeg|mid|midi|smf|jet|rtttl|imy|xmf|mp4|" +
"m4a|m4v|3gp|3gpp|3g2|3gpp2|amr|awb|wma|wmv|webm|mkv)$");
}