diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedArrayPool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedArrayPool.java index 60afc609..9f1194c3 100644 --- a/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedArrayPool.java +++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedArrayPool.java @@ -113,6 +113,13 @@ public class EncodedArrayPool { public static class Key implements Comparable { private final Set fields; private final int size; + + private static class FieldComparator implements Comparator { + @Override + public int compare(Field o1, Field o2) { + return o1.compareTo(o2); + } + } private static final Function GET_INITIAL_VALUE = new Function() { @@ -133,9 +140,9 @@ public class EncodedArrayPool { @Nullable public static Key of(@Nonnull ClassDef classDef) { - Set fields = classDef.getFields(); + Set fields = FluentIterable.from(classDef.getFields()).toImmutableSortedSet(new FieldComparator()); - Iterable staticFields = FluentIterable.from(classDef.getFields()).filter(IS_STATIC_FIELD); + Iterable staticFields = FluentIterable.from(fields).filter(IS_STATIC_FIELD); int lastIndex = CollectionUtils.lastIndexOf(staticFields, HAS_INITIALIZER); if (lastIndex > -1) {