java_sdk_library: Add sdk_version for API scopes
Allow the sdk_version against which the stubs for a scope are compiled
to be specified in the module on a per scope basis.
Bug: 155164730
Test: m nothing
Merged-In: I5881e5ee7c2169c30f544882344a60a602dae917
Change-Id: I5881e5ee7c2169c30f544882344a60a602dae917
(cherry picked from commit 87a05a389d
)
This commit is contained in:
@@ -1247,6 +1247,20 @@ func TestJavaSdkLibrary_InvalidScopes(t *testing.T) {
|
|||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
|
||||||
|
testJava(t, `
|
||||||
|
java_sdk_library {
|
||||||
|
name: "foo",
|
||||||
|
srcs: ["a.java", "b.java"],
|
||||||
|
api_packages: ["foo"],
|
||||||
|
system: {
|
||||||
|
enabled: true,
|
||||||
|
sdk_version: "module_current",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
var compilerFlagsTestCases = []struct {
|
var compilerFlagsTestCases = []struct {
|
||||||
in string
|
in string
|
||||||
out bool
|
out bool
|
||||||
|
@@ -320,6 +320,22 @@ type ApiScopeProperties struct {
|
|||||||
// Otherwise, if this is not set for any scope then the default behavior is
|
// Otherwise, if this is not set for any scope then the default behavior is
|
||||||
// scope specific so please refer to the scope specific property documentation.
|
// scope specific so please refer to the scope specific property documentation.
|
||||||
Enabled *bool
|
Enabled *bool
|
||||||
|
|
||||||
|
// The sdk_version to use for building the stubs.
|
||||||
|
//
|
||||||
|
// If not specified then it will use an sdk_version determined as follows:
|
||||||
|
// 1) If the sdk_version specified on the java_sdk_library is none then this
|
||||||
|
// will be none. This is used for java_sdk_library instances that are used
|
||||||
|
// to create stubs that contribute to the core_current sdk version.
|
||||||
|
// 2) Otherwise, it is assumed that this library extends but does not contribute
|
||||||
|
// directly to a specific sdk_version and so this uses the sdk_version appropriate
|
||||||
|
// for the api scope. e.g. public will use sdk_version: current, system will use
|
||||||
|
// sdk_version: system_current, etc.
|
||||||
|
//
|
||||||
|
// This does not affect the sdk_version used for either generating the stubs source
|
||||||
|
// or the API file. They both have to use the same sdk_version as is used for
|
||||||
|
// compiling the implementation library.
|
||||||
|
Sdk_version *string
|
||||||
}
|
}
|
||||||
|
|
||||||
type sdkLibraryProperties struct {
|
type sdkLibraryProperties struct {
|
||||||
@@ -701,6 +717,11 @@ func (module *SdkLibrary) apiDistPath(apiScope *apiScope) string {
|
|||||||
|
|
||||||
// Get the sdk version for use when compiling the stubs library.
|
// Get the sdk version for use when compiling the stubs library.
|
||||||
func (module *SdkLibrary) sdkVersionForStubsLibrary(mctx android.EarlyModuleContext, apiScope *apiScope) string {
|
func (module *SdkLibrary) sdkVersionForStubsLibrary(mctx android.EarlyModuleContext, apiScope *apiScope) string {
|
||||||
|
scopeProperties := module.scopeToProperties[apiScope]
|
||||||
|
if scopeProperties.Sdk_version != nil {
|
||||||
|
return proptools.String(scopeProperties.Sdk_version)
|
||||||
|
}
|
||||||
|
|
||||||
sdkDep := decodeSdkDep(mctx, sdkContext(&module.Library))
|
sdkDep := decodeSdkDep(mctx, sdkContext(&module.Library))
|
||||||
if sdkDep.hasStandardLibs() {
|
if sdkDep.hasStandardLibs() {
|
||||||
// If building against a standard sdk then use the sdk version appropriate for the scope.
|
// If building against a standard sdk then use the sdk version appropriate for the scope.
|
||||||
|
@@ -1134,7 +1134,69 @@ sdk_snapshot {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSnapshotWithJavaSdkLibrary_ApiSurfaces(t *testing.T) {
|
func TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
|
||||||
|
result := testSdkWithJava(t, `
|
||||||
|
sdk {
|
||||||
|
name: "mysdk",
|
||||||
|
java_sdk_libs: ["myjavalib"],
|
||||||
|
}
|
||||||
|
|
||||||
|
java_sdk_library {
|
||||||
|
name: "myjavalib",
|
||||||
|
srcs: ["Test.java"],
|
||||||
|
sdk_version: "module_current",
|
||||||
|
public: {
|
||||||
|
enabled: true,
|
||||||
|
sdk_version: "module_current",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
result.CheckSnapshot("mysdk", "",
|
||||||
|
checkAndroidBpContents(`
|
||||||
|
// This is auto-generated. DO NOT EDIT.
|
||||||
|
|
||||||
|
java_sdk_library_import {
|
||||||
|
name: "mysdk_myjavalib@current",
|
||||||
|
sdk_member_name: "myjavalib",
|
||||||
|
public: {
|
||||||
|
jars: ["sdk_library/public/myjavalib-stubs.jar"],
|
||||||
|
stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
|
||||||
|
current_api: "sdk_library/public/myjavalib.txt",
|
||||||
|
removed_api: "sdk_library/public/myjavalib-removed.txt",
|
||||||
|
sdk_version: "module_current",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
java_sdk_library_import {
|
||||||
|
name: "myjavalib",
|
||||||
|
prefer: false,
|
||||||
|
public: {
|
||||||
|
jars: ["sdk_library/public/myjavalib-stubs.jar"],
|
||||||
|
stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
|
||||||
|
current_api: "sdk_library/public/myjavalib.txt",
|
||||||
|
removed_api: "sdk_library/public/myjavalib-removed.txt",
|
||||||
|
sdk_version: "module_current",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
sdk_snapshot {
|
||||||
|
name: "mysdk@current",
|
||||||
|
java_sdk_libs: ["mysdk_myjavalib@current"],
|
||||||
|
}
|
||||||
|
`),
|
||||||
|
checkAllCopyRules(`
|
||||||
|
.intermediates/myjavalib.stubs/android_common/javac/myjavalib.stubs.jar -> sdk_library/public/myjavalib-stubs.jar
|
||||||
|
.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
|
||||||
|
.intermediates/myjavalib.stubs.source/android_common/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib-removed.txt
|
||||||
|
`),
|
||||||
|
checkMergeZips(
|
||||||
|
".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
|
||||||
result := testSdkWithJava(t, `
|
result := testSdkWithJava(t, `
|
||||||
sdk {
|
sdk {
|
||||||
name: "mysdk",
|
name: "mysdk",
|
||||||
|
Reference in New Issue
Block a user