summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/prebuilt_apis_test.go6
-rw-r--r--java/sdk.go28
-rw-r--r--java/sdk_test.go8
-rw-r--r--java/testing.go3
4 files changed, 34 insertions, 11 deletions
diff --git a/java/prebuilt_apis_test.go b/java/prebuilt_apis_test.go
index 7c2e52600..79f42250b 100644
--- a/java/prebuilt_apis_test.go
+++ b/java/prebuilt_apis_test.go
@@ -28,6 +28,7 @@ func TestPrebuiltApis_SystemModulesCreation(t *testing.T) {
prepareForJavaTest,
FixtureWithPrebuiltApis(map[string][]string{
"31": {},
+ "32": {},
"current": {},
}),
).RunTest(t)
@@ -44,8 +45,11 @@ func TestPrebuiltApis_SystemModulesCreation(t *testing.T) {
// 31 only has public system modules.
"sdk_public_31_system_modules",
- // current only has public system modules.
+ // 32 and current both have public and module-lib system modules.
+ "sdk_public_32_system_modules",
+ "sdk_module-lib_32_system_modules",
"sdk_public_current_system_modules",
+ "sdk_module-lib_current_system_modules",
}
sort.Strings(expected)
android.AssertArrayString(t, "sdk system modules", expected, sdkSystemModules)
diff --git a/java/sdk.go b/java/sdk.go
index 42ed14f74..34d68aee1 100644
--- a/java/sdk.go
+++ b/java/sdk.go
@@ -60,10 +60,28 @@ func defaultJavaLanguageVersion(ctx android.EarlyModuleContext, s android.SdkSpe
}
}
-// systemModuleKind returns the kind of system modules to use.
-func systemModuleKind() android.SdkKind {
- // Currently, every sdk version uses the system modules for the public API.
- return android.SdkPublic
+// systemModuleKind returns the kind of system modules to use for the supplied combination of sdk
+// kind and API level.
+func systemModuleKind(sdkKind android.SdkKind, apiLevel android.ApiLevel) android.SdkKind {
+ systemModuleKind := sdkKind
+ if apiLevel.LessThanOrEqualTo(android.LastWithoutModuleLibCoreSystemModules) {
+ // API levels less than or equal to 31 did not provide a core-for-system-modules.jar
+ // specifically for the module-lib API. So, always use the public system modules for them.
+ systemModuleKind = android.SdkPublic
+ } else if systemModuleKind == android.SdkCore {
+ // Core is by definition what is included in the system module for the public API so should
+ // just use its system modules.
+ systemModuleKind = android.SdkPublic
+ } else if systemModuleKind == android.SdkSystem || systemModuleKind == android.SdkTest {
+ // The core system and test APIs are currently the same as the public API so they should use
+ // its system modules.
+ systemModuleKind = android.SdkPublic
+ } else if systemModuleKind == android.SdkSystemServer {
+ // The core system server API is the same as the core module-lib API.
+ systemModuleKind = android.SdkModule
+ }
+
+ return systemModuleKind
}
func decodeSdkDep(ctx android.EarlyModuleContext, sdkContext android.SdkContext) sdkDep {
@@ -111,7 +129,7 @@ func decodeSdkDep(ctx android.EarlyModuleContext, sdkContext android.SdkContext)
var systemModules string
if defaultJavaLanguageVersion(ctx, sdkVersion).usesJavaModules() {
- systemModuleKind := systemModuleKind()
+ systemModuleKind := systemModuleKind(sdkVersion.Kind, sdkVersion.ApiLevel)
systemModules = fmt.Sprintf("sdk_%s_%s_system_modules", systemModuleKind, sdkVersion.ApiLevel)
}
diff --git a/java/sdk_test.go b/java/sdk_test.go
index 9a711922c..5c4a6d244 100644
--- a/java/sdk_test.go
+++ b/java/sdk_test.go
@@ -304,7 +304,7 @@ func TestClasspath(t *testing.T) {
name: "module_current",
properties: `sdk_version: "module_current",`,
bootclasspath: []string{`""`},
- system: "sdk_public_current_system_modules",
+ system: "sdk_module-lib_current_system_modules",
java8classpath: []string{"prebuilts/sdk/current/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
java9classpath: []string{"prebuilts/sdk/current/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
aidl: "-pprebuilts/sdk/current/public/framework.aidl",
@@ -331,7 +331,7 @@ func TestClasspath(t *testing.T) {
name: "module_32",
properties: `sdk_version: "module_32",`,
bootclasspath: []string{`""`},
- system: "sdk_public_32_system_modules",
+ system: "sdk_module-lib_32_system_modules",
java8classpath: []string{"prebuilts/sdk/32/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
java9classpath: []string{"prebuilts/sdk/32/module-lib/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
aidl: "-pprebuilts/sdk/32/public/framework.aidl",
@@ -354,7 +354,7 @@ func TestClasspath(t *testing.T) {
name: "system_server_current",
properties: `sdk_version: "system_server_current",`,
bootclasspath: []string{`""`},
- system: "sdk_public_current_system_modules",
+ system: "sdk_module-lib_current_system_modules",
java8classpath: []string{"prebuilts/sdk/current/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
java9classpath: []string{"prebuilts/sdk/current/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
aidl: "-pprebuilts/sdk/current/public/framework.aidl",
@@ -381,7 +381,7 @@ func TestClasspath(t *testing.T) {
name: "system_server_32",
properties: `sdk_version: "system_server_32",`,
bootclasspath: []string{`""`},
- system: "sdk_public_32_system_modules",
+ system: "sdk_module-lib_32_system_modules",
java8classpath: []string{"prebuilts/sdk/32/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
java9classpath: []string{"prebuilts/sdk/32/system-server/android.jar", "prebuilts/sdk/tools/core-lambda-stubs.jar"},
aidl: "-pprebuilts/sdk/32/public/framework.aidl",
diff --git a/java/testing.go b/java/testing.go
index fafc8d760..3397e4667 100644
--- a/java/testing.go
+++ b/java/testing.go
@@ -172,9 +172,10 @@ func prebuiltApisFilesForModules(apiLevels []string, modules []string) map[strin
fs := make(map[string][]byte)
for _, level := range apiLevels {
+ apiLevel := android.ApiLevelForTest(level)
for _, sdkKind := range []android.SdkKind{android.SdkPublic, android.SdkSystem, android.SdkModule, android.SdkSystemServer, android.SdkTest} {
// A core-for-system-modules file must only be created for the sdk kind that supports it.
- if sdkKind == systemModuleKind() {
+ if sdkKind == systemModuleKind(sdkKind, apiLevel) {
fs[fmt.Sprintf("prebuilts/sdk/%s/%s/core-for-system-modules.jar", level, sdkKind)] = nil
}