diff --git a/dexlib/src/main/java/org/jf/dexlib/ClassDataItem.java b/dexlib/src/main/java/org/jf/dexlib/ClassDataItem.java index b7ee53b1..03745d98 100644 --- a/dexlib/src/main/java/org/jf/dexlib/ClassDataItem.java +++ b/dexlib/src/main/java/org/jf/dexlib/ClassDataItem.java @@ -30,6 +30,9 @@ package org.jf.dexlib; import org.jf.dexlib.Util.*; +import java.util.Arrays; +import java.util.Comparator; + public class ClassDataItem extends Item { private EncodedField[] staticFields; private EncodedField[] instanceFields; @@ -75,6 +78,13 @@ public class ClassDataItem extends Item { public static ClassDataItem getInternedClassDataItem(DexFile dexFile, EncodedField[] staticFields, EncodedField[] instanceFields, EncodedMethod[] directMethods, EncodedMethod[] virtualMethods) { + if (!dexFile.getInplace()) { + Arrays.sort(staticFields); + Arrays.sort(instanceFields); + Arrays.sort(directMethods); + Arrays.sort(virtualMethods); + } + ClassDataItem classDataItem = new ClassDataItem(dexFile, staticFields, instanceFields, directMethods, virtualMethods); return dexFile.ClassDataSection.intern(classDataItem);