java_sdk_library use prebuilt jars for numeric sdk_version
Previously, when a library that used a numeric sdk version also referenced a java_sdk_library it would use the current version of its API. That was dangerous as there is an expectation that an app building against a numbered version will also be targeted at that version and so building against a later version of the API could hide runtime incompatibilities. This change will use prebuilt versions of the java_sdk_library's api when being built for a numbered sdk version. Bug: 148080325 Test: m droid Change-Id: I3fd416553950785a443c1702e495a96debc33331
This commit is contained in:
@@ -1099,6 +1099,12 @@ func TestJavaSdkLibrary(t *testing.T) {
|
|||||||
libs: ["foo"],
|
libs: ["foo"],
|
||||||
sdk_version: "test_current",
|
sdk_version: "test_current",
|
||||||
}
|
}
|
||||||
|
java_library {
|
||||||
|
name: "baz-29",
|
||||||
|
srcs: ["c.java"],
|
||||||
|
libs: ["foo"],
|
||||||
|
sdk_version: "system_29",
|
||||||
|
}
|
||||||
`)
|
`)
|
||||||
|
|
||||||
// check the existence of the internal modules
|
// check the existence of the internal modules
|
||||||
@@ -1138,6 +1144,13 @@ func TestJavaSdkLibrary(t *testing.T) {
|
|||||||
"foo.stubs.test.jar")
|
"foo.stubs.test.jar")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
baz29Javac := ctx.ModuleForTests("baz-29", "android_common").Rule("javac")
|
||||||
|
// tests if baz-29 is actually linked to the system 29 stubs lib
|
||||||
|
if !strings.Contains(baz29Javac.Args["classpath"], "prebuilts/sdk/29/system/foo.jar") {
|
||||||
|
t.Errorf("baz-29 javac classpath %v does not contain %q", baz29Javac.Args["classpath"],
|
||||||
|
"prebuilts/sdk/29/system/foo.jar")
|
||||||
|
}
|
||||||
|
|
||||||
// test if baz has exported SDK lib names foo and bar to qux
|
// test if baz has exported SDK lib names foo and bar to qux
|
||||||
qux := ctx.ModuleForTests("qux", "android_common")
|
qux := ctx.ModuleForTests("qux", "android_common")
|
||||||
if quxLib, ok := qux.Module().(*Library); ok {
|
if quxLib, ok := qux.Module().(*Library); ok {
|
||||||
|
@@ -683,8 +683,9 @@ func (module *SdkLibrary) sdkJars(
|
|||||||
sdkVersion sdkSpec,
|
sdkVersion sdkSpec,
|
||||||
headerJars bool) android.Paths {
|
headerJars bool) android.Paths {
|
||||||
|
|
||||||
// This module is just a wrapper for the stubs.
|
// If a specific numeric version has been requested or the build is explicitly configured
|
||||||
if ctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
// for it then use prebuilt versions of the sdk.
|
||||||
|
if sdkVersion.version.isNumbered() || ctx.Config().UnbundledBuildUsePrebuiltSdks() {
|
||||||
return module.PrebuiltJars(ctx, sdkVersion)
|
return module.PrebuiltJars(ctx, sdkVersion)
|
||||||
} else {
|
} else {
|
||||||
if !sdkVersion.specified() {
|
if !sdkVersion.specified() {
|
||||||
|
@@ -61,6 +61,7 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string
|
|||||||
"prebuilts/sdk/29/public/android.jar": nil,
|
"prebuilts/sdk/29/public/android.jar": nil,
|
||||||
"prebuilts/sdk/29/public/framework.aidl": nil,
|
"prebuilts/sdk/29/public/framework.aidl": nil,
|
||||||
"prebuilts/sdk/29/system/android.jar": nil,
|
"prebuilts/sdk/29/system/android.jar": nil,
|
||||||
|
"prebuilts/sdk/29/system/foo.jar": nil,
|
||||||
"prebuilts/sdk/current/core/android.jar": nil,
|
"prebuilts/sdk/current/core/android.jar": nil,
|
||||||
"prebuilts/sdk/current/public/android.jar": nil,
|
"prebuilts/sdk/current/public/android.jar": nil,
|
||||||
"prebuilts/sdk/current/public/framework.aidl": nil,
|
"prebuilts/sdk/current/public/framework.aidl": nil,
|
||||||
|
Reference in New Issue
Block a user