diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java | 95 |
1 files changed, 38 insertions, 57 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java index 977cdc39bd..5b385796d7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java @@ -44,7 +44,6 @@ import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault; import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.BuildType; -import com.google.devtools.build.lib.packages.ImplicitOutputsFunction; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; @@ -68,9 +67,7 @@ import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileType; import java.util.List; -/** - * Rule definitions for Android rules. - */ +/** Rule definitions for Android rules. */ public final class AndroidRuleClasses { /** Sources generated by a given target, in particular, {@code R.java}. */ public static final SafeImplicitOutputsFunction ANDROID_JAVA_SOURCE_JAR = @@ -84,6 +81,7 @@ public final class AndroidRuleClasses { */ public static final SafeImplicitOutputsFunction ANDROID_LIBRARY_CLASS_JAR = JavaSemantics.JAVA_LIBRARY_CLASS_JAR; + public static final SafeImplicitOutputsFunction ANDROID_LIBRARY_AAR = fromTemplates("%{name}.aar"); // TODO(b/30307842): Remove this once it is no longer needed for resources migration. @@ -91,14 +89,15 @@ public final class AndroidRuleClasses { fromTemplates("%{name}_files/library.ap_"); /** - * Source Jar for {@link #ANDROID_RESOURCES_CLASS_JAR}, which should be the same as - * {@link #ANDROID_JAVA_SOURCE_JAR}. + * Source Jar for {@link #ANDROID_RESOURCES_CLASS_JAR}, which should be the same as {@link + * #ANDROID_JAVA_SOURCE_JAR}. */ public static final SafeImplicitOutputsFunction ANDROID_RESOURCES_SOURCE_JAR = fromTemplates("%{name}_resources-src.jar"); /** Compiled {@link #ANDROID_JAVA_SOURCE_JAR}. */ public static final SafeImplicitOutputsFunction ANDROID_RESOURCES_CLASS_JAR = fromTemplates("%{name}_resources.jar"); + public static final SafeImplicitOutputsFunction ANDROID_RESOURCES_APK = fromTemplates("%{name}.ap_"); public static final SafeImplicitOutputsFunction ANDROID_RESOURCES_AAPT2_LIBRARY_APK = @@ -117,8 +116,7 @@ public final class AndroidRuleClasses { fromTemplates("%{name}_files/resource_shrinker.log"); public static final SafeImplicitOutputsFunction ANDROID_INCREMENTAL_RESOURCES_APK = fromTemplates("%{name}_files/incremental.ap_"); - public static final SafeImplicitOutputsFunction ANDROID_BINARY_APK = - fromTemplates("%{name}.apk"); + public static final SafeImplicitOutputsFunction ANDROID_BINARY_APK = fromTemplates("%{name}.apk"); public static final SafeImplicitOutputsFunction ANDROID_BINARY_INCREMENTAL_APK = fromTemplates("%{name}_incremental.apk"); public static final SafeImplicitOutputsFunction ANDROID_BINARY_UNSIGNED_APK = @@ -141,7 +139,7 @@ public final class AndroidRuleClasses { fromTemplates("%{name}_symbols/symbols.zip"); public static final SafeImplicitOutputsFunction ANDROID_SYMLINKED_MANIFEST = fromTemplates("%{name}_symlinked_manifest/AndroidManifest.xml"); - public static final ImplicitOutputsFunction ANDROID_PROCESSED_MANIFEST = + public static final SafeImplicitOutputsFunction ANDROID_PROCESSED_MANIFEST = fromTemplates("%{name}_processed_manifest/AndroidManifest.xml"); public static final SafeImplicitOutputsFunction MOBILE_INSTALL_STUB_APPLICATION_MANIFEST = fromTemplates("%{name}_files/mobile_install/AndroidManifest.xml"); @@ -205,8 +203,8 @@ public final class AndroidRuleClasses { public static final SplitTransition<BuildOptions> ANDROID_SPLIT_TRANSITION = new AndroidSplitTransition(); - private static final class AndroidSplitTransition implements - SplitTransition<BuildOptions>, SkylarkValue { + private static final class AndroidSplitTransition + implements SplitTransition<BuildOptions>, SkylarkValue { private static void setCrosstoolToAndroid(BuildOptions output, BuildOptions input) { AndroidConfiguration.Options inputAndroidOptions = input.get(AndroidConfiguration.Options.class); @@ -308,12 +306,12 @@ public final class AndroidRuleClasses { public static final FileType ANDROID_IDL = FileType.of(".aidl"); public static final String[] ALLOWED_DEPENDENCIES = { - "aar_import", - "android_library", - "cc_library", - "java_import", - "java_library", - "java_lite_proto_library", + "aar_import", + "android_library", + "cc_library", + "java_import", + "java_library", + "java_lite_proto_library", }; public static boolean hasProguardSpecs(AttributeMap rule) { @@ -380,9 +378,7 @@ public final class AndroidRuleClasses { } }; - /** - * Definition of the {@code android_sdk} rule. - */ + /** Definition of the {@code android_sdk} rule. */ public static final class AndroidSdkRule implements RuleDefinition { @Override public RuleClass build(Builder builder, RuleDefinitionEnvironment environment) { @@ -429,17 +425,15 @@ public final class AndroidRuleClasses { @Override public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("android_sdk") - .ancestors(BaseRuleClasses.BaseRule.class) - .factoryClass(AndroidSdk.class) - .build(); + return RuleDefinition.Metadata.builder() + .name("android_sdk") + .ancestors(BaseRuleClasses.BaseRule.class) + .factoryClass(AndroidSdk.class) + .build(); } } - /** - * Base class for rule definitions that support resource declarations. - */ + /** Base class for rule definitions that support resource declarations. */ public static final class AndroidResourceSupportRule implements RuleDefinition { @Override public RuleClass build(RuleClass.Builder builder, final RuleDefinitionEnvironment env) { @@ -512,10 +506,10 @@ public final class AndroidRuleClasses { .add(attr("enable_data_binding", Type.BOOLEAN)) // The javac annotation processor from Android's data binding library that turns // processed XML expressions into Java code. - .add(attr(DataBinding.DATABINDING_ANNOTATION_PROCESSOR_ATTR, BuildType.LABEL) - .cfg(HOST) - .value(env.getToolsLabel("//tools/android:databinding_annotation_processor"))) - + .add( + attr(DataBinding.DATABINDING_ANNOTATION_PROCESSOR_ATTR, BuildType.LABEL) + .cfg(HOST) + .value(env.getToolsLabel("//tools/android:databinding_annotation_processor"))) .build(); } @@ -529,9 +523,7 @@ public final class AndroidRuleClasses { } } - /** - * Base class for Android rule definitions. - */ + /** Base class for Android rule definitions. */ public static final class AndroidBaseRule implements RuleDefinition { @Override public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) { @@ -599,9 +591,7 @@ public final class AndroidRuleClasses { } } - /** - * Base class for Android rule definitions that produce binaries. - */ + /** Base class for Android rule definitions that produce binaries. */ public static final class AndroidBinaryBaseRule implements RuleDefinition { private final AndroidNeverlinkAspect androidNeverlinkAspect; @@ -945,21 +935,19 @@ public final class AndroidRuleClasses { .value(env.getToolsLabel("//tools/android:zip_filter"))) .advertiseSkylarkProvider(SkylarkProviderIdentifier.forKey(JavaInfo.PROVIDER.getKey())) .build(); - } + } - @Override - public Metadata getMetadata() { + @Override + public Metadata getMetadata() { return RuleDefinition.Metadata.builder() .name("$android_binary_base") .type(RuleClassType.ABSTRACT) .ancestors(AndroidRuleClasses.AndroidBaseRule.class, AndroidResourceSupportRule.class) .build(); - } + } } - /** - * Semantic options for the dexer's multidex behavior. - */ + /** Semantic options for the dexer's multidex behavior. */ public enum MultidexMode { // Build dexes with multidex, assuming native platform support for multidex. NATIVE, @@ -970,24 +958,20 @@ public final class AndroidRuleClasses { // Build all dex code into a single classes.dex file. OFF; - /** - * Returns the attribute value that specifies this mode. - */ + /** Returns the attribute value that specifies this mode. */ public String getAttributeValue() { return toString().toLowerCase(); } /** - * Returns the name of the output dex classes file. In multidex mode, this is an archive - * of (possibly) multiple files. + * Returns the name of the output dex classes file. In multidex mode, this is an archive of + * (possibly) multiple files. */ public String getOutputDexFilename() { return this == OFF ? "classes.dex" : "classes.dex.zip"; } - /** - * Converts an attribute value to a corresponding mode. Returns null on no match. - */ + /** Converts an attribute value to a corresponding mode. Returns null on no match. */ public static MultidexMode fromValue(String value) { for (MultidexMode mode : values()) { if (mode.getAttributeValue().equals(value)) { @@ -997,9 +981,7 @@ public final class AndroidRuleClasses { return null; } - /** - * Enumerates valid values for the "multidex" attribute. - */ + /** Enumerates valid values for the "multidex" attribute. */ public static List<String> getValidValues() { List<String> ans = Lists.newArrayList(); for (MultidexMode mode : MultidexMode.values()) { @@ -1009,4 +991,3 @@ public final class AndroidRuleClasses { } } } - |