aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-07-17 15:15:02 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-17 15:17:01 -0700
commit4d10250291a813302de64151be3b22d57e94749d (patch)
tree9959e3bc6f20b86871e8a935aedeffda64fe3dd9
parent3f37d71fb2f03777b231834646888c68811817a7 (diff)
Expose AndroidSdkProvider to Skylark (as AndroidSdkInfo).
RELNOTES: None. PiperOrigin-RevId: 204983634
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdk.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java212
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSdkProviderApi.java264
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidSdkTest.java3
10 files changed, 447 insertions, 63 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
index bae30630c5..aede909f9d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/FilesToRunProvider.java
@@ -28,7 +28,8 @@ import javax.annotation.Nullable;
/** Returns information about executables produced by a target and the files needed to run it. */
@Immutable
@AutoCodec
-public final class FilesToRunProvider implements TransitiveInfoProvider, FilesToRunProviderApi {
+public final class FilesToRunProvider
+ implements TransitiveInfoProvider, FilesToRunProviderApi<Artifact> {
/** The name of the field in Skylark used to access this class. */
public static final String SKYLARK_NAME = "files_to_run";
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 ae481f97c1..9a6e14afb5 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
@@ -472,7 +472,8 @@ public final class AndroidRuleClasses {
.useOutputLicenses()
.allowedRuleClasses("java_toolchain")
.value(JavaSemantics.javaToolchainAttribute(environment)))
- .advertiseProvider(AndroidSdkProvider.class)
+ .advertiseSkylarkProvider(
+ SkylarkProviderIdentifier.forKey(AndroidSdkProvider.PROVIDER.getKey()))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdk.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdk.java
index 6ba38ddb12..768e81ac97 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdk.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdk.java
@@ -68,9 +68,8 @@ public class AndroidSdk implements RuleConfiguredTargetFactory {
}
return new RuleConfiguredTargetBuilder(ruleContext)
- .addProvider(
- AndroidSdkProvider.class,
- AndroidSdkProvider.create(
+ .addNativeDeclaredProvider(
+ new AndroidSdkProvider(
buildToolsVersion,
frameworkAidl,
aidlLib,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
index 699a870283..da40eb913f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
@@ -13,23 +13,48 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.android;
-import com.google.auto.value.AutoValue;
+import static com.google.devtools.build.lib.rules.android.AndroidSkylarkData.fromNoneable;
+
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.packages.BuiltinProvider;
+import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidSdkProviderApi;
+import com.google.devtools.build.lib.syntax.EvalException;
import javax.annotation.Nullable;
/** Description of the tools Blaze needs from an Android SDK. */
-@AutoValue
@Immutable
-public abstract class AndroidSdkProvider implements TransitiveInfoProvider {
-
- public static AndroidSdkProvider create(
+public final class AndroidSdkProvider extends NativeInfo
+ implements AndroidSdkProviderApi<Artifact, FilesToRunProvider, TransitiveInfoCollection> {
+
+ public static final String PROVIDER_NAME = "AndroidSdkInfo";
+ public static final Provider PROVIDER = new Provider();
+
+ private final String buildToolsVersion;
+ private final Artifact frameworkAidl;
+ private final TransitiveInfoCollection aidlLib;
+ private final Artifact androidJar;
+ private final Artifact sourceProperties;
+ private final Artifact shrinkedAndroidJar;
+ private final Artifact mainDexClasses;
+ private final FilesToRunProvider adb;
+ private final FilesToRunProvider dx;
+ private final FilesToRunProvider mainDexListCreator;
+ private final FilesToRunProvider aidl;
+ private final FilesToRunProvider aapt;
+ private final FilesToRunProvider aapt2;
+ private final FilesToRunProvider apkBuilder;
+ private final FilesToRunProvider apkSigner;
+ private final FilesToRunProvider proguard;
+ private final FilesToRunProvider zipalign;
+
+ public AndroidSdkProvider(
String buildToolsVersion,
Artifact frameworkAidl,
@Nullable TransitiveInfoCollection aidlLib,
@@ -47,25 +72,24 @@ public abstract class AndroidSdkProvider implements TransitiveInfoProvider {
FilesToRunProvider apkSigner,
FilesToRunProvider proguard,
FilesToRunProvider zipalign) {
-
- return new AutoValue_AndroidSdkProvider(
- buildToolsVersion,
- frameworkAidl,
- aidlLib,
- androidJar,
- sourceProperties,
- shrinkedAndroidJar,
- mainDexClasses,
- adb,
- dx,
- mainDexListCreator,
- aidl,
- aapt,
- aapt2,
- apkBuilder,
- apkSigner,
- proguard,
- zipalign);
+ super(PROVIDER);
+ this.buildToolsVersion = buildToolsVersion;
+ this.frameworkAidl = frameworkAidl;
+ this.aidlLib = aidlLib;
+ this.androidJar = androidJar;
+ this.sourceProperties = sourceProperties;
+ this.shrinkedAndroidJar = shrinkedAndroidJar;
+ this.mainDexClasses = mainDexClasses;
+ this.adb = adb;
+ this.dx = dx;
+ this.mainDexListCreator = mainDexListCreator;
+ this.aidl = aidl;
+ this.aapt = aapt;
+ this.aapt2 = aapt2;
+ this.apkBuilder = apkBuilder;
+ this.apkSigner = apkSigner;
+ this.proguard = proguard;
+ this.zipalign = zipalign;
}
/**
@@ -73,7 +97,7 @@ public abstract class AndroidSdkProvider implements TransitiveInfoProvider {
* not specified.
*/
public static AndroidSdkProvider fromRuleContext(RuleContext ruleContext) {
- return ruleContext.getPrerequisite(":android_sdk", Mode.TARGET, AndroidSdkProvider.class);
+ return ruleContext.getPrerequisite(":android_sdk", Mode.TARGET, AndroidSdkProvider.PROVIDER);
}
/** Throws an error if the Android SDK cannot be found. */
@@ -84,44 +108,142 @@ public abstract class AndroidSdkProvider implements TransitiveInfoProvider {
}
}
- /** The value of build_tools_version. May be null or empty. */
- public abstract String getBuildToolsVersion();
+ @Override
+ public String getBuildToolsVersion() {
+ return buildToolsVersion;
+ }
- public abstract Artifact getFrameworkAidl();
+ @Override
+ public Artifact getFrameworkAidl() {
+ return frameworkAidl;
+ }
+ @Override
@Nullable
- public abstract TransitiveInfoCollection getAidlLib();
+ public TransitiveInfoCollection getAidlLib() {
+ return aidlLib;
+ }
- public abstract Artifact getAndroidJar();
+ @Override
+ public Artifact getAndroidJar() {
+ return androidJar;
+ }
+ @Override
@Nullable
- public abstract Artifact getSourceProperties();
+ public Artifact getSourceProperties() {
+ return sourceProperties;
+ }
- public abstract Artifact getShrinkedAndroidJar();
+ @Override
+ public Artifact getShrinkedAndroidJar() {
+ return shrinkedAndroidJar;
+ }
- public abstract Artifact getMainDexClasses();
+ @Override
+ public Artifact getMainDexClasses() {
+ return mainDexClasses;
+ }
- public abstract FilesToRunProvider getAdb();
+ @Override
+ public FilesToRunProvider getAdb() {
+ return adb;
+ }
- public abstract FilesToRunProvider getDx();
+ @Override
+ public FilesToRunProvider getDx() {
+ return dx;
+ }
- public abstract FilesToRunProvider getMainDexListCreator();
+ @Override
+ public FilesToRunProvider getMainDexListCreator() {
+ return mainDexListCreator;
+ }
- public abstract FilesToRunProvider getAidl();
+ @Override
+ public FilesToRunProvider getAidl() {
+ return aidl;
+ }
- public abstract FilesToRunProvider getAapt();
+ @Override
+ public FilesToRunProvider getAapt() {
+ return aapt;
+ }
+ @Override
@Nullable
- public abstract FilesToRunProvider getAapt2();
+ public FilesToRunProvider getAapt2() {
+ return aapt2;
+ }
+ @Override
@Nullable
- public abstract FilesToRunProvider getApkBuilder();
+ public FilesToRunProvider getApkBuilder() {
+ return apkBuilder;
+ }
+
+ @Override
+ public FilesToRunProvider getApkSigner() {
+ return apkSigner;
+ }
- public abstract FilesToRunProvider getApkSigner();
+ @Override
+ public FilesToRunProvider getProguard() {
+ return proguard;
+ }
+
+ @Override
+ public FilesToRunProvider getZipalign() {
+ return zipalign;
+ }
- public abstract FilesToRunProvider getProguard();
+ /** The provider can construct the Android SDK provider. */
+ public static class Provider extends BuiltinProvider<AndroidSdkProvider>
+ implements AndroidSdkProviderApi.Provider<
+ Artifact, FilesToRunProvider, TransitiveInfoCollection> {
- public abstract FilesToRunProvider getZipalign();
+ private Provider() {
+ super(PROVIDER_NAME, AndroidSdkProvider.class);
+ }
- AndroidSdkProvider() {}
+ @Override
+ public AndroidSdkProvider createInfo(
+ String buildToolsVersion,
+ Artifact frameworkAidl,
+ Object aidlLib,
+ Artifact androidJar,
+ Object sourceProperties,
+ Artifact shrinkedAndroidJar,
+ Artifact mainDexClasses,
+ FilesToRunProvider adb,
+ FilesToRunProvider dx,
+ FilesToRunProvider mainDexListCreator,
+ FilesToRunProvider aidl,
+ FilesToRunProvider aapt,
+ Object aapt2,
+ Object apkBuilder,
+ FilesToRunProvider apkSigner,
+ FilesToRunProvider proguard,
+ FilesToRunProvider zipalign)
+ throws EvalException {
+ return new AndroidSdkProvider(
+ buildToolsVersion,
+ frameworkAidl,
+ fromNoneable(aidlLib, TransitiveInfoCollection.class),
+ androidJar,
+ fromNoneable(sourceProperties, Artifact.class),
+ shrinkedAndroidJar,
+ mainDexClasses,
+ adb,
+ dx,
+ mainDexListCreator,
+ aidl,
+ aapt,
+ fromNoneable(aapt2, FilesToRunProvider.class),
+ fromNoneable(apkBuilder, FilesToRunProvider.class),
+ apkSigner,
+ proguard,
+ zipalign);
+ }
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
index 400bb2384e..c954a9fa9e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -136,14 +136,14 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
.requireSkylarkProviders(forKey(JavaInfo.PROVIDER.getKey()))
// Latch onto Skylark toolchains in case they have a "runtime" (b/78647825)
.requireSkylarkProviders(forKey(ToolchainInfo.PROVIDER.getKey()))
+ // For android_sdk rules, where we just want to get at aidl runtime deps.
+ .requireSkylarkProviders(forKey(AndroidSdkProvider.PROVIDER.getKey()))
.requireProviderSets(
ImmutableList.of(
ImmutableSet.<Class<?>>of(ProtoSourcesProvider.class),
// For proto_lang_toolchain rules, where we just want to get at their runtime
// deps.
- ImmutableSet.<Class<?>>of(ProtoLangToolchainProvider.class),
- // For android_sdk rules, where we just want to get at aidl runtime deps.
- ImmutableSet.<Class<?>>of(AndroidSdkProvider.class)))
+ ImmutableSet.<Class<?>>of(ProtoLangToolchainProvider.class)))
// Parse labels since we don't have RuleDefinitionEnvironment.getLabel like in a rule
.add(
attr(ASPECT_DESUGAR_PREREQ, LABEL)
@@ -345,8 +345,7 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
if (compilationInfo == null || compilationInfo.getBootClasspath().isEmpty()) {
return ImmutableList.of(
ruleContext
- .getPrerequisite(":dex_archive_android_sdk", Mode.TARGET)
- .getProvider(AndroidSdkProvider.class)
+ .getPrerequisite(":dex_archive_android_sdk", Mode.TARGET, AndroidSdkProvider.PROVIDER)
.getAndroidJar());
}
return compilationInfo.getBootClasspath();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSdkProviderApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSdkProviderApi.java
new file mode 100644
index 0000000000..a1543662b2
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidSdkProviderApi.java
@@ -0,0 +1,264 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.skylarkbuildapi.android;
+
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.FilesToRunProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.StructApi;
+import com.google.devtools.build.lib.skylarkbuildapi.TransitiveInfoCollectionApi;
+import com.google.devtools.build.lib.skylarkinterface.Param;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.syntax.EvalException;
+import javax.annotation.Nullable;
+
+/**
+ * Configured targets implementing this provider can contribute Android Sdk information to the
+ * compilation.
+ */
+@SkylarkModule(name = "AndroidSdkInfo", doc = "", documented = false)
+public interface AndroidSdkProviderApi<
+ FileT extends FileApi,
+ FilesToRunProviderT extends FilesToRunProviderApi<FileT>,
+ TransT extends TransitiveInfoCollectionApi>
+ extends StructApi {
+
+ /** Name of this info object. */
+ public static final String NAME = "AndroidSdkInfo";
+
+ /** The value of build_tools_version. May be null or empty. */
+ @SkylarkCallable(name = "build_tools_version", structField = true, doc = "", documented = false)
+ String getBuildToolsVersion();
+
+ @SkylarkCallable(
+ name = "framework_aidl",
+ structField = true,
+ doc = "",
+ documented = false,
+ allowReturnNones = true)
+ FileT getFrameworkAidl();
+
+ @SkylarkCallable(
+ name = "aidl_lib",
+ structField = true,
+ doc = "",
+ documented = false,
+ allowReturnNones = true)
+ @Nullable
+ TransT getAidlLib();
+
+ @SkylarkCallable(name = "android_jar", structField = true, doc = "", documented = false)
+ FileT getAndroidJar();
+
+ @SkylarkCallable(
+ name = "source_properties",
+ structField = true,
+ doc = "",
+ documented = false,
+ allowReturnNones = true)
+ @Nullable
+ FileT getSourceProperties();
+
+ @SkylarkCallable(name = "shrinked_android_jar", structField = true, doc = "", documented = false)
+ FileT getShrinkedAndroidJar();
+
+ @SkylarkCallable(name = "main_dex_classes", structField = true, doc = "", documented = false)
+ FileT getMainDexClasses();
+
+ @SkylarkCallable(name = "adb", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getAdb();
+
+ @SkylarkCallable(name = "dx", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getDx();
+
+ @SkylarkCallable(name = "main_dex_list_creator", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getMainDexListCreator();
+
+ @SkylarkCallable(name = "aidl", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getAidl();
+
+ @SkylarkCallable(name = "aapt", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getAapt();
+
+ @SkylarkCallable(
+ name = "aapt2",
+ structField = true,
+ doc = "",
+ documented = false,
+ allowReturnNones = true)
+ @Nullable
+ FilesToRunProviderT getAapt2();
+
+ @SkylarkCallable(
+ name = "apk_builder",
+ structField = true,
+ doc = "",
+ documented = false,
+ allowReturnNones = true)
+ @Nullable
+ FilesToRunProviderT getApkBuilder();
+
+ @SkylarkCallable(name = "apk_signer", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getApkSigner();
+
+ @SkylarkCallable(name = "proguard", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getProguard();
+
+ @SkylarkCallable(name = "zip_align", structField = true, doc = "", documented = false)
+ FilesToRunProviderT getZipalign();
+
+ /** The provider implementing this can construct the AndroidSdkInfo provider. */
+ @SkylarkModule(name = "Provider", doc = "", documented = false)
+ public interface Provider<
+ FileT extends FileApi,
+ FilesToRunProviderT extends FilesToRunProviderApi<FileT>,
+ TransT extends TransitiveInfoCollectionApi>
+ extends ProviderApi {
+
+ @SkylarkCallable(
+ name = NAME,
+ doc = "The <code>AndroidSdkInfo</code> constructor.",
+ parameters = {
+ @Param(
+ name = "build_tools_version",
+ doc = "A string of the build tools version.",
+ positional = true,
+ named = false,
+ type = String.class),
+ @Param(
+ name = "framework_aidl",
+ doc = "An artifact of the AIDL framework.",
+ positional = true,
+ named = false,
+ type = FileApi.class),
+ @Param(
+ name = "aidl_lib",
+ doc = "A transitive info collection of the AIDL lib.",
+ positional = true,
+ named = false,
+ type = TransitiveInfoCollectionApi.class,
+ noneable = true),
+ @Param(
+ name = "android_jar",
+ doc = "An artifact of the Android Jar.",
+ positional = true,
+ named = false,
+ type = FileApi.class),
+ @Param(
+ name = "sourceProperties",
+ doc = "An artifact of the AIDL lib.",
+ positional = true,
+ named = false,
+ type = FileApi.class,
+ noneable = true),
+ @Param(
+ name = "shrinked_android_jar",
+ doc = "An artifact of the shrunk Android Jar.",
+ positional = true,
+ named = false,
+ type = FileApi.class),
+ @Param(
+ name = "main_dex_classes",
+ doc = "An artifact of the main dex classes.",
+ positional = true,
+ named = false,
+ type = FileApi.class),
+ @Param(
+ name = "adb",
+ doc = "A files to run provider of ADB.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ @Param(
+ name = "dx",
+ doc = "A files to run provider of Dx.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ @Param(
+ name = "main_dex_list_creator",
+ doc = "A files to run provider of the main dex list creator.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ @Param(
+ name = "aidl",
+ doc = "A files to run provider of AIDL.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ @Param(
+ name = "aapt",
+ doc = "A files to run provider of AAPT.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ @Param(
+ name = "aapt2",
+ doc = "A files to run provider of AAPT2.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class,
+ noneable = true),
+ @Param(
+ name = "apk_builder",
+ doc = "A files to run provider of the Apk builder.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class,
+ noneable = true),
+ @Param(
+ name = "apk_signer",
+ doc = "A files to run provider of the Apk signer.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ @Param(
+ name = "proguard",
+ doc = "A files to run provider of Proguard.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ @Param(
+ name = "zipalign",
+ doc = "A files to run provider of Zipalign.",
+ positional = true,
+ named = false,
+ type = FilesToRunProviderApi.class),
+ },
+ selfCall = true)
+ @SkylarkConstructor(objectType = AndroidSdkProviderApi.class)
+ AndroidSdkProviderApi<FileT, FilesToRunProviderT, TransT> createInfo(
+ String buildToolsVersion,
+ FileT frameworkAidl,
+ /*noneable*/ Object aidlLib,
+ FileT androidJar,
+ /*noneable*/ Object sourceProperties,
+ FileT shrinkedAndroidJar,
+ FileT mainDexClasses,
+ FilesToRunProviderT adb,
+ FilesToRunProviderT dx,
+ FilesToRunProviderT mainDexListCreator,
+ FilesToRunProviderT aidl,
+ FilesToRunProviderT aapt,
+ /*noneable*/ Object aapt2,
+ /*noneable*/ Object apkBuilder,
+ FilesToRunProviderT apkSigner,
+ FilesToRunProviderT proguard,
+ FilesToRunProviderT zipalign)
+ throws EvalException;
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
index b1c4e75193..5b6dd7817e 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
@@ -210,7 +210,7 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
ConfiguredTarget androidSdk = getConfiguredTarget("@androidsdk//:sdk");
assertThat(androidSdk).isNotNull();
- assertThat(androidSdk.getProvider(AndroidSdkProvider.class).getBuildToolsVersion())
+ assertThat(androidSdk.get(AndroidSdkProvider.PROVIDER).getBuildToolsVersion())
.isEqualTo("26.0.2");
}
@@ -230,7 +230,7 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
ConfiguredTarget androidSdk = getConfiguredTarget("@androidsdk//:sdk");
assertThat(androidSdk).isNotNull();
- assertThat(androidSdk.getProvider(AndroidSdkProvider.class).getAndroidJar().getExecPathString())
+ assertThat(androidSdk.get(AndroidSdkProvider.PROVIDER).getAndroidJar().getExecPathString())
.isEqualTo("external/androidsdk/platforms/android-25/android.jar");
}
@@ -253,8 +253,7 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
for (int apiLevel : apiLevels) {
ConfiguredTarget androidSdk = getConfiguredTarget("@androidsdk//:sdk-" + apiLevel);
assertThat(androidSdk).isNotNull();
- assertThat(
- androidSdk.getProvider(AndroidSdkProvider.class).getAndroidJar().getExecPathString())
+ assertThat(androidSdk.get(AndroidSdkProvider.PROVIDER).getAndroidJar().getExecPathString())
.isEqualTo(
String.format("external/androidsdk/platforms/android-%d/android.jar", apiLevel));
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
index a02601fced..f269d3dd80 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java
@@ -293,7 +293,7 @@ public abstract class AndroidBuildViewTestCase extends BuildViewTestCase {
private AndroidSdkProvider getAndroidSdk() {
Label sdk = targetConfig.getFragment(AndroidConfiguration.class).getSdk();
- return getConfiguredTarget(sdk, targetConfig).getProvider(AndroidSdkProvider.class);
+ return getConfiguredTarget(sdk, targetConfig).get(AndroidSdkProvider.PROVIDER);
}
protected void checkProguardUse(String target, String artifact, boolean expectMapping,
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java
index ad167bffae..bb9d76d744 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java
@@ -1541,7 +1541,7 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase {
assertThat(linkAction.getInputs())
.containsAllOf(
- sdk.getConfiguredTarget().getProvider(AndroidSdkProvider.class).getAndroidJar(),
+ sdk.getConfiguredTarget().get(AndroidSdkProvider.PROVIDER).getAndroidJar(),
getImplicitOutputArtifact(
a.getConfiguredTarget(),
a.getConfiguration(),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSdkTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSdkTest.java
index 6cd3cdea0d..857ff293b2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSdkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidSdkTest.java
@@ -44,8 +44,7 @@ public class AndroidSdkTest extends BuildViewTestCase {
" shrinked_android_jar = 'android.jar',",
" zipalign = 'zipalign',",
")");
- AndroidSdkProvider sdkProvider =
- getConfiguredTarget("//sdk").getProvider(AndroidSdkProvider.class);
+ AndroidSdkProvider sdkProvider = getConfiguredTarget("//sdk").get(AndroidSdkProvider.PROVIDER);
assertThat(sdkProvider.getSourceProperties().toDetailString())
.isEqualTo("[/workspace[source]]sdk/platforms/android-25/source.properties");
}