aboutsummaryrefslogtreecommitdiff
path: root/create/src/com/android/tools/layoutlib/create/AsmGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'create/src/com/android/tools/layoutlib/create/AsmGenerator.java')
-rw-r--r--create/src/com/android/tools/layoutlib/create/AsmGenerator.java10
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);