summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2024-05-01 12:52:35 +0100
committer Paul Duffin <paulduffin@google.com> 2024-05-02 17:33:02 +0100
commit5a195f40a0707c0d40075fe8f78bfc60fd059914 (patch)
tree3d225277e8b28078ebc7009a8f5dbd4b729c1c29 /java
parent2ced2eb07ff827ea7cd67ff6c4c6008cec42a998 (diff)
Add pattern to match android-plus-updatable.jar
Change https://r.android.com/3068903 adds some extra `android-plus-updatable.jar` files in `module-lib` and `system-server` directories of API versions 30 through 34 in `prebuilts/sdk`. This change modifies the build to pass those files, along with appropriate `--android-jar-pattern` options to Metalava so it can use them when generating `api-versions.xml` files for the different API surfaces. The extra patterns are only passed when `extension_info_file` is specified as there is no point in including the updatable modules that contribute to SDK extensions without providing information about the SDK extensions as well. Bug: 337836752 Test: See https://r.android.com/3068903 Change-Id: I439179a9d35a4bb677e3bf87a3aea4a983724534
Diffstat (limited to 'java')
-rw-r--r--java/droidstubs.go30
1 files changed, 29 insertions, 1 deletions
diff --git a/java/droidstubs.go b/java/droidstubs.go
index f065afbea..24caf6f37 100644
--- a/java/droidstubs.go
+++ b/java/droidstubs.go
@@ -604,6 +604,11 @@ func (d *Droidstubs) apiLevelsAnnotationsFlags(ctx android.ModuleContext, cmd *a
}
}
+// AndroidPlusUpdatableJar is the name of some extra jars added into `module-lib` and
+// `system-server` directories that contain all the APIs provided by the platform and updatable
+// modules because the `android.jar` files do not. See b/337836752.
+const AndroidPlusUpdatableJar = "android-plus-updatable.jar"
+
func (d *Droidstubs) apiLevelsGenerationFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, stubsType StubsType, apiVersionsXml android.WritablePath) {
if len(d.properties.Api_levels_annotations_dirs) == 0 {
ctx.PropertyErrorf("api_levels_annotations_dirs",
@@ -658,6 +663,13 @@ func (d *Droidstubs) apiLevelsGenerationFlags(ctx android.ModuleContext, cmd *an
} else if depBase == filename {
// Check to see if it matches a dessert release for an SDK, e.g. Android, Car, Wear, etc..
cmd.Implicit(dep)
+ } else if depBase == AndroidPlusUpdatableJar && d.properties.Extensions_info_file != nil {
+ // The output api-versions.xml has been requested to include information on SDK
+ // extensions. That means it also needs to include
+ // so
+ // The module-lib and system-server directories should use `android-plus-updatable.jar`
+ // instead of `android.jar`. See AndroidPlusUpdatableJar for more information.
+ cmd.Implicit(dep)
} else if filename != "android.jar" && depBase == "android.jar" {
// Metalava implicitly searches these patterns:
// prebuilts/tools/common/api-versions/android-%/android.jar
@@ -676,9 +688,25 @@ func (d *Droidstubs) apiLevelsGenerationFlags(ctx android.ModuleContext, cmd *an
}
})
+ // Generate the list of --android-jar-pattern options. The order matters so the first one which
+ // matches will be the one that is used for a specific api level..
for _, sdkDir := range sdkDirs {
for _, dir := range dirs {
- cmd.FlagWithArg("--android-jar-pattern ", fmt.Sprintf("%s/%%/%s/%s", dir, sdkDir, filename))
+ addPattern := func(jarFilename string) {
+ cmd.FlagWithArg("--android-jar-pattern ", fmt.Sprintf("%s/%%/%s/%s", dir, sdkDir, jarFilename))
+ }
+
+ if sdkDir == "module-lib" || sdkDir == "system-server" {
+ // The module-lib and system-server android.jars do not include the updatable modules (as
+ // doing so in the source would introduce dependency cycles and the prebuilts have to
+ // match the sources). So, instead an additional `android-plus-updatable.jar` will be used
+ // that does include the updatable modules and this pattern will match that. This pattern
+ // is added in addition to the following pattern to decouple this change from the change
+ // to add the `android-plus-updatable.jar`.
+ addPattern(AndroidPlusUpdatableJar)
+ }
+
+ addPattern(filename)
}
}