diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java
index 078e153b..0c4aaf5f 100644
--- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java
+++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java
@@ -57,6 +57,8 @@ public class ResConfigFlags {
private final String mQualifiers;
+ private final int size;
+
public ResConfigFlags() {
mcc = 0;
mnc = 0;
@@ -81,6 +83,7 @@ public class ResConfigFlags {
screenLayout2 = 0;
isInvalid = false;
mQualifiers = "";
+ size = 0;
}
public ResConfigFlags(short mcc, short mnc, char[] language,
@@ -90,7 +93,7 @@ public class ResConfigFlags {
short sdkVersion, byte screenLayout, byte uiMode,
short smallestScreenWidthDp, short screenWidthDp,
short screenHeightDp, char[] localeScript, char[] localeVariant,
- byte screenLayout2, boolean isInvalid) {
+ byte screenLayout2, boolean isInvalid, int size) {
if (orientation < 0 || orientation > 3) {
LOGGER.warning("Invalid orientation value: " + orientation);
orientation = 0;
@@ -155,6 +158,7 @@ public class ResConfigFlags {
this.localeVariant = localeVariant;
this.screenLayout2 = screenLayout2;
this.isInvalid = isInvalid;
+ this.size = size;
mQualifiers = generateQualifiers();
}
@@ -169,10 +173,14 @@ public class ResConfigFlags {
if (mnc != MNC_ZERO) {
if (mnc != 0) {
ret.append("-mnc");
- if (mnc > 0 && mnc < 10) {
- ret.append(String.format("%02d", mnc));
+ if (size <= 32) {
+ if (mnc > 0 && mnc < 10) {
+ ret.append(String.format("%02d", mnc));
+ } else {
+ ret.append(String.format("%03d", mnc));
+ }
} else {
- ret.append(String.format("%03d", mnc));
+ ret.append(mnc);
}
}
} else {
diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java
index 1de6227f..e169bcd0 100644
--- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java
+++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java
@@ -354,7 +354,7 @@ public class ARSCDecoder {
orientation, touchscreen, density, keyboard, navigation,
inputFlags, screenWidth, screenHeight, sdkVersion,
screenLayout, uiMode, smallestScreenWidthDp, screenWidthDp,
- screenHeightDp, localeScript, localeVariant, screenLayout2, isInvalid);
+ screenHeightDp, localeScript, localeVariant, screenLayout2, isInvalid, size);
}
private char[] unpackLanguageOrRegion(byte in0, byte in1, char base) throws AndrolibException {
diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java
index ff75096a..e6501655 100644
--- a/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java
+++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java
@@ -177,14 +177,14 @@ public class BuildAndDecodeTest {
@Test
public void qualifiersTest() throws BrutException {
- compareValuesFiles("values-mcc004-mnc04-en-rUS-ldrtl-sw100dp-w200dp-h300dp"
+ compareValuesFiles("values-mcc004-mnc4-en-rUS-ldrtl-sw100dp-w200dp-h300dp"
+ "-xlarge-long-round-land-desk-night-xhdpi-finger-keyssoft-12key"
+ "-navhidden-dpad/strings.xml");
}
@Test
public void shortendedMncTest() throws BrutException {
- compareValuesFiles("values-mcc001-mnc01/strings.xml");
+ compareValuesFiles("values-mcc001-mnc1/strings.xml");
}
@Test
@@ -192,6 +192,16 @@ public class BuildAndDecodeTest {
compareValuesFiles("values-mnc1/strings.xml");
}
+ @Test
+ public void shortMncv2Test() throws BrutException {
+ compareValuesFiles("values-mcc238-mnc6/strings.xml");
+ }
+
+ @Test
+ public void longMncTest() throws BrutException {
+ compareValuesFiles("values-mcc238-mnc870/strings.xml");
+ }
+
@Test
public void anyDpiTest() throws BrutException, IOException {
compareValuesFiles("values-watch/strings.xml");
diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/TestUtils.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/TestUtils.java
index bb0a9c91..33cdcf2b 100644
--- a/brut.apktool/apktool-lib/src/test/java/brut/androlib/TestUtils.java
+++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/TestUtils.java
@@ -16,11 +16,13 @@
package brut.androlib;
+import brut.androlib.res.AndrolibResources;
import brut.common.BrutException;
import brut.directory.*;
import java.io.*;
import java.net.URL;
import java.net.URLDecoder;
+import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
import org.custommonkey.xmlunit.ElementQualifier;
diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001-mnc01/strings.xml b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001-mnc1/strings.xml
similarity index 100%
rename from brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001-mnc01/strings.xml
rename to brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc001-mnc1/strings.xml
diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc004-mnc04-en-rUS-ldrtl-sw100dp-w200dp-h300dp-xlarge-long-round-land-desk-night-xhdpi-finger-keyssoft-12key-navhidden-dpad/strings.xml b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc004-mnc4-en-rUS-ldrtl-sw100dp-w200dp-h300dp-xlarge-long-round-land-desk-night-xhdpi-finger-keyssoft-12key-navhidden-dpad/strings.xml
similarity index 100%
rename from brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc004-mnc04-en-rUS-ldrtl-sw100dp-w200dp-h300dp-xlarge-long-round-land-desk-night-xhdpi-finger-keyssoft-12key-navhidden-dpad/strings.xml
rename to brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc004-mnc4-en-rUS-ldrtl-sw100dp-w200dp-h300dp-xlarge-long-round-land-desk-night-xhdpi-finger-keyssoft-12key-navhidden-dpad/strings.xml
diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc238-mnc6/strings.xml b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc238-mnc6/strings.xml
new file mode 100644
index 00000000..35eaf5ef
--- /dev/null
+++ b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc238-mnc6/strings.xml
@@ -0,0 +1,4 @@
+
+
+ test1
+
\ No newline at end of file
diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc238-mnc870/strings.xml b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc238-mnc870/strings.xml
new file mode 100644
index 00000000..35eaf5ef
--- /dev/null
+++ b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/values-mcc238-mnc870/strings.xml
@@ -0,0 +1,4 @@
+
+
+ test1
+
\ No newline at end of file