diff options
Diffstat (limited to 'create/src/com/android/tools/layoutlib/create/AsmGenerator.java')
-rw-r--r-- | create/src/com/android/tools/layoutlib/create/AsmGenerator.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/create/src/com/android/tools/layoutlib/create/AsmGenerator.java b/create/src/com/android/tools/layoutlib/create/AsmGenerator.java index 98055e3a90..55de0afe0f 100644 --- a/create/src/com/android/tools/layoutlib/create/AsmGenerator.java +++ b/create/src/com/android/tools/layoutlib/create/AsmGenerator.java @@ -94,6 +94,8 @@ public class AsmGenerator { private final Set<MethodReplacer> mMethodReplacers; private boolean mKeepAllNativeClasses; + /** A map { FQCN => set { field names } } which should have their final modifier removed */ + private final Map<String, Set<String>> mRemoveFinalModifierFields; /** * Creates a new generator that can generate the output JAR with the stubbed classes. @@ -218,6 +220,9 @@ public class AsmGenerator { mRenameStaticInitializerClasses = Arrays.stream(createInfo.getDeferredStaticInitializerClasses()).collect(Collectors.toSet()); + + mRemoveFinalModifierFields = new HashMap<>(); + addToMap(createInfo.getRemovedFinalModifierFields(), mRemoveFinalModifierFields); } /** @@ -427,6 +432,11 @@ public class AsmGenerator { cv = new DeferStaticInitializerClassAdapter(cv); } + Set<String> removeFinalModifierFields = mRemoveFinalModifierFields.get(className); + if (removeFinalModifierFields != null && !removeFinalModifierFields.isEmpty()) { + cv = new RemoveFinalModifierFieldClassAdapter(cv, removeFinalModifierFields); + } + // Make sure no class file has a version above 55 (corresponding to Java 11), // so that layoutlib can be run with JDK 11. cv = new ChangeFileVersionAdapter(mLog, 55, cv); |