diff options
author | apell <apell@google.com> | 2017-05-09 15:04:27 -0400 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2017-05-10 13:35:53 -0400 |
commit | 0973ace17e17c289ddfccd086e38c97caeb6c900 (patch) | |
tree | afdbc2b7db9871585267ad2650ba9451f7efbe2f /src/main/java/com/google/devtools/build/lib/rules | |
parent | 8040b0b7690420be2f92071e635cd1d7f18a38e9 (diff) |
Add manifest_merger and manifest_values attributes to android_test to allow manifest placeholders to be used for test APKs.
RELNOTES: android_test may use manifest placeholders with 'manifest_merger = "android"'.
PiperOrigin-RevId: 155534958
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java | 38 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java | 36 |
2 files changed, 36 insertions, 38 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java index 3d8efbaade..8991bdfe3f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java @@ -18,17 +18,13 @@ import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.BuildType.LABEL; import static com.google.devtools.build.lib.packages.BuildType.TRISTATE; import static com.google.devtools.build.lib.syntax.Type.BOOLEAN; -import static com.google.devtools.build.lib.syntax.Type.STRING; -import static com.google.devtools.build.lib.syntax.Type.STRING_DICT; import static com.google.devtools.build.lib.syntax.Type.STRING_LIST; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; -import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.TriState; -import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidManifestMerger; /** * Attributes for {@code android_binary} that are not present on {@code android_test}. @@ -37,40 +33,6 @@ public final class AndroidBinaryOnlyRule implements RuleDefinition { @Override public RuleClass build(RuleClass.Builder builder, final RuleDefinitionEnvironment env) { return builder - /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_merger) --> - Select the manifest merger to use for this rule.<br/> - Possible values: - <ul> - <li><code>manifest_merger = "legacy"</code>: Use the legacy manifest merger. Does not - allow features of the android merger like placeholder substitution and tools - attributes for defining merge behavior. Removes all - <code><uses-permission></code> and <code><uses-permission-sdk-23></code> - tags. Performs a tag-level merge.</li> - <li><code>manifest_merger = "android"</code>: Use the android manifest merger. Allows - features like placeholder substitution and tools attributes for defining merge - behavior. Follows the semantics from - <a href="http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger"> - the documentation</a> except it has been modified to also remove all - <code><uses-permission></code> and <code><uses-permission-sdk-23></code> - tags. Performs an attribute-level merge.</li> - <li><code>manifest_merger = "auto"</code>: Merger is controlled by the - <a href="../blaze-user-manual.html#flag--android_manifest_merger"> - --android_manifest_merger</a> flag.</li> - </ul> - <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ - .add(attr("manifest_merger", STRING) - .allowedValues(new AllowedValueSet(AndroidManifestMerger.getAttributeValues())) - .value(AndroidManifestMerger.getRuleAttributeDefault())) - /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_values) --> - A dictionary of values to be overridden in the manifest. Any instance of ${name} in the - manifest will be replaced with the value corresponding to name in this dictionary. - applicationId, versionCode, versionName, minSdkVersion, targetSdkVersion and - maxSdkVersion will also override the corresponding attributes of the manifest and - uses-sdk tags. packageName will be ignored and will be set from either applicationId if - specified or the package in manifest. When manifest_merger is set to legacy, only - applicationId, versionCode and versionName will have any effect. - <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ - .add(attr("manifest_values", STRING_DICT)) /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(nocompress_extensions) --> A list of file extension to leave uncompressed in apk. <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ 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 d70894dabf..d770d54bd8 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 @@ -23,6 +23,7 @@ import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fro import static com.google.devtools.build.lib.syntax.Type.BOOLEAN; import static com.google.devtools.build.lib.syntax.Type.INTEGER; import static com.google.devtools.build.lib.syntax.Type.STRING; +import static com.google.devtools.build.lib.syntax.Type.STRING_DICT; import static com.google.devtools.build.lib.syntax.Type.STRING_LIST; import static com.google.devtools.build.lib.util.FileTypeSet.ANY_FILE; @@ -48,6 +49,7 @@ import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.TriState; +import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidManifestMerger; import com.google.devtools.build.lib.rules.android.AndroidConfiguration.ConfigurationDistinguisher; import com.google.devtools.build.lib.rules.config.ConfigFeatureFlagProvider; import com.google.devtools.build.lib.rules.cpp.CppOptions; @@ -828,6 +830,40 @@ public final class AndroidRuleClasses { Rex suggests an updated package map that can be saved and reused for subsequent builds. */ .add(attr("rex_package_map", LABEL).legacyAllowAnyFileType().undocumented("experimental")) + /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_merger) --> + Select the manifest merger to use for this rule.<br/> + Possible values: + <ul> + <li><code>manifest_merger = "legacy"</code>: Use the legacy manifest merger. Does not + allow features of the android merger like placeholder substitution and tools + attributes for defining merge behavior. Removes all + <code><uses-permission></code> and <code><uses-permission-sdk-23></code> + tags. Performs a tag-level merge.</li> + <li><code>manifest_merger = "android"</code>: Use the android manifest merger. Allows + features like placeholder substitution and tools attributes for defining merge + behavior. Follows the semantics from + <a href="http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger"> + the documentation</a> except it has been modified to also remove all + <code><uses-permission></code> and <code><uses-permission-sdk-23></code> + tags. Performs an attribute-level merge.</li> + <li><code>manifest_merger = "auto"</code>: Merger is controlled by the + <a href="../blaze-user-manual.html#flag--android_manifest_merger"> + --android_manifest_merger</a> flag.</li> + </ul> + <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ + .add(attr("manifest_merger", STRING) + .allowedValues(new AllowedValueSet(AndroidManifestMerger.getAttributeValues())) + .value(AndroidManifestMerger.getRuleAttributeDefault())) + /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_values) --> + A dictionary of values to be overridden in the manifest. Any instance of ${name} in the + manifest will be replaced with the value corresponding to name in this dictionary. + applicationId, versionCode, versionName, minSdkVersion, targetSdkVersion and + maxSdkVersion will also override the corresponding attributes of the manifest and + uses-sdk tags. packageName will be ignored and will be set from either applicationId if + specified or the package in manifest. When manifest_merger is set to legacy, only + applicationId, versionCode and versionName will have any effect. + <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ + .add(attr("manifest_values", STRING_DICT)) .add(attr(AndroidFeatureFlagSetProvider.FEATURE_FLAG_ATTR, LABEL_KEYED_STRING_DICT) .undocumented("the feature flag feature has not yet been launched") .allowedRuleClasses("config_feature_flag") |