getExportedSymbolList() {
+ return exportedSymbol_;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public java.util.List extends com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.SymbolOrBuilder>
+ getExportedSymbolOrBuilderList() {
+ return exportedSymbol_;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public int getExportedSymbolCount() {
+ return exportedSymbol_.size();
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol getExportedSymbol(int index) {
+ return exportedSymbol_.get(index);
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.SymbolOrBuilder getExportedSymbolOrBuilder(
+ int index) {
+ return exportedSymbol_.get(index);
+ }
+ private void ensureExportedSymbolIsMutable() {
+ if (!exportedSymbol_.isModifiable()) {
+ exportedSymbol_ =
+ com.google.protobuf.GeneratedMessageLite.mutableCopy(exportedSymbol_);
+ }
+ }
+
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void setExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureExportedSymbolIsMutable();
+ exportedSymbol_.set(index, value);
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void setExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol.Builder builderForValue) {
+ ensureExportedSymbolIsMutable();
+ exportedSymbol_.set(index, builderForValue.build());
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void addExportedSymbol(com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureExportedSymbolIsMutable();
+ exportedSymbol_.add(value);
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void addExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureExportedSymbolIsMutable();
+ exportedSymbol_.add(index, value);
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void addExportedSymbol(
+ com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol.Builder builderForValue) {
+ ensureExportedSymbolIsMutable();
+ exportedSymbol_.add(builderForValue.build());
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void addExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol.Builder builderForValue) {
+ ensureExportedSymbolIsMutable();
+ exportedSymbol_.add(index, builderForValue.build());
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void addAllExportedSymbol(
+ java.lang.Iterable extends com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol> values) {
+ ensureExportedSymbolIsMutable();
+ com.google.protobuf.AbstractMessageLite.addAll(
+ values, exportedSymbol_);
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void clearExportedSymbol() {
+ exportedSymbol_ = emptyProtobufList();
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ private void removeExportedSymbol(int index) {
+ ensureExportedSymbolIsMutable();
+ exportedSymbol_.remove(index);
+ }
+
+ public static final int XML_ROOT_FIELD_NUMBER = 5;
+ private com.didiglobal.booster.aapt2.Resources.XmlNode xmlRoot_;
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public boolean hasXmlRoot() {
+ return xmlRoot_ != null;
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public com.didiglobal.booster.aapt2.Resources.XmlNode getXmlRoot() {
+ return xmlRoot_ == null ? com.didiglobal.booster.aapt2.Resources.XmlNode.getDefaultInstance() : xmlRoot_;
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ private void setXmlRoot(com.didiglobal.booster.aapt2.Resources.XmlNode value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ xmlRoot_ = value;
+
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ private void setXmlRoot(
+ com.didiglobal.booster.aapt2.Resources.XmlNode.Builder builderForValue) {
+ xmlRoot_ = builderForValue.build();
+
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ private void mergeXmlRoot(com.didiglobal.booster.aapt2.Resources.XmlNode value) {
+ if (xmlRoot_ != null &&
+ xmlRoot_ != com.didiglobal.booster.aapt2.Resources.XmlNode.getDefaultInstance()) {
+ xmlRoot_ =
+ com.didiglobal.booster.aapt2.Resources.XmlNode.newBuilder(xmlRoot_).mergeFrom(value).buildPartial();
+ } else {
+ xmlRoot_ = value;
+ }
+
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ private void clearXmlRoot() { xmlRoot_ = null;
+
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!resourceName_.isEmpty()) {
+ output.writeString(1, getResourceName());
+ }
+ if (config_ != null) {
+ output.writeMessage(2, getConfig());
+ }
+ if (!sourcePath_.isEmpty()) {
+ output.writeString(3, getSourcePath());
+ }
+ for (int i = 0; i < exportedSymbol_.size(); i++) {
+ output.writeMessage(4, exportedSymbol_.get(i));
+ }
+ if (xmlRoot_ != null) {
+ output.writeMessage(5, getXmlRoot());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!resourceName_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeStringSize(1, getResourceName());
+ }
+ if (config_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, getConfig());
+ }
+ if (!sourcePath_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeStringSize(3, getSourcePath());
+ }
+ for (int i = 0; i < exportedSymbol_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(4, exportedSymbol_.get(i));
+ }
+ if (xmlRoot_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(5, getXmlRoot());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, data);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, data, extensionRegistry);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, data);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, data, extensionRegistry);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, data);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, data, extensionRegistry);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, input);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, input, extensionRegistry);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return parseDelimitedFrom(DEFAULT_INSTANCE, input);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, input);
+ }
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageLite.parseFrom(
+ DEFAULT_INSTANCE, input, extensionRegistry);
+ }
+
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+
+ /**
+ *
+ * The top level message representing an external resource file (layout XML, PNG, etc).
+ * This is used to represent a compiled file before it is linked. Only useful to aapt2.
+ *
+ *
+ * Protobuf type {@code aapt.pb.internal.CompiledFileLegacy}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageLite.Builder<
+ com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy, Builder> implements
+ // @@protoc_insertion_point(builder_implements:aapt.pb.internal.CompiledFileLegacy)
+ com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacyOrBuilder {
+ // Construct using com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.newBuilder()
+ private Builder() {
+ super(DEFAULT_INSTANCE);
+ }
+
+
+ /**
+ *
+ * The name of the resource (in the form package:type/name).
+ *
+ *
+ * string resource_name = 1;
+ */
+ public java.lang.String getResourceName() {
+ return instance.getResourceName();
+ }
+ /**
+ *
+ * The name of the resource (in the form package:type/name).
+ *
+ *
+ * string resource_name = 1;
+ */
+ public com.google.protobuf.ByteString
+ getResourceNameBytes() {
+ return instance.getResourceNameBytes();
+ }
+ /**
+ *
+ * The name of the resource (in the form package:type/name).
+ *
+ *
+ * string resource_name = 1;
+ */
+ public Builder setResourceName(
+ java.lang.String value) {
+ copyOnWrite();
+ instance.setResourceName(value);
+ return this;
+ }
+ /**
+ *
+ * The name of the resource (in the form package:type/name).
+ *
+ *
+ * string resource_name = 1;
+ */
+ public Builder clearResourceName() {
+ copyOnWrite();
+ instance.clearResourceName();
+ return this;
+ }
+ /**
+ *
+ * The name of the resource (in the form package:type/name).
+ *
+ *
+ * string resource_name = 1;
+ */
+ public Builder setResourceNameBytes(
+ com.google.protobuf.ByteString value) {
+ copyOnWrite();
+ instance.setResourceNameBytes(value);
+ return this;
+ }
+
+ /**
+ *
+ * The configuration for which the resource is defined.
+ *
+ *
+ * .aapt.pb.internal.ConfigDescription config = 2;
+ */
+ public boolean hasConfig() {
+ return instance.hasConfig();
+ }
+ /**
+ *
+ * The configuration for which the resource is defined.
+ *
+ *
+ * .aapt.pb.internal.ConfigDescription config = 2;
+ */
+ public com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.ConfigDescription getConfig() {
+ return instance.getConfig();
+ }
+ /**
+ *
+ * The configuration for which the resource is defined.
+ *
+ *
+ * .aapt.pb.internal.ConfigDescription config = 2;
+ */
+ public Builder setConfig(com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.ConfigDescription value) {
+ copyOnWrite();
+ instance.setConfig(value);
+ return this;
+ }
+ /**
+ *
+ * The configuration for which the resource is defined.
+ *
+ *
+ * .aapt.pb.internal.ConfigDescription config = 2;
+ */
+ public Builder setConfig(
+ com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.ConfigDescription.Builder builderForValue) {
+ copyOnWrite();
+ instance.setConfig(builderForValue);
+ return this;
+ }
+ /**
+ *
+ * The configuration for which the resource is defined.
+ *
+ *
+ * .aapt.pb.internal.ConfigDescription config = 2;
+ */
+ public Builder mergeConfig(com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.ConfigDescription value) {
+ copyOnWrite();
+ instance.mergeConfig(value);
+ return this;
+ }
+ /**
+ *
+ * The configuration for which the resource is defined.
+ *
+ *
+ * .aapt.pb.internal.ConfigDescription config = 2;
+ */
+ public Builder clearConfig() { copyOnWrite();
+ instance.clearConfig();
+ return this;
+ }
+
+ /**
+ *
+ * The filesystem path to where the source file originated.
+ * Mainly used to display helpful error messages.
+ *
+ *
+ * string source_path = 3;
+ */
+ public java.lang.String getSourcePath() {
+ return instance.getSourcePath();
+ }
+ /**
+ *
+ * The filesystem path to where the source file originated.
+ * Mainly used to display helpful error messages.
+ *
+ *
+ * string source_path = 3;
+ */
+ public com.google.protobuf.ByteString
+ getSourcePathBytes() {
+ return instance.getSourcePathBytes();
+ }
+ /**
+ *
+ * The filesystem path to where the source file originated.
+ * Mainly used to display helpful error messages.
+ *
+ *
+ * string source_path = 3;
+ */
+ public Builder setSourcePath(
+ java.lang.String value) {
+ copyOnWrite();
+ instance.setSourcePath(value);
+ return this;
+ }
+ /**
+ *
+ * The filesystem path to where the source file originated.
+ * Mainly used to display helpful error messages.
+ *
+ *
+ * string source_path = 3;
+ */
+ public Builder clearSourcePath() {
+ copyOnWrite();
+ instance.clearSourcePath();
+ return this;
+ }
+ /**
+ *
+ * The filesystem path to where the source file originated.
+ * Mainly used to display helpful error messages.
+ *
+ *
+ * string source_path = 3;
+ */
+ public Builder setSourcePathBytes(
+ com.google.protobuf.ByteString value) {
+ copyOnWrite();
+ instance.setSourcePathBytes(value);
+ return this;
+ }
+
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public java.util.List getExportedSymbolList() {
+ return java.util.Collections.unmodifiableList(
+ instance.getExportedSymbolList());
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public int getExportedSymbolCount() {
+ return instance.getExportedSymbolCount();
+ }/**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol getExportedSymbol(int index) {
+ return instance.getExportedSymbol(index);
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder setExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol value) {
+ copyOnWrite();
+ instance.setExportedSymbol(index, value);
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder setExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol.Builder builderForValue) {
+ copyOnWrite();
+ instance.setExportedSymbol(index, builderForValue);
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder addExportedSymbol(com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol value) {
+ copyOnWrite();
+ instance.addExportedSymbol(value);
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder addExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol value) {
+ copyOnWrite();
+ instance.addExportedSymbol(index, value);
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder addExportedSymbol(
+ com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol.Builder builderForValue) {
+ copyOnWrite();
+ instance.addExportedSymbol(builderForValue);
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder addExportedSymbol(
+ int index, com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol.Builder builderForValue) {
+ copyOnWrite();
+ instance.addExportedSymbol(index, builderForValue);
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder addAllExportedSymbol(
+ java.lang.Iterable extends com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol> values) {
+ copyOnWrite();
+ instance.addAllExportedSymbol(values);
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder clearExportedSymbol() {
+ copyOnWrite();
+ instance.clearExportedSymbol();
+ return this;
+ }
+ /**
+ *
+ * Any symbols this file auto-generates/exports (eg. @+id/foo in an XML file).
+ *
+ *
+ * repeated .aapt.pb.internal.CompiledFileLegacy.Symbol exported_symbol = 4;
+ */
+ public Builder removeExportedSymbol(int index) {
+ copyOnWrite();
+ instance.removeExportedSymbol(index);
+ return this;
+ }
+
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public boolean hasXmlRoot() {
+ return instance.hasXmlRoot();
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public com.didiglobal.booster.aapt2.Resources.XmlNode getXmlRoot() {
+ return instance.getXmlRoot();
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public Builder setXmlRoot(com.didiglobal.booster.aapt2.Resources.XmlNode value) {
+ copyOnWrite();
+ instance.setXmlRoot(value);
+ return this;
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public Builder setXmlRoot(
+ com.didiglobal.booster.aapt2.Resources.XmlNode.Builder builderForValue) {
+ copyOnWrite();
+ instance.setXmlRoot(builderForValue);
+ return this;
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public Builder mergeXmlRoot(com.didiglobal.booster.aapt2.Resources.XmlNode value) {
+ copyOnWrite();
+ instance.mergeXmlRoot(value);
+ return this;
+ }
+ /**
+ *
+ * If this is a compiled XML file, this is the root node.
+ *
+ *
+ * .aapt.pb.XmlNode xml_root = 5;
+ */
+ public Builder clearXmlRoot() { copyOnWrite();
+ instance.clearXmlRoot();
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:aapt.pb.internal.CompiledFileLegacy)
+ }
+ @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+ protected final java.lang.Object dynamicMethod(
+ com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+ java.lang.Object arg0, java.lang.Object arg1) {
+ switch (method) {
+ case NEW_MUTABLE_INSTANCE: {
+ return new com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy();
+ }
+ case IS_INITIALIZED: {
+ return DEFAULT_INSTANCE;
+ }
+ case MAKE_IMMUTABLE: {
+ exportedSymbol_.makeImmutable();
+ return null;
+ }
+ case NEW_BUILDER: {
+ return new Builder();
+ }
+ case VISIT: {
+ Visitor visitor = (Visitor) arg0;
+ com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy other = (com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy) arg1;
+ resourceName_ = visitor.visitString(!resourceName_.isEmpty(), resourceName_,
+ !other.resourceName_.isEmpty(), other.resourceName_);
+ config_ = visitor.visitMessage(config_, other.config_);
+ sourcePath_ = visitor.visitString(!sourcePath_.isEmpty(), sourcePath_,
+ !other.sourcePath_.isEmpty(), other.sourcePath_);
+ exportedSymbol_= visitor.visitList(exportedSymbol_, other.exportedSymbol_);
+ xmlRoot_ = visitor.visitMessage(xmlRoot_, other.xmlRoot_);
+ if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
+ .INSTANCE) {
+ bitField0_ |= other.bitField0_;
+ }
+ return this;
+ }
+ case MERGE_FROM_STREAM: {
+ com.google.protobuf.CodedInputStream input =
+ (com.google.protobuf.CodedInputStream) arg0;
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry =
+ (com.google.protobuf.ExtensionRegistryLite) arg1;
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownField(tag, input)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ resourceName_ = s;
+ break;
+ }
+ case 18: {
+ com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.ConfigDescription.Builder subBuilder = null;
+ if (config_ != null) {
+ subBuilder = config_.toBuilder();
+ }
+ config_ = input.readMessage(com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.ConfigDescription.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(config_);
+ config_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ case 26: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ sourcePath_ = s;
+ break;
+ }
+ case 34: {
+ if (!exportedSymbol_.isModifiable()) {
+ exportedSymbol_ =
+ com.google.protobuf.GeneratedMessageLite.mutableCopy(exportedSymbol_);
+ }
+ exportedSymbol_.add(
+ input.readMessage(com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.Symbol.parser(), extensionRegistry));
+ break;
+ }
+ case 42: {
+ com.didiglobal.booster.aapt2.Resources.XmlNode.Builder subBuilder = null;
+ if (xmlRoot_ != null) {
+ subBuilder = xmlRoot_.toBuilder();
+ }
+ xmlRoot_ = input.readMessage(com.didiglobal.booster.aapt2.Resources.XmlNode.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(xmlRoot_);
+ xmlRoot_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw new RuntimeException(e.setUnfinishedMessage(this));
+ } catch (java.io.IOException e) {
+ throw new RuntimeException(
+ new com.google.protobuf.InvalidProtocolBufferException(
+ e.getMessage()).setUnfinishedMessage(this));
+ } finally {
+ }
+ }
+ // fall through
+ case GET_DEFAULT_INSTANCE: {
+ return DEFAULT_INSTANCE;
+ }
+ case GET_PARSER: {
+ if (PARSER == null) { synchronized (com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy.class) {
+ if (PARSER == null) {
+ PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
+ }
+ }
+ }
+ return PARSER;
+ }
+ }
+ throw new UnsupportedOperationException();
+ }
+
+
+ // @@protoc_insertion_point(class_scope:aapt.pb.internal.CompiledFileLegacy)
+ private static final com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new CompiledFileLegacy();
+ DEFAULT_INSTANCE.makeImmutable();
+ }
+
+ public static com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy.CompiledFileLegacy getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static volatile com.google.protobuf.Parser PARSER;
+
+ public static com.google.protobuf.Parser parser() {
+ return DEFAULT_INSTANCE.getParserForType();
+ }
+ }
+
+
+ static {
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt/Configuration.kt b/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt/Configuration.kt
new file mode 100644
index 000000000..80f6d78f3
--- /dev/null
+++ b/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt/Configuration.kt
@@ -0,0 +1,372 @@
+package com.didiglobal.booster.aapt
+
+/**
+ * @author johnsonlee
+ * @see https://android.googlesource.com/platform/frameworks/base/+/master/libs/androidfw/include/androidfw/ResourceTypes.h
+ */
+class Configuration {
+
+ var size: Int = 0
+
+ val imsi = Imsi()
+
+ val locale = Locale()
+
+ val screenType = ScreenType()
+
+ val input = Input()
+
+ val screenSize = ScreenSize()
+
+ val version = Version()
+
+ val screenConfig = ScreenConfig()
+
+ val screenSizeDp = ScreenSize()
+
+ /**
+ * The ISO-15924 short name for the script corresponding to this
+ * configuration. (eg. Hant, Latn, etc.). Interpreted in conjunction
+ * with the locale field.
+ */
+ val localeScript = ByteArray(4)
+
+ /**
+ * A single BCP-47 variant subtag. Will vary in length between 4 and 8
+ * chars. Interpreted in conjunction with the locale field.
+ */
+ val localeVariant = ByteArray(8)
+
+ val screenConfig2 = ScreenConfig2()
+
+ class Imsi {
+
+ /**
+ * Mobile country code (from SIM). 0 means "any"
+ */
+ var mcc: Short = 0
+
+ /**
+ * Mobile network code (from SIM). 0 means "any".
+ */
+ var mnc: Short = 0
+ }
+
+ class Locale {
+
+ /**
+ * This field can take three different forms:
+ *
+ *
+ * * \0\0 means "any".
+ * * Two 7 bit ascii values interpreted as ISO-639-1 language
+ * codes ('fr', 'en' etc. etc.). The high bit for both bytes is
+ * zero.
+ * * A single 16 bit little endian packed value representing an
+ * ISO-639-2 3 letter language code. This will be of the form:
+ *
+ *
+ * { 1, t, t, t, t, t, s, s, s, s, s, f, f, f, f, f }
+
*
+ *
+ * bit[0, 4] = first letter of the language code
+ * bit[5, 9] = second letter of the language code
+ * bit[10, 14] = third letter of the language code.
+ * bit[15] = 1 always
+ *
+ *
+ *
+ * For backwards compatibility, languages that have unambiguous two
+ * letter codes are represented in that format.
+ *
+ * The layout is always bigendian irrespective of the runtime
+ * architecture.
+ */
+ val language = ByteArray(2)
+
+ /**
+ * This field can take three different forms:
+ *
+ *
+ * * \0\0 means "any".
+ * * Two 7 bit ascii values interpreted as 2 letter region codes
+ * ('US', 'GB' etc.). The high bit for both bytes is zero.
+ * * An UN M.49 3 digit region code. For simplicity, these are
+ * packed in the same manner as the language codes, though we should
+ * need only 10 bits to represent them, instead of the 15.
+ *
+ *
+ * he layout is always bigendian irrespective of the runtime
+ * architecture.
+ */
+ val country = ByteArray(2)
+
+ val isDefined: Boolean
+ get() = this.language[0].toInt() == 0 && this.language[1].toInt() == 0 && this.country[0].toInt() == 0 && this.country[1].toInt() == 0
+ }
+
+ class ScreenType {
+
+ var orientation: Byte = 0
+ var touchscreen: Byte = 0
+ var density: Short = 0
+
+ companion object {
+
+ /**
+ * Orientation: not specified
+ */
+ const val ORIENTATION_ANY = 0x0000
+ const val ORIENTATION_PORT = 0x0001
+ const val ORIENTATION_LAND = 0x0002
+ const val ORIENTATION_SQUARE = 0x0003
+
+ const val TOUCHSCREEN_ANY = 0x0000
+ const val TOUCHSCREEN_NOTOUCH = 0x0001
+ const val TOUCHSCREEN_STYLUS = 0x0002
+ const val TOUCHSCREEN_FINGER = 0x0003
+
+ const val DENSITY_DEFAULT: Short = 0
+ const val DENSITY_LOW: Short = 120
+ const val DENSITY_MEDIUM: Short = 160
+ const val DENSITY_TV: Short = 213
+ const val DENSITY_HIGH: Short = 240
+ const val DENSITY_XHIGH: Short = 320
+ const val DENSITY_XXHIGH: Short = 480
+ const val DENSITY_XXXHIGH: Short = 640
+ const val DENSITY_ANY = 0xfffe.toShort()
+ const val DENSITY_NONE = 0xffff.toShort()
+
+ const val KEYBOARD_ANY = 0x0000
+ const val KEYBOARD_NOKEYS = 0x0001
+ const val KEYBOARD_QWERTY = 0x0002
+ const val KEYBOARD_12KEY = 0x0003
+
+ const val NAVIGATION_ANY = 0x0000
+ const val NAVIGATION_NONAV = 0x0001
+ const val NAVIGATION_DPAD = 0x0002
+ const val NAVIGATION_TRACKBALL = 0x0003
+ const val NAVIGATION_WHEEL = 0x0004
+
+ const val KEYSHIDDEN_ANY = 0x0000
+ const val KEYSHIDDEN_NO = 0x0001
+ const val KEYSHIDDEN_YES = 0x0002
+ const val KEYSHIDDEN_SOFT = 0x0003
+
+ const val NAVHIDDEN_ANY = 0x0000
+ const val NAVHIDDEN_NO = 0x0001
+ const val NAVHIDDEN_YES = 0x0002
+
+ const val SCREENWIDTH_ANY = 0x0000
+
+ const val SCREENHEIGHT_ANY = 0x0000
+
+ const val SDKVERSION_ANY = 0x0000
+
+ const val MINORVERSION_ANY = 0x0000
+
+ const val SCREENSIZE_ANY = 0x00
+ const val SCREENSIZE_SMALL = 0x01
+ const val SCREENSIZE_NORMAL = 0x02
+ const val SCREENSIZE_LARGE = 0x03
+ const val SCREENSIZE_XLARGE = 0x04
+ }
+ }
+
+ class Input {
+ var keyboard: Byte = 0
+ var navigation: Byte = 0
+ var flags: Byte = 0
+ var pad0: Byte = 0
+ }
+
+ class ScreenSize {
+ var width: Short = 0
+ var height: Short = 0
+ }
+
+ class ScreenConfig {
+ var layout: Byte = 0
+ var uiMode: Byte = 0
+ var smallestWidthDp: Short = 0
+ }
+
+ class ScreenConfig2 {
+ /**
+ * Contains round/notround qualifier
+ */
+ var layout: Byte = 0
+ /**
+ * Wide-gamut, HDR, etc.
+ */
+ var colorMode: Byte = 0
+ /**
+ * Reserved padding
+ */
+ var pad2: Short = 0
+ }
+
+ class Version {
+ var sdk: Short = 0
+ var minor: Short = 0 // always 0
+ }
+
+ fun unpackLanguageOrRegion(data: ByteArray, base: Byte): ByteArray {
+ if (0 != data[0].toInt() and 0x80) {
+ val first = (data[1].toInt() and 0x1f).toByte()
+ val second = ((data[1].toInt() and 0xe0 shr 5) + (data[0].toInt() and 0x03 shl 3)).toByte()
+ val third = (data[0].toInt() and 0x7c shr 2).toByte()
+ return byteArrayOf((first + base).toByte(), (second + base).toByte(), (third + base).toByte())
+ }
+
+ return if (0 != data[0].toInt()) {
+ byteArrayOf(data[0], data[1])
+ } else ByteArray(0)
+
+ }
+
+ fun unpackLanguage(): ByteArray {
+ return unpackLanguageOrRegion(this.locale.language, 0x61.toByte())
+ }
+
+ fun unpackRegion(): ByteArray {
+ return unpackLanguageOrRegion(this.locale.country, 0x30.toByte())
+ }
+
+ fun appendLocaleDir(out: StringBuilder) {
+ if (0 != this.locale.language[0].toInt()) {
+ return
+ }
+
+ if (0 == this.localeScript[0].toInt() && 0 == this.localeVariant[0].toInt()) {
+ if (out.isNotEmpty()) {
+ out.append("-")
+ }
+
+ out.append(String(unpackLanguage()))
+
+ if (0 != this.locale.country[0].toInt()) {
+ out.append("-r")
+ out.append(String(unpackRegion()))
+ }
+
+ return
+ }
+
+ if (out.isNotEmpty()) {
+ out.append("-")
+ }
+
+ out.append("b+")
+ out.append(String(unpackLanguage()))
+
+ if (0 != this.localeScript[0].toInt()) {
+ out.append("+")
+ out.append(String(this.localeScript))
+ }
+
+ if (0 != this.locale.country[0].toInt()) {
+ out.append("+")
+ out.append(String(unpackRegion()))
+ }
+
+ if (0 != this.localeVariant[0].toInt()) {
+ out.append("+")
+ out.append(String(this.localeVariant))
+ }
+ }
+
+ override fun toString(): String {
+ val res = StringBuilder()
+
+ if (this.imsi.mcc.toInt() != 0) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+ res.append(String.format("mcc%d", this.imsi.mcc))
+ }
+
+ if (this.imsi.mnc.toInt() != 0) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+ res.append(String.format("mnc%d", this.imsi.mnc))
+ }
+
+ appendLocaleDir(res)
+
+ if (this.screenConfig.smallestWidthDp.toInt() != 0) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+ res.append(String.format("sw%ddp", this.screenConfig.smallestWidthDp))
+ }
+
+ if (this.screenSizeDp.width.toInt() != 0) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+ res.append(String.format("w%ddp", this.screenSizeDp.width))
+ }
+
+ if (this.screenSizeDp.height.toInt() != 0) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+ res.append(String.format("h%ddp", this.screenSizeDp.width))
+ }
+
+ if (this.screenType.orientation.toInt() != ScreenType.ORIENTATION_ANY) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+
+ when (this.screenType.orientation.toInt()) {
+ ScreenType.ORIENTATION_PORT -> res.append("port")
+ ScreenType.ORIENTATION_LAND -> res.append("land")
+ ScreenType.ORIENTATION_SQUARE -> res.append("square")
+ else -> res.append(String.format("orientation=%d", this.screenType.orientation))
+ }
+ }
+
+ if (this.screenType.density != ScreenType.DENSITY_DEFAULT) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+
+ val density = this.screenType.density
+
+ when (density) {
+ ScreenType.DENSITY_LOW -> res.append("ldpi")
+ ScreenType.DENSITY_MEDIUM -> res.append("mdpi")
+ ScreenType.DENSITY_TV -> res.append("tvdpi")
+ ScreenType.DENSITY_HIGH -> res.append("hdpi")
+ ScreenType.DENSITY_XHIGH -> res.append("xhdpi")
+ ScreenType.DENSITY_XXHIGH -> res.append("xxhdpi")
+ ScreenType.DENSITY_XXXHIGH -> res.append("xxxhdpi")
+ ScreenType.DENSITY_NONE -> res.append("nodpi")
+ ScreenType.DENSITY_ANY -> res.append("anydpi")
+ else -> res.append(String.format("%ddpi", density))
+ }
+ }
+
+ if (this.screenSize.width.toInt() != 0 || this.screenSize.height.toInt() != 0) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+ res.append(String.format("%dx%d", this.screenSize.width, this.screenSize.height))
+ }
+
+ if (this.version.sdk.toInt() != 0 || this.version.minor.toInt() != 0) {
+ if (res.isNotEmpty()) {
+ res.append("-")
+ }
+ res.append(String.format("v%d", this.version.sdk))
+ if (this.version.minor.toInt() != 0) {
+ res.append(String.format(".%d", this.version.minor))
+ }
+ }
+
+ return if (res.isEmpty()) "" else res.toString()
+ }
+}
diff --git a/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Container.kt b/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Container.kt
index 9d709c529..76c6d54e6 100644
--- a/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Container.kt
+++ b/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Container.kt
@@ -1,5 +1,7 @@
package com.didiglobal.booster.aapt2
+import com.didiglobal.booster.aapt.Configuration
+import java.io.File
import java.nio.ByteBuffer
/**
@@ -9,6 +11,14 @@ class Aapt2Container(val header: Header, private vararg val _entries: Entry<*>)
data class Header(val magic: Int = MAGIC, val version: Int = 1, val count: Int = 1)
+ data class Metadata(val resourceName: String, val sourcePath: String, val config: Configuration) {
+
+ val sourceFile = File(sourcePath)
+
+ val resourcePath = "${sourceFile.parentFile.name}${File.separatorChar}${sourceFile.name}"
+
+ }
+
abstract class Entry(val type: Int, val data: T)
open class ResTable(data: Resources.ResourceTable) : Entry(RES_TABLE, data)
diff --git a/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Parser.kt b/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Parser.kt
index 33eb00aa9..6ea7ae637 100644
--- a/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Parser.kt
+++ b/booster-aapt2/src/main/kotlin/com/didiglobal/booster/aapt2/Aapt2Parser.kt
@@ -1,11 +1,14 @@
package com.didiglobal.booster.aapt2
+import com.didiglobal.booster.aapt.Configuration
import com.didiglobal.booster.aapt2.Aapt2Container.Entry
import com.didiglobal.booster.aapt2.Aapt2Container.Header
+import com.didiglobal.booster.aapt2.Aapt2Container.Metadata
import com.didiglobal.booster.aapt2.Aapt2Container.Png
import com.didiglobal.booster.aapt2.Aapt2Container.ResFile
import com.didiglobal.booster.aapt2.Aapt2Container.ResTable
import com.didiglobal.booster.aapt2.Aapt2Container.Xml
+import com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy
import java.io.File
val File.header: Header
@@ -13,24 +16,93 @@ val File.header: Header
parser.parseHeader()
}
-val File.metadata: ResourcesInternal.CompiledFile
+val File.metadata: Metadata
get() = BinaryParser(this).use { parser ->
- parser.parseHeader()
- val type = parser.readInt()
- val length = parser.readLong()
-
- return when (type) {
- RES_FILE -> {
- val headerSize = parser.readInt()
- val dataSize = parser.readLong()
- parser.parse {
- ResourcesInternal.CompiledFile.parseFrom(parser.readBytes(headerSize))
+ val magic = parser.readInt()
+ parser.seek(0)
+
+ return when (magic) {
+ MAGIC -> {
+ parser.parseHeader()
+ val type = parser.readInt()
+ val length = parser.readLong()
+
+ when (type) {
+ RES_FILE -> parser.parseResFileMetadata()
+ else -> throw RuntimeException("Unsupported entry type: 0x${type.toString(16)}")
}
}
- else -> throw RuntimeException("Unsupported entry type: 0x${type.toString(16)}")
+ RES_FILE -> parser.parseLegacyMetadata()
+ else -> throw Aapt2ParseException("Unrecognized file `$absolutePath`")
}
}
+private fun BinaryParser.parseResFileMetadata(): Metadata {
+ val headerSize = readInt()
+ val dataSize = readLong()
+
+ return parse {
+ ResourcesInternal.CompiledFile.parseFrom(readBytes(headerSize))
+ }.let {
+ Metadata(it.resourceName, it.sourcePath, Configuration().apply {
+ size = it.config.serializedSize
+ imsi.apply {
+ mcc = it.config.mcc.toShort()
+ mnc = it.config.mnc.toShort()
+ }
+ it.config.localeBytes.let { l ->
+ l.copyTo(locale.language, 0, 0, 2)
+ l.copyTo(locale.country, 2, 0, 2)
+ }
+ screenType.apply {
+ orientation = it.config.orientationValue.toByte()
+ touchscreen = it.config.touchscreenValue.toByte()
+ density = it.config.density.toShort()
+ }
+ input.apply {
+ keyboard = it.config.keyboardValue.toByte()
+ navigation = it.config.navigationValue.toByte()
+ flags = 0 // TODO
+ }
+ screenSize.apply {
+ width = it.config.screenWidth.toShort()
+ height = it.config.screenHeight.toShort()
+ }
+ version.apply {
+ sdk = it.config.sdkVersion.toShort()
+ minor = 0
+ }
+ screenConfig.apply {
+ layout = it.config.layoutDirectionValue.toByte()
+ uiMode = it.config.uiModeTypeValue.toByte()
+ smallestWidthDp = it.config.smallestScreenWidthDp.toShort()
+ }
+ screenSizeDp.apply {
+ width = it.config.screenWidthDp.toShort()
+ height = it.config.screenHeightDp.toShort()
+ }
+ // TODO localScript = ...
+ // TODO localeVariant = ...
+ screenConfig2.apply {
+ layout = it.config.screenRoundValue.toByte()
+ colorMode = (it.config.hdrValue shl 2 and it.config.wideColorGamutValue).toByte()
+ }
+ })
+ }
+}
+
+private fun BinaryParser.parseLegacyMetadata(): Metadata {
+ val entryType = readInt()
+ val entryLength = readLong()
+ return parse {
+ ResourcesInternalLegacy.CompiledFileLegacy.parseFrom(readBytes(entryLength.toInt()))
+ }.let {
+ Metadata(it.resourceName, it.sourcePath, BinaryParser(it.config.data.newInput()).use { parser ->
+ parser.parseConfiguration()
+ })
+ }
+}
+
val File.entries: List>
get() = BinaryParser(this).use { parser ->
val header = parser.parseHeader()
@@ -92,6 +164,62 @@ fun BinaryParser.parseResEntry(): Entry<*> {
}
+fun BinaryParser.parseConfiguration() = Configuration().apply {
+ size = readInt()
+ imsi.mcc = readShort()
+ imsi.mnc = readShort()
+ locale.language[1] = readByte()
+ locale.language[0] = readByte()
+ locale.country[1] = readByte()
+ locale.country[0] = readByte()
+ screenType.orientation = readByte()
+ screenType.touchscreen = readByte()
+ screenType.density = readShort()
+ input.keyboard = readByte()
+ input.navigation = readByte()
+ input.flags = readByte()
+ input.pad0 = readByte()
+ screenSize.width = readShort()
+ screenSize.height = readShort()
+ version.sdk = readShort()
+ version.minor = readShort()
+
+ if (size >= 32) {
+ screenConfig.layout = readByte()
+ screenConfig.uiMode = readByte()
+ screenConfig.smallestWidthDp = readShort()
+ }
+
+ // Android 3.0+
+ if (size >= 36) {
+ screenSizeDp.width = readShort()
+ screenSizeDp.height = readShort()
+ }
+
+ // Android 5.0+
+ if (size >= 48) {
+ localeScript[0] = readByte()
+ localeScript[1] = readByte()
+ localeScript[2] = readByte()
+ localeScript[3] = readByte()
+ localeVariant[0] = readByte()
+ localeVariant[1] = readByte()
+ localeVariant[2] = readByte()
+ localeVariant[3] = readByte()
+ localeVariant[4] = readByte()
+ localeVariant[5] = readByte()
+ localeVariant[6] = readByte()
+ localeVariant[7] = readByte()
+ }
+
+ // Android 6.0+
+ if (size >= 52) {
+ screenConfig2.layout = readByte()
+ screenConfig2.colorMode = readByte()
+ screenConfig2.pad2 = readShort()
+ }
+}
+
private fun BinaryParser.parseResFile(): ResFile {
val headerSize = readInt()
val dataSize = readLong()
diff --git a/booster-aapt2/src/main/proto/ResourcesInternalLegacy.proto b/booster-aapt2/src/main/proto/ResourcesInternalLegacy.proto
new file mode 100644
index 000000000..beb583a22
--- /dev/null
+++ b/booster-aapt2/src/main/proto/ResourcesInternalLegacy.proto
@@ -0,0 +1,38 @@
+syntax = "proto3";
+
+import "Resources.proto";
+
+package aapt.pb.internal;
+
+option java_package = "com.didiglobal.booster.aapt2.legacy";
+option optimize_for = LITE_RUNTIME;
+
+// A configuration description that wraps the binary form of the C++ class
+// aapt::ConfigDescription, with an added product definition.
+// TODO(adamlesinski): Flesh this out to be represented in proto.
+message ConfigDescription {
+ bytes data = 1;
+ string product = 2;
+}
+
+// The top level message representing an external resource file (layout XML, PNG, etc).
+// This is used to represent a compiled file before it is linked. Only useful to aapt2.
+message CompiledFileLegacy {
+ message Symbol {
+ // The name of the symbol (in the form package:type/name).
+ string resource_name = 1;
+
+ // The position in the file at which this symbol is defined. For debug use.
+ aapt.pb.SourcePosition source = 2;
+ }
+
+ // The name of the resource (in the form package:type/name).
+ string resource_name = 1;
+
+ // The configuration for which the resource is defined.
+ ConfigDescription config = 2;
+
+ // The filesystem path to where the source file originated.
+ // Mainly used to display helpful error messages.
+ string source_path = 3;
+}
diff --git a/booster-aapt2/src/test/kotlin/com/didiglobal/booster/aapt2/Aapt2ParserTest.kt b/booster-aapt2/src/test/kotlin/com/didiglobal/booster/aapt2/Aapt2ParserTest.kt
index 1f165737f..7d1977f84 100644
--- a/booster-aapt2/src/test/kotlin/com/didiglobal/booster/aapt2/Aapt2ParserTest.kt
+++ b/booster-aapt2/src/test/kotlin/com/didiglobal/booster/aapt2/Aapt2ParserTest.kt
@@ -1,12 +1,56 @@
package com.didiglobal.booster.aapt2
+import com.android.ide.common.resources.configuration.FolderConfiguration
+import com.android.resources.Density
+import com.didiglobal.booster.aapt.Configuration.ScreenType.Companion.DENSITY_ANY
+import com.didiglobal.booster.aapt.Configuration.ScreenType.Companion.DENSITY_DEFAULT
+import com.didiglobal.booster.aapt.Configuration.ScreenType.Companion.DENSITY_NONE
+import com.didiglobal.booster.aapt2.legacy.ResourcesInternalLegacy
import java.io.File
import kotlin.test.Test
import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
import kotlin.test.assertTrue
class Aapt2ParserTest {
+ @Test
+ fun `parse resources generated by 3_1_0`() {
+ File(javaClass.getResource("3.1.0").file).listFiles { dir, file ->
+ file.endsWith(".flat")
+ }.forEach { res ->
+ javaClass.getResourceAsStream("${res.parentFile.name}/${res.name}").use { input ->
+ val header = BinaryParser(input).use { parser ->
+ val entryType = parser.readInt()
+ val entryLength = parser.readLong()
+ parser.parse {
+ ResourcesInternalLegacy.CompiledFileLegacy.parseFrom(parser.readBytes(entryLength.toInt()))
+ }
+ }
+
+ assertNotNull(header)
+ assertEquals(res.name.substringBefore('_').substringBefore('-') + "/" + res.name.substringBefore('.').substringAfter('_'), header.resourceName)
+
+ val config = header.config.data.newInput().use {
+ BinaryParser(it).use { parser ->
+ parser.parseConfiguration()
+ }
+ }
+ assertNotNull(config)
+
+ val density = FolderConfiguration.getConfigForFolder(res.name.substringBefore('_')).densityQualifier.let {
+ when (it.value) {
+ null -> DENSITY_DEFAULT
+ Density.ANYDPI -> DENSITY_ANY
+ Density.NODPI -> DENSITY_NONE
+ else -> it.value.dpiValue.toShort()
+ }
+ }
+ assertEquals(density, config.screenType.density)
+ }
+ }
+ }
+
@Test
fun `parse xml generated by 3_2_0`() {
assertLayoutParsing("3.2.0")
@@ -43,7 +87,7 @@ class Aapt2ParserTest {
}
fun assertLayoutParsing(version: String) {
- val xml = File(javaClass.getResource("$version${File.separator}layout_activity_main.xml.flat").file)
+ val xml = File(javaClass.getResource("$version/layout_activity_main.xml.flat").file)
assertTrue(xml.exists())
val container = BinaryParser(xml).use { parser ->
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_fade_in.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_fade_in.xml.flat
new file mode 100644
index 000000000..0f55338dc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_fade_in.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_fade_out.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_fade_out.xml.flat
new file mode 100644
index 000000000..999f7f0e5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_fade_out.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_grow_fade_in_from_bottom.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_grow_fade_in_from_bottom.xml.flat
new file mode 100644
index 000000000..8717ea725
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_grow_fade_in_from_bottom.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_popup_enter.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_popup_enter.xml.flat
new file mode 100644
index 000000000..3cdfce79c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_popup_enter.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_popup_exit.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_popup_exit.xml.flat
new file mode 100644
index 000000000..33bc001ed
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_popup_exit.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_shrink_fade_out_from_bottom.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_shrink_fade_out_from_bottom.xml.flat
new file mode 100644
index 000000000..a33277178
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_shrink_fade_out_from_bottom.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_in_bottom.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_in_bottom.xml.flat
new file mode 100644
index 000000000..e6165c4fb
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_in_bottom.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_in_top.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_in_top.xml.flat
new file mode 100644
index 000000000..c21124cc6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_in_top.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_out_bottom.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_out_bottom.xml.flat
new file mode 100644
index 000000000..fca862e04
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_out_bottom.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_out_top.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_out_top.xml.flat
new file mode 100644
index 000000000..f8e9b93d0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_slide_out_top.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_tooltip_enter.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_tooltip_enter.xml.flat
new file mode 100644
index 000000000..05e203ec4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_tooltip_enter.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_tooltip_exit.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_tooltip_exit.xml.flat
new file mode 100644
index 000000000..9aac4f669
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/anim_abc_tooltip_exit.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v21_abc_btn_colored_borderless_text_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v21_abc_btn_colored_borderless_text_material.xml.flat
new file mode 100644
index 000000000..acd8f0350
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v21_abc_btn_colored_borderless_text_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_btn_colored_borderless_text_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_btn_colored_borderless_text_material.xml.flat
new file mode 100644
index 000000000..0c801fa17
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_btn_colored_borderless_text_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_btn_colored_text_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_btn_colored_text_material.xml.flat
new file mode 100644
index 000000000..268ec16dd
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_btn_colored_text_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_color_highlight_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_color_highlight_material.xml.flat
new file mode 100644
index 000000000..01be141bf
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_color_highlight_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_btn_checkable.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_btn_checkable.xml.flat
new file mode 100644
index 000000000..58a0202c6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_btn_checkable.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_default.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_default.xml.flat
new file mode 100644
index 000000000..096bdfec1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_default.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_edittext.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_edittext.xml.flat
new file mode 100644
index 000000000..5db55395d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_edittext.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_seek_thumb.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_seek_thumb.xml.flat
new file mode 100644
index 000000000..6ee09f7d8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_seek_thumb.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_spinner.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_spinner.xml.flat
new file mode 100644
index 000000000..0ded0754b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_spinner.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_switch_track.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_switch_track.xml.flat
new file mode 100644
index 000000000..f8d554a4d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color-v23_abc_tint_switch_track.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_background_cache_hint_selector_material_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_background_cache_hint_selector_material_dark.xml.flat
new file mode 100644
index 000000000..a81297179
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_background_cache_hint_selector_material_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_background_cache_hint_selector_material_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_background_cache_hint_selector_material_light.xml.flat
new file mode 100644
index 000000000..357ec0d00
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_background_cache_hint_selector_material_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_btn_colored_text_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_btn_colored_text_material.xml.flat
new file mode 100644
index 000000000..0126dd2ee
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_btn_colored_text_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_hint_foreground_material_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_hint_foreground_material_dark.xml.flat
new file mode 100644
index 000000000..e5adca5f3
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_hint_foreground_material_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_hint_foreground_material_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_hint_foreground_material_light.xml.flat
new file mode 100644
index 000000000..204eb6c8d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_hint_foreground_material_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_disable_only_material_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_disable_only_material_dark.xml.flat
new file mode 100644
index 000000000..ee46ebb36
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_disable_only_material_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_disable_only_material_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_disable_only_material_light.xml.flat
new file mode 100644
index 000000000..3062a7b48
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_disable_only_material_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_material_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_material_dark.xml.flat
new file mode 100644
index 000000000..6147a4e93
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_material_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_material_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_material_light.xml.flat
new file mode 100644
index 000000000..dfdd0162a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_primary_text_material_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_search_url_text.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_search_url_text.xml.flat
new file mode 100644
index 000000000..b2933ff11
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_search_url_text.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_secondary_text_material_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_secondary_text_material_dark.xml.flat
new file mode 100644
index 000000000..98f19786f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_secondary_text_material_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_secondary_text_material_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_secondary_text_material_light.xml.flat
new file mode 100644
index 000000000..1cb8818c9
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_secondary_text_material_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_btn_checkable.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_btn_checkable.xml.flat
new file mode 100644
index 000000000..8097b30d7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_btn_checkable.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_default.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_default.xml.flat
new file mode 100644
index 000000000..bb6fcba52
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_default.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_edittext.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_edittext.xml.flat
new file mode 100644
index 000000000..2fc5743bd
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_edittext.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_seek_thumb.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_seek_thumb.xml.flat
new file mode 100644
index 000000000..78a8f9387
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_seek_thumb.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_spinner.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_spinner.xml.flat
new file mode 100644
index 000000000..711c04d0c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_spinner.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_switch_track.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_switch_track.xml.flat
new file mode 100644
index 000000000..065e502c9
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_abc_tint_switch_track.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_switch_thumb_material_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_switch_thumb_material_dark.xml.flat
new file mode 100644
index 000000000..5776e1f5e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_switch_thumb_material_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_switch_thumb_material_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_switch_thumb_material_light.xml.flat
new file mode 100644
index 000000000..d5abad155
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/color_switch_thumb_material_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..3f785bb36
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..245caef76
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..c67f23a6b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..9b75f7999
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..495e69a0c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat
new file mode 100644
index 000000000..614567be4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat
new file mode 100644
index 000000000..df316779c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..142aa1f48
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat
new file mode 100644
index 000000000..02af65c6d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..7ea227459
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..472334070
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..c30f8f920
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat
new file mode 100644
index 000000000..43df7d421
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat
new file mode 100644
index 000000000..2bd07ad4b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_16dp.png.flat
new file mode 100644
index 000000000..0872d5564
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_36dp.png.flat
new file mode 100644
index 000000000..077e8ad13
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_48dp.png.flat
new file mode 100644
index 000000000..bbabfb2b7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_16dp.png.flat
new file mode 100644
index 000000000..a57171ffc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_36dp.png.flat
new file mode 100644
index 000000000..a8fc855ee
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_48dp.png.flat
new file mode 100644
index 000000000..bd21ae163
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_ic_star_half_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..0d4a81568
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_focused_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_focused_holo.9.png.flat
new file mode 100644
index 000000000..c921247ae
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_focused_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_longpressed_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_longpressed_holo.9.png.flat
new file mode 100644
index 000000000..a9eab750a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_longpressed_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_pressed_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_pressed_holo_dark.9.png.flat
new file mode 100644
index 000000000..c762c72ee
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_pressed_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_pressed_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_pressed_holo_light.9.png.flat
new file mode 100644
index 000000000..b457cc32d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_pressed_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat
new file mode 100644
index 000000000..92a8da541
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat
new file mode 100644
index 000000000..bd736d3c9
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..b0a9d890e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_popup_background_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_popup_background_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..895c94177
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_popup_background_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat
new file mode 100644
index 000000000..bd9c9c283
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat
new file mode 100644
index 000000000..edd1e3f11
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat
new file mode 100644
index 000000000..7452621dc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..998c855d5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..c6b66212e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..e961f4001
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..7824331f7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..2d81dd23a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat
new file mode 100644
index 000000000..0d3e4a99d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat
new file mode 100644
index 000000000..bd43d74e4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat
new file mode 100644
index 000000000..d90f3c39f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat
new file mode 100644
index 000000000..588ec4a54
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat
new file mode 100644
index 000000000..c08c2fe23
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat
new file mode 100644
index 000000000..788575fda
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..bddd6de82
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..fe8402e9e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..0d6150c7f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..9f0552ed1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_low_normal.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_low_normal.9.png.flat
new file mode 100644
index 000000000..b4aebebae
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_low_normal.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_low_pressed.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_low_pressed.9.png.flat
new file mode 100644
index 000000000..bb601a9d4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_low_pressed.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_normal.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_normal.9.png.flat
new file mode 100644
index 000000000..dc5b3ad5b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_normal.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_normal_pressed.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_normal_pressed.9.png.flat
new file mode 100644
index 000000000..7bcbcd127
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notification_bg_normal_pressed.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notify_panel_notification_icon_bg.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notify_panel_notification_icon_bg.png.flat
new file mode 100644
index 000000000..d73926bc0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-hdpi-v4_notify_panel_notification_icon_bg.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..d5f640632
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..b93cfbb34
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..324347f0d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-hdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..14bbe9e7f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..bfe888836
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..61a16042b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-mdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..e6dcb791c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..95496994e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..b1bcf6b92
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..a3187600f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..4305af195
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..1393d57c8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..9bfa8b9a6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..6dad7549b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..14c6f4b1a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-ldrtl-xxxhdpi-v17_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..25beb6a57
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..7f8dc3e2a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..28904afb0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..9ed50529f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..a92c10e9b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat
new file mode 100644
index 000000000..a9e01ecd2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat
new file mode 100644
index 000000000..fd7732f17
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..5d7ea4306
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat
new file mode 100644
index 000000000..5544e13bc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..a603b43d0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..47c19b0c5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..34cf5ae5d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat
new file mode 100644
index 000000000..a2cb3b62a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat
new file mode 100644
index 000000000..d0cd0ad04
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_16dp.png.flat
new file mode 100644
index 000000000..5009d670b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_36dp.png.flat
new file mode 100644
index 000000000..03ac72ae3
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_48dp.png.flat
new file mode 100644
index 000000000..cb84acf5c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_16dp.png.flat
new file mode 100644
index 000000000..52486263f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_36dp.png.flat
new file mode 100644
index 000000000..0ed310937
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_48dp.png.flat
new file mode 100644
index 000000000..7136cb31a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_ic_star_half_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..2d06ff519
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_focused_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_focused_holo.9.png.flat
new file mode 100644
index 000000000..a4fb86b88
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_focused_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_longpressed_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_longpressed_holo.9.png.flat
new file mode 100644
index 000000000..81cf6ed8e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_longpressed_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_pressed_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_pressed_holo_dark.9.png.flat
new file mode 100644
index 000000000..bfe97fdde
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_pressed_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_pressed_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_pressed_holo_light.9.png.flat
new file mode 100644
index 000000000..37928766f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_pressed_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat
new file mode 100644
index 000000000..e22782cab
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat
new file mode 100644
index 000000000..f321eb5ef
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..59f63d1b9
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_popup_background_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_popup_background_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..d1c4452bc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_popup_background_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat
new file mode 100644
index 000000000..c2744c18f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat
new file mode 100644
index 000000000..ac4aa7ff1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat
new file mode 100644
index 000000000..dcd3ab721
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..d5722f918
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..a899186f1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..00fb7488e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..cd512ad26
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..a9d22e998
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat
new file mode 100644
index 000000000..b64bed758
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat
new file mode 100644
index 000000000..ae16d56ac
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat
new file mode 100644
index 000000000..27cecb9b4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat
new file mode 100644
index 000000000..f09921067
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat
new file mode 100644
index 000000000..8ff3e23b1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat
new file mode 100644
index 000000000..39b662e46
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..da1d133d6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..c3e85546c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..4a30b56a2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..eab639304
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_low_normal.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_low_normal.9.png.flat
new file mode 100644
index 000000000..495ad44a6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_low_normal.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_low_pressed.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_low_pressed.9.png.flat
new file mode 100644
index 000000000..b39e1c6e9
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_low_pressed.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_normal.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_normal.9.png.flat
new file mode 100644
index 000000000..a7e548e27
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_normal.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_normal_pressed.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_normal_pressed.9.png.flat
new file mode 100644
index 000000000..78f8f2c72
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notification_bg_normal_pressed.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notify_panel_notification_icon_bg.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notify_panel_notification_icon_bg.png.flat
new file mode 100644
index 000000000..6bd8eca80
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-mdpi-v4_notify_panel_notification_icon_bg.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_action_bar_item_background_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_action_bar_item_background_material.xml.flat
new file mode 100644
index 000000000..e88a92ecd
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_action_bar_item_background_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_btn_colored_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_btn_colored_material.xml.flat
new file mode 100644
index 000000000..329899f0b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_btn_colored_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_dialog_material_background.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_dialog_material_background.xml.flat
new file mode 100644
index 000000000..935295e1d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_dialog_material_background.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_edit_text_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_edit_text_material.xml.flat
new file mode 100644
index 000000000..0ad200e68
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_edit_text_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_list_divider_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_list_divider_material.xml.flat
new file mode 100644
index 000000000..681ef7574
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_abc_list_divider_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_notification_action_background.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_notification_action_background.xml.flat
new file mode 100644
index 000000000..25350498c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v21_notification_action_background.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v23_abc_control_background_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v23_abc_control_background_material.xml.flat
new file mode 100644
index 000000000..a8dc59317
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v23_abc_control_background_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v24_ic_launcher_foreground.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v24_ic_launcher_foreground.xml.flat
new file mode 100644
index 000000000..1a4a32a66
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-v24_ic_launcher_foreground.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-watch-v20_abc_dialog_material_background.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-watch-v20_abc_dialog_material_background.xml.flat
new file mode 100644
index 000000000..f75e204bc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-watch-v20_abc_dialog_material_background.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..54430f881
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..3ce0b2a72
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..57866356b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..e7630c007
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..003f7bf92
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat
new file mode 100644
index 000000000..7b6f4069b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat
new file mode 100644
index 000000000..16a14792b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..60828eb2f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat
new file mode 100644
index 000000000..9a58acbd6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..2c7ae1944
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..bd444e0f7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..dea2364d5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat
new file mode 100644
index 000000000..7a6965375
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat
new file mode 100644
index 000000000..17d8e6f96
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_16dp.png.flat
new file mode 100644
index 000000000..3b2c0f7d8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_36dp.png.flat
new file mode 100644
index 000000000..60047e1f0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_48dp.png.flat
new file mode 100644
index 000000000..9ab8758dc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_16dp.png.flat
new file mode 100644
index 000000000..8e967fc50
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_36dp.png.flat
new file mode 100644
index 000000000..6e6b4bdd0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_48dp.png.flat
new file mode 100644
index 000000000..152adc366
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_ic_star_half_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..bae4a7062
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_focused_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_focused_holo.9.png.flat
new file mode 100644
index 000000000..4f98601d3
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_focused_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_longpressed_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_longpressed_holo.9.png.flat
new file mode 100644
index 000000000..a388d1b0e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_longpressed_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_pressed_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_pressed_holo_dark.9.png.flat
new file mode 100644
index 000000000..e8b475804
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_pressed_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_pressed_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_pressed_holo_light.9.png.flat
new file mode 100644
index 000000000..33b5e6143
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_pressed_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat
new file mode 100644
index 000000000..c37118ca4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat
new file mode 100644
index 000000000..0a89ea6e4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..3a5ad01c9
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_popup_background_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_popup_background_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..833e969ee
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_popup_background_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat
new file mode 100644
index 000000000..16abc2439
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat
new file mode 100644
index 000000000..f24fa3302
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat
new file mode 100644
index 000000000..290771292
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..a556f021c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..1c498225c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..f420ed73c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..468d4a75f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..429ba19a7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat
new file mode 100644
index 000000000..7273110b1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat
new file mode 100644
index 000000000..eef4b51d8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat
new file mode 100644
index 000000000..302fcb3e2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat
new file mode 100644
index 000000000..516665ef4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat
new file mode 100644
index 000000000..cd87923fb
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat
new file mode 100644
index 000000000..956d4d38a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..333313b79
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..79bcb07d9
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..c11ed258e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..2abd4f34e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_low_normal.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_low_normal.9.png.flat
new file mode 100644
index 000000000..6a79701d8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_low_normal.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_low_pressed.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_low_pressed.9.png.flat
new file mode 100644
index 000000000..82c23182a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_low_pressed.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_normal.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_normal.9.png.flat
new file mode 100644
index 000000000..1c15fdd61
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_normal.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_normal_pressed.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_normal_pressed.9.png.flat
new file mode 100644
index 000000000..1f46b299b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notification_bg_normal_pressed.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notify_panel_notification_icon_bg.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notify_panel_notification_icon_bg.png.flat
new file mode 100644
index 000000000..8d3ed9489
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xhdpi-v4_notify_panel_notification_icon_bg.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..ebe04ac7b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ab_share_pack_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..5af3dccf4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..665021bbc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..5c6bcc719
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..712c33a3f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat
new file mode 100644
index 000000000..e855fe70b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat
new file mode 100644
index 000000000..3e1b17701
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..483b000cc
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_cab_background_top_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat
new file mode 100644
index 000000000..b5f686e41
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_commit_search_api_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..de7027708
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..ec7736595
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..c969f4628
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat
new file mode 100644
index 000000000..e533ed05d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat
new file mode 100644
index 000000000..43b520ce3
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_16dp.png.flat
new file mode 100644
index 000000000..8f131aff2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_36dp.png.flat
new file mode 100644
index 000000000..121a25c84
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_48dp.png.flat
new file mode 100644
index 000000000..580860ef7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_16dp.png.flat
new file mode 100644
index 000000000..458f1283c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_36dp.png.flat
new file mode 100644
index 000000000..f984b1d23
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_48dp.png.flat
new file mode 100644
index 000000000..4e732e870
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_ic_star_half_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..b2a06be34
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_divider_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_focused_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_focused_holo.9.png.flat
new file mode 100644
index 000000000..fed63d418
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_focused_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_longpressed_holo.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_longpressed_holo.9.png.flat
new file mode 100644
index 000000000..20ff52960
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_longpressed_holo.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_pressed_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_pressed_holo_dark.9.png.flat
new file mode 100644
index 000000000..ab904909e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_pressed_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_pressed_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_pressed_holo_light.9.png.flat
new file mode 100644
index 000000000..496cd2c46
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_pressed_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat
new file mode 100644
index 000000000..21442f406
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_selector_disabled_holo_dark.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat
new file mode 100644
index 000000000..299c42505
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_list_selector_disabled_holo_light.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..8cc243ee5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_menu_hardkey_panel_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_popup_background_mtrl_mult.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_popup_background_mtrl_mult.9.png.flat
new file mode 100644
index 000000000..3a0cc2eb4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_popup_background_mtrl_mult.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat
new file mode 100644
index 000000000..93a9911ba
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_off_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat
new file mode 100644
index 000000000..4d3cc6474
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat
new file mode 100644
index 000000000..348fcdee6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..bd4408e53
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_primary_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..d3dbe6737
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_scrubber_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..a7906d556
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..de861fa8b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..7b7d73f03
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat
new file mode 100644
index 000000000..9d4e512d5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat
new file mode 100644
index 000000000..80545941e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat
new file mode 100644
index 000000000..acd64ae79
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_middle_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat
new file mode 100644
index 000000000..ac4073212
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_middle_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat
new file mode 100644
index 000000000..e69e3f06e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat
new file mode 100644
index 000000000..377383f36
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..66470360e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..a1a580f55
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..c2ba6b896
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_search_activated_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..573dd4e3f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxhdpi-v4_abc_textfield_search_default_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..5c5228454
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_check_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..fecf19ea4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_check_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat
new file mode 100644
index 000000000..4d1508243
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_radio_to_on_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat
new file mode 100644
index 000000000..42c48ea8f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_radio_to_on_mtrl_015.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat
new file mode 100644
index 000000000..786da771d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_switch_to_on_mtrl_00001.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat
new file mode 100644
index 000000000..c71f60cc4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_btn_switch_to_on_mtrl_00012.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..bacdfae95
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_copy_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat
new file mode 100644
index 000000000..d34e6d672
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_cut_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat
new file mode 100644
index 000000000..330318ebe
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_paste_mtrl_am_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat
new file mode 100644
index 000000000..e39cbd6ea
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_selectall_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat
new file mode 100644
index 000000000..0f54bb144
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_menu_share_mtrl_alpha.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_16dp.png.flat
new file mode 100644
index 000000000..c9c033fe7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_36dp.png.flat
new file mode 100644
index 000000000..455ebb374
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_48dp.png.flat
new file mode 100644
index 000000000..baa2d09a8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_16dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_16dp.png.flat
new file mode 100644
index 000000000..fd2b974f6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_16dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_36dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_36dp.png.flat
new file mode 100644
index 000000000..fbd6e891e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_36dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_48dp.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_48dp.png.flat
new file mode 100644
index 000000000..3fbd35825
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_ic_star_half_black_48dp.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat
new file mode 100644
index 000000000..99336da8b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_000.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat
new file mode 100644
index 000000000..30bb8789a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_scrubber_control_to_pressed_mtrl_005.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat
new file mode 100644
index 000000000..3ce53e97a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_spinner_mtrl_am_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..211dd1ae7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_switch_track_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat
new file mode 100644
index 000000000..ac92f1310
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_tab_indicator_mtrl_alpha.9.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat
new file mode 100644
index 000000000..26c0e21c7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat
new file mode 100644
index 000000000..83eec449c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_left_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat
new file mode 100644
index 000000000..be314f50e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_right_mtrl_dark.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat
new file mode 100644
index 000000000..0d3f05e19
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable-xxxhdpi-v4_abc_text_select_handle_right_mtrl_light.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_borderless_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_borderless_material.xml.flat
new file mode 100644
index 000000000..54619602b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_borderless_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_check_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_check_material.xml.flat
new file mode 100644
index 000000000..38d1ae50b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_check_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_default_mtrl_shape.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_default_mtrl_shape.xml.flat
new file mode 100644
index 000000000..48fe61716
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_default_mtrl_shape.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_radio_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_radio_material.xml.flat
new file mode 100644
index 000000000..9a9e2085a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_btn_radio_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_cab_background_internal_bg.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_cab_background_internal_bg.xml.flat
new file mode 100644
index 000000000..6b6f9fefd
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_cab_background_internal_bg.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_cab_background_top_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_cab_background_top_material.xml.flat
new file mode 100644
index 000000000..199ec458f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_cab_background_top_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_ab_back_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_ab_back_material.xml.flat
new file mode 100644
index 000000000..6709fa0f7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_ab_back_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_arrow_drop_right_black_24dp.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_arrow_drop_right_black_24dp.xml.flat
new file mode 100644
index 000000000..88d1db895
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_arrow_drop_right_black_24dp.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_clear_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_clear_material.xml.flat
new file mode 100644
index 000000000..3c7e09541
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_clear_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_go_search_api_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_go_search_api_material.xml.flat
new file mode 100644
index 000000000..ab3ec2820
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_go_search_api_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_menu_overflow_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_menu_overflow_material.xml.flat
new file mode 100644
index 000000000..44059b89b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_menu_overflow_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_search_api_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_search_api_material.xml.flat
new file mode 100644
index 000000000..fe99acffd
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_search_api_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_voice_search_api_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_voice_search_api_material.xml.flat
new file mode 100644
index 000000000..ac20ca4a3
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ic_voice_search_api_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_item_background_holo_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_item_background_holo_dark.xml.flat
new file mode 100644
index 000000000..e8aefe92e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_item_background_holo_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_item_background_holo_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_item_background_holo_light.xml.flat
new file mode 100644
index 000000000..ce2fd66b8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_item_background_holo_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_background_transition_holo_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_background_transition_holo_dark.xml.flat
new file mode 100644
index 000000000..7db535a74
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_background_transition_holo_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_background_transition_holo_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_background_transition_holo_light.xml.flat
new file mode 100644
index 000000000..b2e9438d5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_background_transition_holo_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_holo_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_holo_dark.xml.flat
new file mode 100644
index 000000000..925bf63f5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_holo_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_holo_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_holo_light.xml.flat
new file mode 100644
index 000000000..3b9fb3530
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_list_selector_holo_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_indicator_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_indicator_material.xml.flat
new file mode 100644
index 000000000..f6968a85c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_indicator_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_material.xml.flat
new file mode 100644
index 000000000..31de0a335
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_small_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_small_material.xml.flat
new file mode 100644
index 000000000..bdf9298ad
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_ratingbar_small_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_thumb_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_thumb_material.xml.flat
new file mode 100644
index 000000000..8f06b7369
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_thumb_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_tick_mark_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_tick_mark_material.xml.flat
new file mode 100644
index 000000000..b821b0e13
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_tick_mark_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_track_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_track_material.xml.flat
new file mode 100644
index 000000000..4fa376ee4
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_seekbar_track_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_spinner_textfield_background_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_spinner_textfield_background_material.xml.flat
new file mode 100644
index 000000000..89d5cbe97
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_spinner_textfield_background_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_switch_thumb_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_switch_thumb_material.xml.flat
new file mode 100644
index 000000000..d8b562607
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_switch_thumb_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_tab_indicator_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_tab_indicator_material.xml.flat
new file mode 100644
index 000000000..2d94d31c0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_tab_indicator_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_text_cursor_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_text_cursor_material.xml.flat
new file mode 100644
index 000000000..e6eebee37
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_text_cursor_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_textfield_search_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_textfield_search_material.xml.flat
new file mode 100644
index 000000000..85c913f5e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_textfield_search_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_vector_test.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_vector_test.xml.flat
new file mode 100644
index 000000000..62e942a93
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_abc_vector_test.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_ic_launcher_background.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_ic_launcher_background.xml.flat
new file mode 100644
index 000000000..b5cbe5718
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_ic_launcher_background.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_bg.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_bg.xml.flat
new file mode 100644
index 000000000..b520789c8
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_bg.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_bg_low.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_bg_low.xml.flat
new file mode 100644
index 000000000..69085d083
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_bg_low.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_icon_background.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_icon_background.xml.flat
new file mode 100644
index 000000000..97637c191
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_icon_background.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_tile_bg.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_tile_bg.xml.flat
new file mode 100644
index 000000000..f53451e2f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_notification_tile_bg.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_tooltip_frame_dark.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_tooltip_frame_dark.xml.flat
new file mode 100644
index 000000000..03fa7b62b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_tooltip_frame_dark.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_tooltip_frame_light.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_tooltip_frame_light.xml.flat
new file mode 100644
index 000000000..0931351ce
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/drawable_tooltip_frame_light.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_action.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_action.xml.flat
new file mode 100644
index 000000000..222de5506
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_action.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_action_tombstone.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_action_tombstone.xml.flat
new file mode 100644
index 000000000..02565e104
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_action_tombstone.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_template_custom_big.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_template_custom_big.xml.flat
new file mode 100644
index 000000000..a4dd7edf3
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_template_custom_big.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_template_icon_group.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_template_icon_group.xml.flat
new file mode 100644
index 000000000..7b38e3e43
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v21_notification_template_icon_group.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v26_abc_screen_toolbar.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v26_abc_screen_toolbar.xml.flat
new file mode 100644
index 000000000..a07da4799
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-v26_abc_screen_toolbar.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-watch-v20_abc_alert_dialog_button_bar_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-watch-v20_abc_alert_dialog_button_bar_material.xml.flat
new file mode 100644
index 000000000..9fed83413
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-watch-v20_abc_alert_dialog_button_bar_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-watch-v20_abc_alert_dialog_title_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-watch-v20_abc_alert_dialog_title_material.xml.flat
new file mode 100644
index 000000000..fe4731803
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout-watch-v20_abc_alert_dialog_title_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_bar_title_item.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_bar_title_item.xml.flat
new file mode 100644
index 000000000..cb26da7c7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_bar_title_item.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_bar_up_container.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_bar_up_container.xml.flat
new file mode 100644
index 000000000..1d605334f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_bar_up_container.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_menu_item_layout.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_menu_item_layout.xml.flat
new file mode 100644
index 000000000..aad1c5186
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_menu_item_layout.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_menu_layout.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_menu_layout.xml.flat
new file mode 100644
index 000000000..969fb2f57
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_menu_layout.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_mode_bar.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_mode_bar.xml.flat
new file mode 100644
index 000000000..5c00863b5
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_mode_bar.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_mode_close_item_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_mode_close_item_material.xml.flat
new file mode 100644
index 000000000..d8a87ccd2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_action_mode_close_item_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_activity_chooser_view.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_activity_chooser_view.xml.flat
new file mode 100644
index 000000000..c10b91cd2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_activity_chooser_view.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_activity_chooser_view_list_item.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_activity_chooser_view_list_item.xml.flat
new file mode 100644
index 000000000..71b9bdcb2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_activity_chooser_view_list_item.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_button_bar_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_button_bar_material.xml.flat
new file mode 100644
index 000000000..0437c355f
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_button_bar_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_material.xml.flat
new file mode 100644
index 000000000..d51c47ce1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_title_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_title_material.xml.flat
new file mode 100644
index 000000000..438fd11ed
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_alert_dialog_title_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_cascading_menu_item_layout.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_cascading_menu_item_layout.xml.flat
new file mode 100644
index 000000000..90bd92cb3
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_cascading_menu_item_layout.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_dialog_title_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_dialog_title_material.xml.flat
new file mode 100644
index 000000000..0c199f9bb
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_dialog_title_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_expanded_menu_layout.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_expanded_menu_layout.xml.flat
new file mode 100644
index 000000000..f1350f694
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_expanded_menu_layout.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_checkbox.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_checkbox.xml.flat
new file mode 100644
index 000000000..6e52322d0
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_checkbox.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_icon.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_icon.xml.flat
new file mode 100644
index 000000000..4ea332415
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_icon.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_layout.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_layout.xml.flat
new file mode 100644
index 000000000..8de8d5f57
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_layout.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_radio.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_radio.xml.flat
new file mode 100644
index 000000000..ff12b6d47
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_list_menu_item_radio.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_popup_menu_header_item_layout.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_popup_menu_header_item_layout.xml.flat
new file mode 100644
index 000000000..4e6569d34
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_popup_menu_header_item_layout.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_popup_menu_item_layout.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_popup_menu_item_layout.xml.flat
new file mode 100644
index 000000000..a773c24d7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_popup_menu_item_layout.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_content_include.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_content_include.xml.flat
new file mode 100644
index 000000000..8988c6eea
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_content_include.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_simple.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_simple.xml.flat
new file mode 100644
index 000000000..0234dc8da
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_simple.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_simple_overlay_action_mode.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_simple_overlay_action_mode.xml.flat
new file mode 100644
index 000000000..160885cc1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_simple_overlay_action_mode.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_toolbar.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_toolbar.xml.flat
new file mode 100644
index 000000000..bb6b7c42e
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_screen_toolbar.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_search_dropdown_item_icons_2line.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_search_dropdown_item_icons_2line.xml.flat
new file mode 100644
index 000000000..280a01937
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_search_dropdown_item_icons_2line.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_search_view.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_search_view.xml.flat
new file mode 100644
index 000000000..62e25e398
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_search_view.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_select_dialog_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_select_dialog_material.xml.flat
new file mode 100644
index 000000000..cc083973c
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_select_dialog_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_tooltip.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_tooltip.xml.flat
new file mode 100644
index 000000000..71a786b4a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_abc_tooltip.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_notification_template_part_chronometer.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_notification_template_part_chronometer.xml.flat
new file mode 100644
index 000000000..5bcb4ce4a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_notification_template_part_chronometer.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_notification_template_part_time.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_notification_template_part_time.xml.flat
new file mode 100644
index 000000000..e3c02d97a
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_notification_template_part_time.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_item_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_item_material.xml.flat
new file mode 100644
index 000000000..68623b873
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_item_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_multichoice_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_multichoice_material.xml.flat
new file mode 100644
index 000000000..5af53e88d
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_multichoice_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_singlechoice_material.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_singlechoice_material.xml.flat
new file mode 100644
index 000000000..9986e1dd1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_select_dialog_singlechoice_material.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_support_simple_spinner_dropdown_item.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_support_simple_spinner_dropdown_item.xml.flat
new file mode 100644
index 000000000..9893bd910
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/layout_support_simple_spinner_dropdown_item.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-anydpi-v26_ic_launcher.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-anydpi-v26_ic_launcher.xml.flat
new file mode 100644
index 000000000..139c73328
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-anydpi-v26_ic_launcher.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-anydpi-v26_ic_launcher_round.xml.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-anydpi-v26_ic_launcher_round.xml.flat
new file mode 100644
index 000000000..8170d0622
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-anydpi-v26_ic_launcher_round.xml.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-hdpi_ic_launcher.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-hdpi_ic_launcher.png.flat
new file mode 100644
index 000000000..6a05c7a43
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-hdpi_ic_launcher.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-hdpi_ic_launcher_round.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-hdpi_ic_launcher_round.png.flat
new file mode 100644
index 000000000..b923e7a5b
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-hdpi_ic_launcher_round.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-mdpi_ic_launcher.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-mdpi_ic_launcher.png.flat
new file mode 100644
index 000000000..7aada1835
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-mdpi_ic_launcher.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-mdpi_ic_launcher_round.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-mdpi_ic_launcher_round.png.flat
new file mode 100644
index 000000000..e2e8bf4d7
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-mdpi_ic_launcher_round.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xhdpi_ic_launcher.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xhdpi_ic_launcher.png.flat
new file mode 100644
index 000000000..cd0968686
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xhdpi_ic_launcher.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xhdpi_ic_launcher_round.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xhdpi_ic_launcher_round.png.flat
new file mode 100644
index 000000000..4771631a1
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xhdpi_ic_launcher_round.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxhdpi_ic_launcher.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxhdpi_ic_launcher.png.flat
new file mode 100644
index 000000000..23f13b261
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxhdpi_ic_launcher.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxhdpi_ic_launcher_round.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxhdpi_ic_launcher_round.png.flat
new file mode 100644
index 000000000..25814fa86
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxhdpi_ic_launcher_round.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxxhdpi_ic_launcher.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxxhdpi_ic_launcher.png.flat
new file mode 100644
index 000000000..5ac3939d2
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxxhdpi_ic_launcher.png.flat differ
diff --git a/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxxhdpi_ic_launcher_round.png.flat b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxxhdpi_ic_launcher_round.png.flat
new file mode 100644
index 000000000..3152c5df6
Binary files /dev/null and b/booster-aapt2/src/test/resources/com/didiglobal/booster/aapt2/3.1.0/mipmap-xxxhdpi_ic_launcher_round.png.flat differ
diff --git a/booster-android-gradle-api/src/main/kotlin/com/didiglobal/booster/util/FileSearch.kt b/booster-android-gradle-api/src/main/kotlin/com/didiglobal/booster/util/FileSearch.kt
index 2329e9f12..c93b00a69 100644
--- a/booster-android-gradle-api/src/main/kotlin/com/didiglobal/booster/util/FileSearch.kt
+++ b/booster-android-gradle-api/src/main/kotlin/com/didiglobal/booster/util/FileSearch.kt
@@ -1,5 +1,6 @@
package com.didiglobal.booster.util
+import com.didiglobal.booster.kotlinx.asIterable
import com.didiglobal.booster.kotlinx.execute
import java.io.File
import java.util.concurrent.RecursiveTask
@@ -9,7 +10,7 @@ import java.util.concurrent.RecursiveTask
*
* @author johnsonlee
*/
-class FileSearch internal constructor(private val roots: Collection, private val filter: (File) -> Boolean = { true }) : RecursiveTask>() {
+class FileSearch internal constructor(private val roots: Iterable, private val filter: (File) -> Boolean = { true }) : RecursiveTask>() {
internal constructor(roots: Array, filter: (File) -> Boolean = { true }) : this(roots.toList(), filter)
@@ -40,6 +41,8 @@ class FileSearch internal constructor(private val roots: Collection, priva
fun File.search(filter: (File) -> Boolean = { true }): Collection = FileSearch(this, filter).execute()
-fun Collection.search(filter: (File) -> Boolean = { true }): Collection = FileSearch(this, filter).execute()
+fun Iterable.search(filter: (File) -> Boolean = { true }): Collection = FileSearch(this, filter).execute()
+
+fun Iterator.search(filter: (File) -> Boolean = { true }): Collection = FileSearch(this.asIterable(), filter).execute()
fun Array.search(filter: (File) -> Boolean = { true }): Collection = FileSearch(this, filter).execute()
diff --git a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/CompressImages.kt b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/CompressImages.kt
index 558b1e4b3..bf8032cfa 100644
--- a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/CompressImages.kt
+++ b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/CompressImages.kt
@@ -1,7 +1,7 @@
package com.didiglobal.booster.task.compression
import com.android.build.gradle.api.BaseVariant
-import com.didiglobal.booster.aapt2.ResourcesInternal
+import com.didiglobal.booster.aapt2.Aapt2Container
import org.gradle.api.DefaultTask
import java.io.File
@@ -24,4 +24,4 @@ abstract class CompressImages : DefaultTask() {
internal data class ActionData(val input: File, val output: File, val cmdline: List)
-internal data class Aapt2ActionData(val input: File, val metadata: ResourcesInternal.CompiledFile, val output: File, val cmdline: List, val aapt2: List)
+internal data class Aapt2ActionData(val input: File, val metadata: Aapt2Container.Metadata, val output: File, val cmdline: List, val aapt2: List)
diff --git a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/RemoveRedundantFlatImages.kt b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/RemoveRedundantFlatImages.kt
index dc18c907b..510c911d0 100644
--- a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/RemoveRedundantFlatImages.kt
+++ b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/RemoveRedundantFlatImages.kt
@@ -1,9 +1,6 @@
package com.didiglobal.booster.task.compression
import com.didiglobal.booster.aapt2.metadata
-import com.didiglobal.booster.gradle.GTE_V3_2
-import com.didiglobal.booster.kotlinx.CSI_RESET
-import com.didiglobal.booster.kotlinx.CSI_YELLOW
import org.gradle.api.tasks.TaskAction
import java.io.File
import java.io.IOException
@@ -18,14 +15,6 @@ internal open class RemoveRedundantFlatImages : RemoveRedundantImages() {
@TaskAction
override fun run() {
- when {
- GTE_V3_2 -> removeFlatImages()
- else -> logger.warn("${CSI_YELLOW}Removing legacy flat images is not supported yet$CSI_RESET")
-
- }
- }
-
- private fun removeFlatImages() {
val resources = sources().parallelStream().map {
it to it.metadata
}.collect(Collectors.toSet())
@@ -41,7 +30,7 @@ internal open class RemoveRedundantFlatImages : RemoveRedundantImages() {
it.first to it.second
}).map { group ->
group.value.sortedByDescending {
- it.second.config.density
+ it.second.config.screenType.density
}.takeLast(group.value.size - 1)
}.flatten().parallelStream().forEach {
try {
diff --git a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/cwebp/CwebpCompressFlatImages.kt b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/cwebp/CwebpCompressFlatImages.kt
index 0ef6cdefc..c4eb94d02 100644
--- a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/cwebp/CwebpCompressFlatImages.kt
+++ b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/cwebp/CwebpCompressFlatImages.kt
@@ -4,7 +4,8 @@ import com.android.SdkConstants
import com.android.SdkConstants.FD_RES
import com.android.builder.model.AndroidProject.FD_INTERMEDIATES
import com.android.sdklib.BuildToolInfo
-import com.didiglobal.booster.aapt2.ResourcesInternal
+import com.didiglobal.booster.aapt2.Aapt2Container
+import com.didiglobal.booster.aapt2.metadata
import com.didiglobal.booster.gradle.buildTools
import com.didiglobal.booster.gradle.mergedManifests
import com.didiglobal.booster.gradle.project
@@ -14,10 +15,6 @@ import com.didiglobal.booster.kotlinx.CSI_RESET
import com.didiglobal.booster.kotlinx.file
import com.didiglobal.booster.task.compression.Aapt2ActionData
import com.didiglobal.booster.task.compression.CompressionResult
-import com.didiglobal.booster.aapt2.metadata
-import com.didiglobal.booster.aapt2.resourcePath
-import com.didiglobal.booster.gradle.GTE_V3_2
-import com.didiglobal.booster.kotlinx.CSI_YELLOW
import com.didiglobal.booster.util.search
import org.gradle.api.tasks.TaskAction
import java.io.File
@@ -48,7 +45,7 @@ internal open class CwebpCompressFlatImages : CwebpCompressImages() {
it.parallelStream()
}.collect(Collectors.toSet())
- val isNotLauncherIcon: (File, ResourcesInternal.CompiledFile) -> Boolean = { input, metadata ->
+ val isNotLauncherIcon: (File, Aapt2Container.Metadata) -> Boolean = { input, metadata ->
if (!icons.contains(metadata.resourceName)) true else false.also {
val s0 = input.length()
results.add(CompressionResult(input, s0, s0, File(metadata.sourcePath)))
@@ -103,10 +100,7 @@ internal open class CwebpCompressFlatImages : CwebpCompressImages() {
@TaskAction
override fun run() {
- when {
- GTE_V3_2 -> compress { true }
- else -> logger.warn("${CSI_YELLOW}Compressing legacy flat images by cwebp is not supported yet$CSI_RESET")
- }
+ compress { true }
}
}
diff --git a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/pngquant/PngquantCompressFlatImages.kt b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/pngquant/PngquantCompressFlatImages.kt
index 5296fbf4b..3d19c1c3c 100644
--- a/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/pngquant/PngquantCompressFlatImages.kt
+++ b/booster-task-compression/src/main/kotlin/com/didiglobal/booster/task/compression/pngquant/PngquantCompressFlatImages.kt
@@ -7,14 +7,11 @@ import com.android.SdkConstants.FD_RES_MIPMAP
import com.android.builder.model.AndroidProject.FD_INTERMEDIATES
import com.android.sdklib.BuildToolInfo
import com.didiglobal.booster.aapt2.metadata
-import com.didiglobal.booster.aapt2.resourcePath
-import com.didiglobal.booster.gradle.GTE_V3_2
import com.didiglobal.booster.gradle.buildTools
import com.didiglobal.booster.gradle.project
import com.didiglobal.booster.gradle.scope
import com.didiglobal.booster.kotlinx.CSI_RED
import com.didiglobal.booster.kotlinx.CSI_RESET
-import com.didiglobal.booster.kotlinx.CSI_YELLOW
import com.didiglobal.booster.kotlinx.file
import com.didiglobal.booster.task.compression.Aapt2ActionData
import com.didiglobal.booster.task.compression.CompressionResult
@@ -30,13 +27,6 @@ internal open class PngquantCompressFlatImages : PngquantCompressImages() {
@TaskAction
override fun run() {
- when {
- GTE_V3_2 -> compress()
- else -> logger.warn("${CSI_YELLOW}Compressing legacy images by pngquant is not supported yet$CSI_RESET")
- }
- }
-
- private fun compress() {
val intermediates = variant.project.buildDir.file(FD_INTERMEDIATES)
val compiledRes = intermediates.file("compiled_${FD_RES}_pngquant", variant.dirName, this.name)
val compressedRes = intermediates.file("compressed_${FD_RES}_pngquant", variant.dirName, this.name)
@@ -52,7 +42,7 @@ internal open class PngquantCompressFlatImages : PngquantCompressImages() {
}.map {
val output = compressedRes.file("${it.second.resourcePath.substringBeforeLast('.')}$DOT_PNG")
Aapt2ActionData(it.first, it.second, output,
- listOf(pngquant, "--strip", "--skip-if-larger", "-f", "-o", output.absolutePath, "-s", "1", it.second!!.sourcePath),
+ listOf(pngquant, "--strip", "--skip-if-larger", "-f", "-o", output.absolutePath, "-s", "1", it.second.sourcePath),
listOf(aapt2, "compile", "-o", it.first.parent, output.absolutePath))
}.forEach {
it.output.parentFile.mkdirs()
diff --git a/booster-transform-shrink/src/main/kotlin/com/didiglobal/booster/transform/shrink/RetainedSymbolCollector.kt b/booster-transform-shrink/src/main/kotlin/com/didiglobal/booster/transform/shrink/RetainedSymbolCollector.kt
index 1a569b824..52f8326bc 100644
--- a/booster-transform-shrink/src/main/kotlin/com/didiglobal/booster/transform/shrink/RetainedSymbolCollector.kt
+++ b/booster-transform-shrink/src/main/kotlin/com/didiglobal/booster/transform/shrink/RetainedSymbolCollector.kt
@@ -1,6 +1,10 @@
package com.didiglobal.booster.transform.shrink
-import com.didiglobal.booster.aapt2.*
+import com.didiglobal.booster.aapt2.BinaryParser
+import com.didiglobal.booster.aapt2.MAGIC
+import com.didiglobal.booster.aapt2.RES_FILE
+import com.didiglobal.booster.aapt2.Resources
+import com.didiglobal.booster.aapt2.ResourcesInternal
import com.didiglobal.booster.kotlinx.stackTraceAsString
import org.gradle.api.logging.Logging
import java.io.File