java_sdk_library - Use prebuilt/prefer for unbundled app builds
Previously, the java_sdk_library had special support for disabling the stubs library when the build was configured to use prebuilts for sdks, e.g. in an unbundled app build. That caused the prebuilt version of the stubs library to be used instead. The disabling was done irrespective of whether a prebuilt was available which prevents java_sdk_library from being used in situations when prebuilts are not available, e.g. when they have not been created yet. This change moves the logic into tha java_sdk_library_import and leverages the existing prebuilt/prefer mechanism to ensure that the prebuilt version is used when required. * Adds a ForcePrefer() method to Prebuilt to allow a module to forcibly set the value of the prefer property. * Sets prefer true on the java_sdk_library_import and the stubs modules it creates when the prebuilt version should be used. * Refactors PrebuiltJars for use by both java_sdk_library and java_sdk_library_import as they both need to provide access to prebuilts for previously released versions of the library. * Removes disabling logic from java_sdk_library. This will probably require some additional java_sdk_library_import modules to be added to prebuilts/sdk/current/Android.bp. Bug: 148080325 Test: m droid && TARGET_BUILD_APPS=Camera2 m Change-Id: I0b5f751e82a2179a967ae64ca03dc9b9e7665c16
This commit is contained in:
@@ -265,13 +265,11 @@ func (module *SdkLibrary) getActiveApiScopes() apiScopes {
|
||||
}
|
||||
|
||||
func (module *SdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
useBuiltStubs := !ctx.Config().UnbundledBuildUsePrebuiltSdks()
|
||||
for _, apiScope := range module.getActiveApiScopes() {
|
||||
// Add dependencies to the stubs library
|
||||
if useBuiltStubs {
|
||||
ctx.AddVariationDependencies(nil, apiScope.stubsTag, module.stubsName(apiScope))
|
||||
}
|
||||
ctx.AddVariationDependencies(nil, apiScope.stubsTag, module.stubsName(apiScope))
|
||||
|
||||
// And the api file
|
||||
ctx.AddVariationDependencies(nil, apiScope.apiFileTag, module.docsName(apiScope))
|
||||
}
|
||||
|
||||
@@ -466,9 +464,6 @@ func (module *SdkLibrary) createStubsLibrary(mctx android.LoadHookContext, apiSc
|
||||
Compile_dex *bool
|
||||
Java_version *string
|
||||
Product_variables struct {
|
||||
Unbundled_build struct {
|
||||
Enabled *bool
|
||||
}
|
||||
Pdk struct {
|
||||
Enabled *bool
|
||||
}
|
||||
@@ -487,10 +482,6 @@ func (module *SdkLibrary) createStubsLibrary(mctx android.LoadHookContext, apiSc
|
||||
props.System_modules = module.Library.Module.deviceProperties.System_modules
|
||||
props.Installable = proptools.BoolPtr(false)
|
||||
props.Libs = module.sdkLibraryProperties.Stub_only_libs
|
||||
// Unbundled apps will use the prebult one from /prebuilts/sdk
|
||||
if mctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
||||
props.Product_variables.Unbundled_build.Enabled = proptools.BoolPtr(false)
|
||||
}
|
||||
props.Product_variables.Pdk.Enabled = proptools.BoolPtr(false)
|
||||
props.Openjdk9.Srcs = module.Library.Module.properties.Openjdk9.Srcs
|
||||
props.Openjdk9.Javacflags = module.Library.Module.properties.Openjdk9.Javacflags
|
||||
@@ -651,7 +642,7 @@ func (module *SdkLibrary) createXmlFile(mctx android.LoadHookContext) {
|
||||
mctx.CreateModule(android.PrebuiltEtcFactory, &etcProps)
|
||||
}
|
||||
|
||||
func (module *SdkLibrary) PrebuiltJars(ctx android.BaseModuleContext, s sdkSpec) android.Paths {
|
||||
func PrebuiltJars(ctx android.BaseModuleContext, baseName string, s sdkSpec) android.Paths {
|
||||
var ver sdkVersion
|
||||
var kind sdkKind
|
||||
if s.usePrebuilt(ctx) {
|
||||
@@ -665,7 +656,7 @@ func (module *SdkLibrary) PrebuiltJars(ctx android.BaseModuleContext, s sdkSpec)
|
||||
}
|
||||
|
||||
dir := filepath.Join("prebuilts", "sdk", ver.String(), kind.String())
|
||||
jar := filepath.Join(dir, module.BaseModuleName()+".jar")
|
||||
jar := filepath.Join(dir, baseName+".jar")
|
||||
jarPath := android.ExistentPathForSource(ctx, jar)
|
||||
if !jarPath.Valid() {
|
||||
if ctx.Config().AllowMissingDependencies() {
|
||||
@@ -683,10 +674,9 @@ func (module *SdkLibrary) sdkJars(
|
||||
sdkVersion sdkSpec,
|
||||
headerJars bool) android.Paths {
|
||||
|
||||
// If a specific numeric version has been requested or the build is explicitly configured
|
||||
// for it then use prebuilt versions of the sdk.
|
||||
if sdkVersion.version.isNumbered() || ctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
||||
return module.PrebuiltJars(ctx, sdkVersion)
|
||||
// If a specific numeric version has been requested then use prebuilt versions of the sdk.
|
||||
if sdkVersion.version.isNumbered() {
|
||||
return PrebuiltJars(ctx, module.BaseModuleName(), sdkVersion)
|
||||
} else {
|
||||
if !sdkVersion.specified() {
|
||||
if headerJars {
|
||||
@@ -899,6 +889,11 @@ func (module *sdkLibraryImport) Name() string {
|
||||
|
||||
func (module *sdkLibraryImport) createInternalModules(mctx android.LoadHookContext) {
|
||||
|
||||
// If the build is configured to use prebuilts then force this to be preferred.
|
||||
if mctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
||||
module.prebuilt.ForcePrefer()
|
||||
}
|
||||
|
||||
for apiScope, scopeProperties := range module.scopeProperties() {
|
||||
if len(scopeProperties.Jars) == 0 {
|
||||
continue
|
||||
@@ -914,6 +909,7 @@ func (module *sdkLibraryImport) createInternalModules(mctx android.LoadHookConte
|
||||
Sdk_version *string
|
||||
Libs []string
|
||||
Jars []string
|
||||
Prefer *bool
|
||||
}{}
|
||||
|
||||
props.Name = proptools.StringPtr(apiScope.stubsModuleName(module.BaseModuleName()))
|
||||
@@ -933,6 +929,12 @@ func (module *sdkLibraryImport) createInternalModules(mctx android.LoadHookConte
|
||||
props.System_ext_specific = proptools.BoolPtr(true)
|
||||
}
|
||||
|
||||
// If the build should use prebuilt sdks then set prefer to true on the stubs library.
|
||||
// That will cause the prebuilt version of the stubs to override the source version.
|
||||
if mctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
||||
props.Prefer = proptools.BoolPtr(true)
|
||||
}
|
||||
|
||||
mctx.CreateModule(ImportFactory, &props)
|
||||
}
|
||||
|
||||
@@ -980,6 +982,11 @@ func (module *sdkLibraryImport) sdkJars(
|
||||
ctx android.BaseModuleContext,
|
||||
sdkVersion sdkSpec) android.Paths {
|
||||
|
||||
// If a specific numeric version has been requested then use prebuilt versions of the sdk.
|
||||
if sdkVersion.version.isNumbered() {
|
||||
return PrebuiltJars(ctx, module.BaseModuleName(), sdkVersion)
|
||||
}
|
||||
|
||||
var apiScope *apiScope
|
||||
switch sdkVersion.kind {
|
||||
case sdkSystem:
|
||||
|
Reference in New Issue
Block a user