From 28a98493bf2c7555ce96fdbf188f10e222ad239a Mon Sep 17 00:00:00 2001 From: Googler Date: Wed, 2 Nov 2022 03:55:29 -0700 Subject: [PATCH] Add a new provider for injecting native libs in android_binary This reverts the changes made recently to AndroidApplicationResourceInfo and moves them to a separate provider. This helps keep the native libs related processing in Starlark separate from resources processing. PiperOrigin-RevId: 485555064 Change-Id: I78725fe022f1e0089f063681b42c857d001165cf (cherry picked from commit e3fae33312b4a6dd230f441b6764f373d0f1f83e) --- .../bazel/rules/BazelRuleClassProvider.java | 2 + .../AndroidApplicationResourceInfo.java | 59 +-------- .../lib/rules/android/AndroidBinary.java | 13 +- .../android/AndroidBinaryNativeLibsInfo.java | 119 ++++++++++++++++++ .../rules/android/AndroidStarlarkData.java | 23 ---- .../AndroidApplicationResourceInfoApi.java | 48 +------ .../AndroidBinaryNativeLibsInfoApi.java | 112 +++++++++++++++++ .../android/AndroidBootstrap.java | 3 + 8 files changed, 247 insertions(+), 132 deletions(-) create mode 100644 src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryNativeLibsInfo.java create mode 100644 src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryNativeLibsInfoApi.java diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java index b37121206c3815..55e0b1178b05b1 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java @@ -63,6 +63,7 @@ import com.google.devtools.build.lib.rules.android.AndroidApplicationResourceInfo; import com.google.devtools.build.lib.rules.android.AndroidAssetsInfo; import com.google.devtools.build.lib.rules.android.AndroidBinaryDataInfo; +import com.google.devtools.build.lib.rules.android.AndroidBinaryNativeLibsInfo; import com.google.devtools.build.lib.rules.android.AndroidCcLinkParamsProvider; import com.google.devtools.build.lib.rules.android.AndroidConfiguration; import com.google.devtools.build.lib.rules.android.AndroidDeviceBrokerInfo; @@ -421,6 +422,7 @@ public void init(ConfiguredRuleClassProvider.Builder builder) { AndroidFeatureFlagSetProvider.PROVIDER, ProguardMappingProvider.PROVIDER, AndroidBinaryDataInfo.PROVIDER, + AndroidBinaryNativeLibsInfo.PROVIDER, BaselineProfileProvider.PROVIDER); builder.addStarlarkBootstrap(bootstrap); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidApplicationResourceInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidApplicationResourceInfo.java index 1513d4a9781ce8..0dcea32526fce6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidApplicationResourceInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidApplicationResourceInfo.java @@ -15,16 +15,11 @@ import static com.google.devtools.build.lib.rules.android.AndroidStarlarkData.fromNoneable; -import com.google.common.collect.Maps; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.collect.nestedset.Depset; -import com.google.devtools.build.lib.collect.nestedset.NestedSet; 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.starlarkbuildapi.android.AndroidApplicationResourceInfoApi; -import javax.annotation.Nullable; -import net.starlark.java.eval.Dict; import net.starlark.java.eval.EvalException; /** A provider for Android resource APKs (".ap_") and related info. */ @@ -47,8 +42,6 @@ public class AndroidApplicationResourceInfo extends NativeInfo private final Artifact databindingLayoutInfoZip; private final Artifact buildStampJar; private final boolean shouldCompileJavaSrcs; - private final NativeLibs nativeLibs; - private final NestedSet transitiveNativeLibs; AndroidApplicationResourceInfo( Artifact resourceApk, @@ -61,9 +54,7 @@ public class AndroidApplicationResourceInfo extends NativeInfo Artifact resourcesZip, Artifact databindingLayoutInfoZip, Artifact buildStampJar, - boolean shouldCompileJavaSrcs, - NativeLibs nativeLibs, - NestedSet transitiveNativeLibs) { + boolean shouldCompileJavaSrcs) { this.resourceApk = resourceApk; this.resourceJavaSrcJar = resourceJavaSrcJar; this.resourceJavaClassJar = resourceJavaClassJar; @@ -75,8 +66,6 @@ public class AndroidApplicationResourceInfo extends NativeInfo this.databindingLayoutInfoZip = databindingLayoutInfoZip; this.buildStampJar = buildStampJar; this.shouldCompileJavaSrcs = shouldCompileJavaSrcs; - this.nativeLibs = nativeLibs; - this.transitiveNativeLibs = transitiveNativeLibs; } @Override @@ -145,44 +134,6 @@ public boolean shouldCompileJavaSrcs() { return shouldCompileJavaSrcs; } - @Nullable - @Override - public Dict getNativeLibsStarlark() { - if (nativeLibs == null) { - return null; - } - return Dict.immutableCopyOf( - Maps.transformValues(nativeLibs.getMap(), set -> Depset.of(Artifact.TYPE, set))); - } - - @Nullable - @Override - public Artifact getNativeLibsNameStarlark() { - if (nativeLibs == null) { - return null; - } - return nativeLibs.getName(); - } - - @Nullable - @Override - public Depset getTransitiveNativeLibsStarlark() { - if (transitiveNativeLibs == null) { - return null; - } - return Depset.of(Artifact.TYPE, transitiveNativeLibs); - } - - @Nullable - public NativeLibs getNativeLibs() { - return nativeLibs; - } - - @Nullable - public NestedSet getTransitiveNativeLibs() { - return transitiveNativeLibs; - } - /** Provider for {@link AndroidApplicationResourceInfo}. */ public static class AndroidApplicationResourceInfoProvider extends BuiltinProvider @@ -204,9 +155,7 @@ public AndroidApplicationResourceInfoApi createInfo( Object resourcesZip, Object databindingLayoutInfoZip, Object buildStampJar, - boolean shouldCompileJavaSrcs, - Object nativeLibs, - Object transitiveNativeLibs) + boolean shouldCompileJavaSrcs) throws EvalException { return new AndroidApplicationResourceInfo( @@ -220,9 +169,7 @@ public AndroidApplicationResourceInfoApi createInfo( fromNoneable(resourcesZip, Artifact.class), fromNoneable(databindingLayoutInfoZip, Artifact.class), fromNoneable(buildStampJar, Artifact.class), - shouldCompileJavaSrcs, - AndroidStarlarkData.getNativeLibs(nativeLibs), - AndroidStarlarkData.fromNoneableDepset(transitiveNativeLibs, "transitive_native_libs")); + shouldCompileJavaSrcs); } } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index f2539123588d6b..a6612d83fca5dd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -408,10 +408,12 @@ private static RuleConfiguredTargetBuilder init( .build(ruleContext)); } + AndroidBinaryNativeLibsInfo nativeLibsInfo = + ruleContext.getPrerequisite("application_resources", AndroidBinaryNativeLibsInfo.PROVIDER); + NativeLibs nativeLibs; - if (androidApplicationResourceInfo != null - && androidApplicationResourceInfo.getNativeLibs() != null) { - nativeLibs = androidApplicationResourceInfo.getNativeLibs(); + if (nativeLibsInfo != null && nativeLibsInfo.getNativeLibs() != null) { + nativeLibs = nativeLibsInfo.getNativeLibs(); } else { nativeLibs = NativeLibs.fromLinkedNativeDeps( @@ -422,9 +424,8 @@ private static RuleConfiguredTargetBuilder init( } final NestedSet nativeLibsAar; - if (androidApplicationResourceInfo != null - && androidApplicationResourceInfo.getTransitiveNativeLibs() != null) { - nativeLibsAar = androidApplicationResourceInfo.getTransitiveNativeLibs(); + if (nativeLibsInfo != null && nativeLibsInfo.getTransitiveNativeLibs() != null) { + nativeLibsAar = nativeLibsInfo.getTransitiveNativeLibs(); } else { nativeLibsAar = getTransitiveNativeLibs(ruleContext); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryNativeLibsInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryNativeLibsInfo.java new file mode 100644 index 00000000000000..e6e56ca068317f --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryNativeLibsInfo.java @@ -0,0 +1,119 @@ +// Copyright 2022 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.rules.android; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.collect.nestedset.Depset; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; +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.starlarkbuildapi.android.AndroidApplicationResourceInfoApi; +import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidBinaryNativeLibsInfoApi; +import java.util.Map.Entry; +import javax.annotation.Nullable; +import net.starlark.java.eval.Dict; +import net.starlark.java.eval.EvalException; + +/** A provider for native libs for android_binary. */ +@Immutable +public class AndroidBinaryNativeLibsInfo extends NativeInfo + implements AndroidBinaryNativeLibsInfoApi { + + /** Singleton instance of the provider type for {@link AndroidBinaryNativeLibsInfo}. */ + public static final AndroidBinaryNativeLibsInfoProvider PROVIDER = + new AndroidBinaryNativeLibsInfoProvider(); + + private final NativeLibs nativeLibs; + private final NestedSet transitiveNativeLibs; + + AndroidBinaryNativeLibsInfo(NativeLibs nativeLibs, NestedSet transitiveNativeLibs) { + this.nativeLibs = nativeLibs; + this.transitiveNativeLibs = transitiveNativeLibs; + } + + @Override + public AndroidBinaryNativeLibsInfoProvider getProvider() { + return PROVIDER; + } + + @Nullable + @Override + public Dict getNativeLibsStarlark() { + if (nativeLibs == null) { + return null; + } + return Dict.immutableCopyOf( + Maps.transformValues(nativeLibs.getMap(), set -> Depset.of(Artifact.TYPE, set))); + } + + @Nullable + @Override + public Artifact getNativeLibsNameStarlark() { + if (nativeLibs == null) { + return null; + } + return nativeLibs.getName(); + } + + @Nullable + @Override + public Depset getTransitiveNativeLibsStarlark() { + if (transitiveNativeLibs == null) { + return null; + } + return Depset.of(Artifact.TYPE, transitiveNativeLibs); + } + + @Nullable + public NativeLibs getNativeLibs() { + return nativeLibs; + } + + @Nullable + public NestedSet getTransitiveNativeLibs() { + return transitiveNativeLibs; + } + + /** Provider for {@link AndroidBinaryNativeLibsInfo}. */ + public static class AndroidBinaryNativeLibsInfoProvider + extends BuiltinProvider + implements AndroidBinaryNativeLibsInfoApi.Provider { + + private AndroidBinaryNativeLibsInfoProvider() { + super(AndroidApplicationResourceInfoApi.NAME, AndroidBinaryNativeLibsInfo.class); + } + + @Override + public AndroidBinaryNativeLibsInfoApi createInfo( + Dict nativeLibs, Object nativeLibsName, Object transitiveNativeLibs) + throws EvalException { + Dict nativeLibsDict = + Dict.cast(nativeLibs, String.class, Depset.class, "native_libs"); + ImmutableMap.Builder> nativeLibsMapBuilder = + ImmutableMap.builder(); + for (Entry entry : nativeLibsDict.entrySet()) { + nativeLibsMapBuilder.put( + entry.getKey(), Depset.cast(entry.getValue(), Artifact.class, "native_libs")); + } + return new AndroidBinaryNativeLibsInfo( + NativeLibs.of( + nativeLibsMapBuilder.buildOrThrow(), + AndroidStarlarkData.fromNoneable(nativeLibsName, Artifact.class)), + AndroidStarlarkData.fromNoneableDepset(transitiveNativeLibs, "transitive_native_libs")); + } + } +} diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java index 92067782338e08..cf2ec4e2edcffa 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.rules.android; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -31,7 +30,6 @@ import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; -import com.google.devtools.build.lib.packages.StructImpl; import com.google.devtools.build.lib.rules.android.AndroidLibraryAarInfo.Aar; import com.google.devtools.build.lib.rules.android.databinding.DataBinding; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; @@ -46,7 +44,6 @@ import com.google.devtools.build.lib.vfs.PathFragment; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Objects; import java.util.Optional; import javax.annotation.Nullable; @@ -71,26 +68,6 @@ public abstract class AndroidStarlarkData AndroidBinaryDataInfo, ValidatedAndroidResources> { - @Nullable - public static NativeLibs getNativeLibs(Object struct) throws EvalException { - if (struct != Starlark.NONE) { - StructImpl s = (StructImpl) struct; - Dict dict = - Dict.cast(s.getValue("libs", Dict.class), String.class, Depset.class, "libs"); - ImmutableMap.Builder> nativeLibsMapBuilder = - ImmutableMap.builder(); - for (Entry entry : dict.entrySet()) { - nativeLibsMapBuilder.put( - entry.getKey(), Depset.cast(entry.getValue(), Artifact.class, "libs")); - } - return NativeLibs.of( - nativeLibsMapBuilder.buildOrThrow(), - fromNoneable(s.getValue("libs_name"), Artifact.class)); - } else { - return null; - } - } - public abstract AndroidSemantics getAndroidSemantics(); @Override diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java index 266d141ab10955..12b1541dfe0ec4 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidApplicationResourceInfoApi.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.starlarkbuildapi.android; import com.google.devtools.build.docgen.annot.StarlarkConstructor; -import com.google.devtools.build.lib.collect.nestedset.Depset; import com.google.devtools.build.lib.starlarkbuildapi.FileApi; import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi; import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi; @@ -23,7 +22,6 @@ import net.starlark.java.annot.ParamType; import net.starlark.java.annot.StarlarkBuiltin; import net.starlark.java.annot.StarlarkMethod; -import net.starlark.java.eval.Dict; import net.starlark.java.eval.EvalException; import net.starlark.java.eval.NoneType; @@ -146,30 +144,6 @@ public interface AndroidApplicationResourceInfoApi extend structField = true) boolean shouldCompileJavaSrcs(); - @Nullable - @StarlarkMethod( - name = "native_libs", - documented = false, - allowReturnNones = true, - structField = true) - Dict getNativeLibsStarlark(); - - @Nullable - @StarlarkMethod( - name = "native_libs_name", - documented = false, - allowReturnNones = true, - structField = true) - FileApi getNativeLibsNameStarlark(); - - @Nullable - @StarlarkMethod( - name = "transitive_native_libs", - documented = false, - allowReturnNones = true, - structField = true) - Depset getTransitiveNativeLibsStarlark(); - /** Provider for {@link AndroidApplicationResourceInfoApi}. */ @StarlarkBuiltin( name = "Provider", @@ -262,24 +236,6 @@ interface AndroidApplicationResourceInfoApiProvider exten doc = "", defaultValue = "None"), @Param(name = "should_compile_java_srcs", named = true, doc = "", defaultValue = "True"), - @Param( - name = "native_libs", - allowedTypes = { - @ParamType(type = StructApi.class), - @ParamType(type = NoneType.class), - }, - named = true, - doc = "", - defaultValue = "None"), - @Param( - name = "transitive_native_libs", - allowedTypes = { - @ParamType(type = Depset.class), - @ParamType(type = NoneType.class), - }, - named = true, - doc = "", - defaultValue = "None"), }, selfCall = true) @StarlarkConstructor @@ -294,9 +250,7 @@ AndroidApplicationResourceInfoApi createInfo( Object resourcesZip, Object databindingLayoutInfoZip, Object buildStampJar, - boolean shouldCompileJava, - Object nativeLibs, - Object transitiveNativeLibs) + boolean shouldCompileJava) throws EvalException; } } diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryNativeLibsInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryNativeLibsInfoApi.java new file mode 100644 index 00000000000000..30347d9558a328 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBinaryNativeLibsInfoApi.java @@ -0,0 +1,112 @@ +// Copyright 2022 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.starlarkbuildapi.android; + +import com.google.devtools.build.docgen.annot.StarlarkConstructor; +import com.google.devtools.build.lib.collect.nestedset.Depset; +import com.google.devtools.build.lib.starlarkbuildapi.FileApi; +import com.google.devtools.build.lib.starlarkbuildapi.core.ProviderApi; +import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi; +import javax.annotation.Nullable; +import net.starlark.java.annot.Param; +import net.starlark.java.annot.ParamType; +import net.starlark.java.annot.StarlarkBuiltin; +import net.starlark.java.annot.StarlarkMethod; +import net.starlark.java.eval.Dict; +import net.starlark.java.eval.EvalException; +import net.starlark.java.eval.NoneType; + +/** A provider for native libs for android_binary. */ +@StarlarkBuiltin( + name = "AndroidBinaryNativeLibsInfoApi", + doc = + "Do not use this module. It is intended for migration purposes only. If you depend on it, " + + "you will be broken when it is removed.", + documented = false) +public interface AndroidBinaryNativeLibsInfoApi extends StructApi { + + /** Name of this info object. */ + String NAME = "AndroidBinaryNativeLibsInfo"; + + @Nullable + @StarlarkMethod( + name = "native_libs", + documented = false, + allowReturnNones = true, + structField = true) + Dict getNativeLibsStarlark(); + + @Nullable + @StarlarkMethod( + name = "native_libs_name", + documented = false, + allowReturnNones = true, + structField = true) + FileApi getNativeLibsNameStarlark(); + + @Nullable + @StarlarkMethod( + name = "transitive_native_libs", + documented = false, + allowReturnNones = true, + structField = true) + Depset getTransitiveNativeLibsStarlark(); + + /** Provider for {@link AndroidBinaryNativeLibsInfoApi}. */ + @StarlarkBuiltin( + name = "Provider", + doc = + "Do not use this module. It is intended for migration purposes only. If you depend on " + + "it, you will be broken when it is removed.", + documented = false) + interface Provider extends ProviderApi { + + @StarlarkMethod( + name = NAME, + doc = "The AndroidBinaryNativeLibsInfo constructor.", + documented = false, + parameters = { + @Param( + name = "native_libs", + allowedTypes = { + @ParamType(type = Dict.class), + }, + named = true, + doc = ""), + @Param( + name = "native_libs_name", + allowedTypes = { + @ParamType(type = FileApi.class), + @ParamType(type = NoneType.class), + }, + named = true, + doc = "", + defaultValue = "None"), + @Param( + name = "transitive_native_libs", + allowedTypes = { + @ParamType(type = Depset.class), + @ParamType(type = NoneType.class), + }, + named = true, + doc = "", + defaultValue = "None"), + }, + selfCall = true) + @StarlarkConstructor + AndroidBinaryNativeLibsInfoApi createInfo( + Dict nativeLibs, Object nativeLibsName, Object transitiveNativeLibs) + throws EvalException; + } +} diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBootstrap.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBootstrap.java index d992fb4214a002..69edd3acc58e40 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBootstrap.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidBootstrap.java @@ -63,6 +63,7 @@ public AndroidBootstrap( AndroidFeatureFlagSetProviderApi.Provider androidFeatureFlagSetProviderApiProvider, ProguardMappingProviderApi.Provider proguardMappingProviderApiProvider, AndroidBinaryDataInfoApi.Provider androidBinaryDataInfoProvider, + AndroidBinaryNativeLibsInfoApi.Provider androidBinaryInternalNativeLibsInfoApiProvider, BaselineProfileProviderApi.Provider baselineProfileProvider) { this.androidCommon = androidCommon; @@ -73,6 +74,8 @@ public AndroidBootstrap( builder.put(AndroidResourcesInfoApi.NAME, androidResourcesInfoProvider); builder.put(AndroidNativeLibsInfoApi.NAME, androidNativeLibsInfoProvider); builder.put(AndroidApplicationResourceInfoApi.NAME, androidApplicationResourceInfoApiProvider); + builder.put( + AndroidBinaryNativeLibsInfoApi.NAME, androidBinaryInternalNativeLibsInfoApiProvider); builder.put(AndroidSdkProviderApi.NAME, androidSdkProviderApi); builder.put(AndroidManifestInfoApi.NAME, androidManifestInfo); builder.put(AndroidAssetsInfoApi.NAME, androidAssetsInfoProvider);