From 3198f3cb52c07addf3953edae1a826947b0714eb Mon Sep 17 00:00:00 2001 From: Jihoon Kang Date: Thu, 26 Jan 2023 08:08:52 +0000 Subject: Generate java_api_contribution module from droidstubs module Context - droidstubs module are either generated from the java_sdk_library module or defined in the bp files. - Since droidstubs module contains API text file property, java_api_contribution module can by dynamically created from droidstubs. Implementation - Add `api_surface` property in droidstubs module. This property is either inherited from the java_sdk_library or written in the module definition in the bp file. - Add defaultable hook in droidstubs module to generate the child java_api_contribution module. Test: m Change-Id: Ica43d65614723c623cd0c155266f9844e69e5d5e --- java/java.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'java/java.go') diff --git a/java/java.go b/java/java.go index 7078cc38f..5859e9091 100644 --- a/java/java.go +++ b/java/java.go @@ -1594,7 +1594,11 @@ type JavaApiImportInfo struct { var JavaApiImportProvider = blueprint.NewProvider(JavaApiImportInfo{}) func (ap *JavaApiContribution) GenerateAndroidBuildActions(ctx android.ModuleContext) { - apiFile := android.PathForModuleSrc(ctx, String(ap.properties.Api_file)) + var apiFile android.Path = nil + if apiFileString := ap.properties.Api_file; apiFileString != nil { + apiFile = android.PathForModuleSrc(ctx, String(apiFileString)) + } + ctx.SetProvider(JavaApiImportProvider, JavaApiImportInfo{ ApiFile: apiFile, }) @@ -1725,7 +1729,11 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { switch tag { case javaApiContributionTag: provider := ctx.OtherModuleProvider(dep, JavaApiImportProvider).(JavaApiImportInfo) - srcFiles = append(srcFiles, android.PathForSource(ctx, provider.ApiFile.String())) + providerApiFile := provider.ApiFile + if providerApiFile == nil { + ctx.ModuleErrorf("Error: %s has an empty api file.", dep.Name()) + } + srcFiles = append(srcFiles, android.PathForSource(ctx, providerApiFile.String())) case libTag: provider := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo) classPaths = append(classPaths, provider.HeaderJars...) -- cgit v1.2.3-59-g8ed1b