Add a new sdk_version "core_platform_current"

Add a new sdk_version "core_platform_current"
value to java_library.

This adds the ability to compile system code against the
core platform API stubs. These stubs will contain the public SDK
API _and_ a selection of extra methods just intended
for use by system code (e.g. framework .jar) and
which must be preserved if "core" is modularized to
retain source and binary compatibility. Methods
outside of the core platform API must not be relied upon.

Future changes will adding methods to the core platform API and
switch targets over to use the stubs.

As soon as feasible, (hopefully) the default for when
unspecified will be changed to be the same as specifying
core_platform_current and build rules will have to explicitly
specify when they want to compile against the core library
implementation directly.

Bug: 113148576
Test: mmm libcore/mmodules/core_platform_api_client_demo
Change-Id: I72a03f28a4c38b4232e513a088c2d4e962c98868
This commit is contained in:
Neil Fuller 2018-09-11 09:29:31 +01:00
parent b1dff80c0e
commit 3c979c3348
1 changed files with 9 additions and 4 deletions

View File

@ -412,7 +412,7 @@ type sdkContext interface {
func sdkVersionOrDefault(ctx android.BaseContext, v string) string {
switch v {
case "", "current", "system_current", "test_current", "core_current":
case "", "current", "system_current", "test_current", "core_current", "core_platform_current":
return ctx.Config().DefaultAppTargetSdk()
default:
return v
@ -423,7 +423,7 @@ func sdkVersionOrDefault(ctx android.BaseContext, v string) string {
// it returns android.FutureApiLevel (10000).
func sdkVersionToNumber(ctx android.BaseContext, v string) (int, error) {
switch v {
case "", "current", "test_current", "system_current", "core_current":
case "", "current", "test_current", "system_current", "core_current", "core_platform_current":
return ctx.Config().DefaultAppTargetSdkInt(), nil
default:
n := android.GetNumericSdkVersion(v)
@ -520,6 +520,8 @@ func decodeSdkDep(ctx android.BaseContext, sdkContext sdkContext) sdkDep {
}
if m == "core.current.stubs" {
ret.systemModules = "core-system-modules"
} else if m == "core.platform.api.stubs" {
ret.systemModules = "core-platform-api-stubs-system-modules"
}
return ret
}
@ -542,6 +544,8 @@ func decodeSdkDep(ctx android.BaseContext, sdkContext sdkContext) sdkDep {
return toModule("android_test_stubs_current", "framework-res")
case "core_current":
return toModule("core.current.stubs", "")
case "core_platform_current":
return toModule("core.platform.api.stubs", "")
default:
return toPrebuilt(v)
}
@ -704,8 +708,9 @@ func getLinkType(m *Module, name string) linkType {
ver := m.sdkVersion()
noStdLibs := Bool(m.properties.No_standard_libs)
switch {
case name == "core.current.stubs" || ver == "core_current" || noStdLibs || name == "stub-annotations" ||
name == "private-stub-annotations-jar":
case name == "core.current.stubs" || ver == "core_current" ||
name == "core.platform.api.stubs" || ver == "core_platform_current" ||
noStdLibs || name == "stub-annotations" || name == "private-stub-annotations-jar":
return javaCore
case name == "android_system_stubs_current" || strings.HasPrefix(ver, "system_"):
return javaSystem