Merge pull request #2068 from iBotPeaches/issue-2064

Fix: Support decoding raw "qmg" files
This commit is contained in:
Connor Tumbleson 2019-04-26 11:35:58 -04:00 committed by GitHub
commit 5199c98a71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 11 deletions

View File

@ -79,7 +79,7 @@ public class ResFileDecoder {
// check for raw 9patch images
for (String extension : RAW_9PATCH_IMAGE_EXTENSIONS) {
if (inFileName.toLowerCase().endsWith("." + extension)) {
copyRaw(inDir, outDir, outFileName);
copyRaw(inDir, outDir, inFileName, outFileName);
return;
}
}
@ -107,7 +107,7 @@ public class ResFileDecoder {
// check for raw image
for (String extension : RAW_IMAGE_EXTENSIONS) {
if (inFileName.toLowerCase().endsWith("." + extension)) {
copyRaw(inDir, outDir, outFileName);
copyRaw(inDir, outDir, inFileName, outFileName);
return;
}
}
@ -144,9 +144,10 @@ public class ResFileDecoder {
}
}
public void copyRaw(Directory inDir, Directory outDir, String filename) throws AndrolibException {
public void copyRaw(Directory inDir, Directory outDir, String inFilename,
String outFilename) throws AndrolibException {
try {
DirUtil.copyToDir(inDir, outDir, filename);
DirUtil.copyToDir(inDir, outDir, inFilename, outFilename);
} catch (DirectoryException ex) {
throw new AndrolibException(ex);
}
@ -168,6 +169,7 @@ public class ResFileDecoder {
private final static String[] RAW_IMAGE_EXTENSIONS = new String[] {
"m4a", // apple
"qmg", // samsung
};
private final static String[] RAW_9PATCH_IMAGE_EXTENSIONS = new String[] {

View File

@ -26,6 +26,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import static org.junit.Assert.*;
@ -94,6 +95,11 @@ public class BuildAndDecodeTest extends BaseTest {
compareXmlFiles("res/drawable/$avd_hide_password__0.xml");
}
@Test
public void samsungQmgFilesHandledTest() throws IOException, BrutException {
compareBinaryFolder("drawable-xhdpi", true);
}
@Test
public void confirmManifestStructureTest() throws BrutException {
compareXmlFiles("AndroidManifest.xml");

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -41,17 +41,19 @@ public class DirUtil {
public static void copyToDir(Directory in, Directory out, String fileName)
throws DirectoryException {
copyToDir(in, out, fileName, fileName);
}
public static void copyToDir(Directory in, Directory out, String inFile, String outFile)
throws DirectoryException {
try {
if (in.containsDir(fileName)) {
// TODO: remove before copying
in.getDir(fileName).copyToDir(out.createDir(fileName));
if (in.containsDir(inFile)) {
in.getDir(inFile).copyToDir(out.createDir(outFile));
} else {
BrutIO.copyAndClose(in.getFileInput(fileName),
out.getFileOutput(fileName));
BrutIO.copyAndClose(in.getFileInput(inFile), out.getFileOutput(outFile));
}
} catch (IOException ex) {
throw new DirectoryException(
"Error copying file: " + fileName, ex);
throw new DirectoryException("Error copying file: " + inFile, ex);
}
}