diff --git a/java/java_test.go b/java/java_test.go index 96bf22436..572db2f79 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -188,7 +188,7 @@ func testContext(config android.Config, bp string, "prebuilts/sdk/28/system/api/bar-removed.txt": nil, "prebuilts/sdk/28/test/api/bar-removed.txt": nil, "prebuilts/sdk/tools/core-lambda-stubs.jar": nil, - "prebuilts/sdk/Android.bp": []byte(`prebuilt_apis { name: "prebuilt_apis",}`), + "prebuilts/sdk/Android.bp": []byte(`prebuilt_apis { name: "sdk", api_dirs: ["14", "28", "current"],}`), // For framework-res, which is an implicit dependency for framework "AndroidManifest.xml": nil, diff --git a/java/prebuilt_apis.go b/java/prebuilt_apis.go index 3f4b076b5..59b2092d3 100644 --- a/java/prebuilt_apis.go +++ b/java/prebuilt_apis.go @@ -38,8 +38,14 @@ func init() { }) } +type prebuiltApisProperties struct { + // list of api version directories + Api_dirs []string +} + type prebuiltApis struct { android.ModuleBase + properties prebuiltApisProperties } func (module *prebuiltApis) DepsMutator(ctx android.BottomUpMutatorContext) { @@ -55,10 +61,6 @@ func parseJarPath(ctx android.BaseModuleContext, path string) (module string, ap apiver = elements[0] scope = elements[1] - if scope != "public" && scope != "system" && scope != "test" && scope != "core" { - // scope must be public, system or test - return - } module = strings.TrimSuffix(elements[2], ".jar") return @@ -91,7 +93,7 @@ func createImport(mctx android.TopDownMutatorContext, module string, scope strin Sdk_version *string Installable *bool }{} - props.Name = proptools.StringPtr("sdk_" + scope + "_" + apiver + "_" + module) + props.Name = proptools.StringPtr(mctx.ModuleName() + "_" + scope + "_" + apiver + "_" + module) props.Jars = append(props.Jars, path) // TODO(hansson): change to scope after migration is done. props.Sdk_version = proptools.StringPtr("current") @@ -114,22 +116,22 @@ func createFilegroup(mctx android.TopDownMutatorContext, module string, scope st func prebuiltSdkStubs(mctx android.TopDownMutatorContext) { mydir := mctx.ModuleDir() + "/" // //.jar - files, err := mctx.GlobWithDeps(mydir+"*/*/*.jar", nil) - if err != nil { - mctx.ModuleErrorf("failed to glob jar files under %q: %s", mydir, err) - } - if len(files) == 0 { - mctx.ModuleErrorf("no jar file found under %q", mydir) + var files []string + for _, apiver := range mctx.Module().(*prebuiltApis).properties.Api_dirs { + for _, scope := range []string{"public", "system", "test", "core"} { + vfiles, err := mctx.GlobWithDeps(mydir+apiver+"/"+scope+"*/*.jar", nil) + if err != nil { + mctx.ModuleErrorf("failed to glob jar files under %q: %s", mydir+apiver+"/"+scope, err) + } + files = append(files, vfiles...) + } } for _, f := range files { // create a Import module for each jar file localPath := strings.TrimPrefix(f, mydir) module, apiver, scope := parseJarPath(mctx, localPath) - - if len(module) != 0 { - createImport(mctx, module, scope, apiver, localPath) - } + createImport(mctx, module, scope, apiver, localPath) } } @@ -192,6 +194,7 @@ func prebuiltApisMutator(mctx android.TopDownMutatorContext) { func prebuiltApisFactory() android.Module { module := &prebuiltApis{} + module.AddProperties(&module.properties) android.InitAndroidModule(module) return module }