Enforce the legacy core/platform API restriction.
This change silently decides whether modules which depend on either sdkPrivate or sdkCorePlatform get the legacy or the stable version of the core/platform API, based on whether the module's name is on a hard-coded list or not. Test: m java Test: make a target from the list when its entry is commented out, which correctly fails Bug: 157640067 Change-Id: I15e5a6c2f07e73718803501d705de0d7ab9bec90
This commit is contained in:
@@ -38,6 +38,7 @@ bootstrap_go_package {
|
|||||||
"java_resources.go",
|
"java_resources.go",
|
||||||
"kotlin.go",
|
"kotlin.go",
|
||||||
"lint.go",
|
"lint.go",
|
||||||
|
"legacy_core_platform_api_usage.go",
|
||||||
"platform_compat_config.go",
|
"platform_compat_config.go",
|
||||||
"plugin.go",
|
"plugin.go",
|
||||||
"prebuilt_apis.go",
|
"prebuilt_apis.go",
|
||||||
|
@@ -30,6 +30,8 @@ var (
|
|||||||
|
|
||||||
LegacyCorePlatformBootclasspathLibraries = []string{"legacy.core.platform.api.stubs", "core-lambda-stubs"}
|
LegacyCorePlatformBootclasspathLibraries = []string{"legacy.core.platform.api.stubs", "core-lambda-stubs"}
|
||||||
LegacyCorePlatformSystemModules = "legacy-core-platform-api-stubs-system-modules"
|
LegacyCorePlatformSystemModules = "legacy-core-platform-api-stubs-system-modules"
|
||||||
|
StableCorePlatformBootclasspathLibraries = []string{"stable.core.platform.api.stubs", "core-lambda-stubs"}
|
||||||
|
StableCorePlatformSystemModules = "stable-core-platform-api-stubs-system-modules"
|
||||||
FrameworkLibraries = []string{"ext", "framework"}
|
FrameworkLibraries = []string{"ext", "framework"}
|
||||||
DefaultLambdaStubsLibrary = "core-lambda-stubs"
|
DefaultLambdaStubsLibrary = "core-lambda-stubs"
|
||||||
SdkLambdaStubsPath = "prebuilts/sdk/tools/core-lambda-stubs.jar"
|
SdkLambdaStubsPath = "prebuilts/sdk/tools/core-lambda-stubs.jar"
|
||||||
|
266
java/legacy_core_platform_api_usage.go
Normal file
266
java/legacy_core_platform_api_usage.go
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
// Copyright 2020 Google Inc. All rights reserved.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package java
|
||||||
|
|
||||||
|
import (
|
||||||
|
"android/soong/android"
|
||||||
|
"android/soong/java/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
var legacyCorePlatformApiModules = []string{
|
||||||
|
"AAECarSystemUI",
|
||||||
|
"AAECarSystemUI-tests",
|
||||||
|
"ahat-test-dump",
|
||||||
|
"android.car",
|
||||||
|
"android.test.mock",
|
||||||
|
"android.test.mock.impl",
|
||||||
|
"AoapTestDeviceApp",
|
||||||
|
"AoapTestHostApp",
|
||||||
|
"api-stubs-docs",
|
||||||
|
"art_cts_jvmti_test_library",
|
||||||
|
"art-gtest-jars-MyClassNatives",
|
||||||
|
"atfwd",
|
||||||
|
"BackupEncryption",
|
||||||
|
"BackupFrameworksServicesRoboTests",
|
||||||
|
"backuplib",
|
||||||
|
"BandwidthEnforcementTest",
|
||||||
|
"BlockedNumberProvider",
|
||||||
|
"BluetoothInstrumentationTests",
|
||||||
|
"BluetoothMidiLib",
|
||||||
|
"BluetoothMidiService",
|
||||||
|
"BTTestApp",
|
||||||
|
"CallEnhancement",
|
||||||
|
"CapCtrlInterface",
|
||||||
|
"CarService",
|
||||||
|
"car-service-test-lib",
|
||||||
|
"car-service-test-static-lib",
|
||||||
|
"CertInstaller",
|
||||||
|
"com.qti.location.sdk",
|
||||||
|
"com.qti.media.secureprocessor",
|
||||||
|
"com.qti.snapdragon.sdk.display",
|
||||||
|
"ConfURIDialer",
|
||||||
|
"ConnectivityManagerTest",
|
||||||
|
"ContactsProvider",
|
||||||
|
"CorePerfTests",
|
||||||
|
"core-tests-support",
|
||||||
|
"cronet_impl_common_java",
|
||||||
|
"cronet_impl_native_java",
|
||||||
|
"cronet_impl_platform_java",
|
||||||
|
"CtsAppExitTestCases",
|
||||||
|
"CtsContentTestCases",
|
||||||
|
"CtsIkeTestCases",
|
||||||
|
"CtsLibcoreWycheproofBCTestCases",
|
||||||
|
"CtsMediaTestCases",
|
||||||
|
"CtsNetTestCases",
|
||||||
|
"CtsNetTestCasesLatestSdk",
|
||||||
|
"CtsSecurityTestCases",
|
||||||
|
"CtsSuspendAppsTestCases",
|
||||||
|
"CtsUsageStatsTestCases",
|
||||||
|
"datastatusnotification",
|
||||||
|
"DeadpoolService",
|
||||||
|
"DeadpoolServiceBtServices",
|
||||||
|
"DeviceInfo",
|
||||||
|
"DisplayCutoutEmulationEmu01Overlay",
|
||||||
|
"DocumentsUIGoogleTests",
|
||||||
|
"DocumentsUIPerfTests",
|
||||||
|
"DocumentsUITests",
|
||||||
|
"DocumentsUIUnitTests",
|
||||||
|
"DownloadProvider",
|
||||||
|
"DownloadProviderTests",
|
||||||
|
"DownloadProviderUi",
|
||||||
|
"DynamicSystemInstallationService",
|
||||||
|
"EmergencyInfo-lib",
|
||||||
|
"ethernet-service",
|
||||||
|
"EthernetServiceTests",
|
||||||
|
"ExternalStorageProvider",
|
||||||
|
"face-V1-0-javalib",
|
||||||
|
"FloralClocks",
|
||||||
|
"framework-all",
|
||||||
|
"framework-jobscheduler",
|
||||||
|
"framework-minus-apex",
|
||||||
|
"FrameworkOverlayG6QU3",
|
||||||
|
"FrameworksCoreTests",
|
||||||
|
"FrameworksIkeTests",
|
||||||
|
"FrameworksNetCommonTests",
|
||||||
|
"FrameworksNetTests",
|
||||||
|
"FrameworksServicesRoboTests",
|
||||||
|
"FrameworksServicesTests",
|
||||||
|
"FrameworksUtilTests",
|
||||||
|
"FrameworksWifiTests",
|
||||||
|
"GtsIncrementalInstallTestCases",
|
||||||
|
"GtsIncrementalInstallTriggerApp",
|
||||||
|
"GtsInstallerV2TestCases",
|
||||||
|
"HelloOslo",
|
||||||
|
"hid",
|
||||||
|
"hidl_test_java_java",
|
||||||
|
"hwbinder",
|
||||||
|
"ims",
|
||||||
|
"ims-ext-common",
|
||||||
|
"imssettings",
|
||||||
|
"izat.lib.glue",
|
||||||
|
"KeyChain",
|
||||||
|
"LocalSettingsLib",
|
||||||
|
"LocalTransport",
|
||||||
|
"lockagent",
|
||||||
|
"mediaframeworktest",
|
||||||
|
"mediatek-ims-base",
|
||||||
|
"MmsService",
|
||||||
|
"ModemTestMode",
|
||||||
|
"MtkCapCtrl",
|
||||||
|
"MtpService",
|
||||||
|
"MultiDisplayProvider",
|
||||||
|
"my.tests.snapdragonsdktest",
|
||||||
|
"NetworkSetting",
|
||||||
|
"NetworkStackIntegrationTestsLib",
|
||||||
|
"NetworkStackNextIntegrationTests",
|
||||||
|
"NetworkStackNextTests",
|
||||||
|
"NetworkStackTests",
|
||||||
|
"NetworkStackTestsLib",
|
||||||
|
"NfcNci",
|
||||||
|
"online-gcm-ref-docs",
|
||||||
|
"online-gts-docs",
|
||||||
|
"PerformanceMode",
|
||||||
|
"pixel-power-ext-java",
|
||||||
|
"pixel-power-ext-unstable-java",
|
||||||
|
"pixel-power-ext-V1-java",
|
||||||
|
"platform_library-docs",
|
||||||
|
"PowerStatsService",
|
||||||
|
"PrintSpooler",
|
||||||
|
"pxp-monitor",
|
||||||
|
"QColor",
|
||||||
|
"qcom.fmradio",
|
||||||
|
"qcrilhook",
|
||||||
|
"qcrilhook-static",
|
||||||
|
"qcrilmsgtunnel",
|
||||||
|
"QDCMMobileApp",
|
||||||
|
"Qmmi",
|
||||||
|
"QPerformance",
|
||||||
|
"QtiTelephonyService",
|
||||||
|
"QtiTelephonyServicelibrary",
|
||||||
|
"remoteSimLockAuthentication",
|
||||||
|
"remotesimlockmanagerlibrary",
|
||||||
|
"RollbackTest",
|
||||||
|
"sam",
|
||||||
|
"saminterfacelibrary",
|
||||||
|
"sammanagerlibrary",
|
||||||
|
"service-blobstore",
|
||||||
|
"service-jobscheduler",
|
||||||
|
"services",
|
||||||
|
"services.accessibility",
|
||||||
|
"services.backup",
|
||||||
|
"services.core.unboosted",
|
||||||
|
"services.devicepolicy",
|
||||||
|
"services.print",
|
||||||
|
"services.usage",
|
||||||
|
"services.usb",
|
||||||
|
"Settings-core",
|
||||||
|
"SettingsGoogleOverlayCoral",
|
||||||
|
"SettingsGoogleOverlayFlame",
|
||||||
|
"SettingsLib",
|
||||||
|
"SettingsOverlayG013A",
|
||||||
|
"SettingsOverlayG013B",
|
||||||
|
"SettingsOverlayG013C",
|
||||||
|
"SettingsOverlayG013D",
|
||||||
|
"SettingsOverlayG020A",
|
||||||
|
"SettingsOverlayG020B",
|
||||||
|
"SettingsOverlayG020C",
|
||||||
|
"SettingsOverlayG020D",
|
||||||
|
"SettingsOverlayG020E",
|
||||||
|
"SettingsOverlayG020E_VN",
|
||||||
|
"SettingsOverlayG020F",
|
||||||
|
"SettingsOverlayG020F_VN",
|
||||||
|
"SettingsOverlayG020G",
|
||||||
|
"SettingsOverlayG020G_VN",
|
||||||
|
"SettingsOverlayG020H",
|
||||||
|
"SettingsOverlayG020H_VN",
|
||||||
|
"SettingsOverlayG020I",
|
||||||
|
"SettingsOverlayG020I_VN",
|
||||||
|
"SettingsOverlayG020J",
|
||||||
|
"SettingsOverlayG020M",
|
||||||
|
"SettingsOverlayG020N",
|
||||||
|
"SettingsOverlayG020P",
|
||||||
|
"SettingsOverlayG020Q",
|
||||||
|
"SettingsOverlayG025H",
|
||||||
|
"SettingsOverlayG025J",
|
||||||
|
"SettingsOverlayG025M",
|
||||||
|
"SettingsOverlayG025N",
|
||||||
|
"SettingsOverlayG5NZ6",
|
||||||
|
"SettingsProvider",
|
||||||
|
"SettingsProviderTest",
|
||||||
|
"Shell",
|
||||||
|
"ShellTests",
|
||||||
|
"SimContact",
|
||||||
|
"SimContacts",
|
||||||
|
"SimSettings",
|
||||||
|
"sl4a.Common",
|
||||||
|
"StatementService",
|
||||||
|
"SystemUI-core",
|
||||||
|
"SystemUISharedLib",
|
||||||
|
"SystemUI-tests",
|
||||||
|
"tcmiface",
|
||||||
|
"Telecom",
|
||||||
|
"TelecomUnitTests",
|
||||||
|
"telephony-common",
|
||||||
|
"telephony-ext",
|
||||||
|
"TelephonyProviderTests",
|
||||||
|
"TeleService",
|
||||||
|
"testables",
|
||||||
|
"TetheringTests",
|
||||||
|
"TetheringTestsLib",
|
||||||
|
"time_zone_distro_installer",
|
||||||
|
"time_zone_distro_installer-tests",
|
||||||
|
"time_zone_distro-tests",
|
||||||
|
"time_zone_updater",
|
||||||
|
"TMobilePlanProvider",
|
||||||
|
"TvProvider",
|
||||||
|
"uiautomator-stubs-docs",
|
||||||
|
"uimgbamanagerlibrary",
|
||||||
|
"UsbHostExternalManagementTestApp",
|
||||||
|
"UserDictionaryProvider",
|
||||||
|
"UxPerformance",
|
||||||
|
"WallpaperBackup",
|
||||||
|
"WallpaperBackupAgentTests",
|
||||||
|
"WfdCommon",
|
||||||
|
"xdivert",
|
||||||
|
}
|
||||||
|
|
||||||
|
var legacyCorePlatformApiLookup = make(map[string]struct{})
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
for _, module := range legacyCorePlatformApiModules {
|
||||||
|
legacyCorePlatformApiLookup[module] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func useLegacyCorePlatformApi(ctx android.EarlyModuleContext) bool {
|
||||||
|
_, found := legacyCorePlatformApiLookup[ctx.ModuleName()]
|
||||||
|
return found
|
||||||
|
}
|
||||||
|
|
||||||
|
func corePlatformSystemModules(ctx android.EarlyModuleContext) string {
|
||||||
|
if useLegacyCorePlatformApi(ctx) {
|
||||||
|
return config.LegacyCorePlatformSystemModules
|
||||||
|
} else {
|
||||||
|
return config.StableCorePlatformSystemModules
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func corePlatformBootclasspathLibraries(ctx android.EarlyModuleContext) []string {
|
||||||
|
if useLegacyCorePlatformApi(ctx) {
|
||||||
|
return config.LegacyCorePlatformBootclasspathLibraries
|
||||||
|
} else {
|
||||||
|
return config.StableCorePlatformBootclasspathLibraries
|
||||||
|
}
|
||||||
|
}
|
@@ -413,8 +413,8 @@ func decodeSdkDep(ctx android.EarlyModuleContext, sdkContext sdkContext) sdkDep
|
|||||||
case sdkPrivate:
|
case sdkPrivate:
|
||||||
return sdkDep{
|
return sdkDep{
|
||||||
useModule: true,
|
useModule: true,
|
||||||
systemModules: config.LegacyCorePlatformSystemModules,
|
systemModules: corePlatformSystemModules(ctx),
|
||||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
bootclasspath: corePlatformBootclasspathLibraries(ctx),
|
||||||
classpath: config.FrameworkLibraries,
|
classpath: config.FrameworkLibraries,
|
||||||
frameworkResModule: "framework-res",
|
frameworkResModule: "framework-res",
|
||||||
}
|
}
|
||||||
@@ -438,8 +438,8 @@ func decodeSdkDep(ctx android.EarlyModuleContext, sdkContext sdkContext) sdkDep
|
|||||||
case sdkCorePlatform:
|
case sdkCorePlatform:
|
||||||
return sdkDep{
|
return sdkDep{
|
||||||
useModule: true,
|
useModule: true,
|
||||||
systemModules: config.LegacyCorePlatformSystemModules,
|
systemModules: corePlatformSystemModules(ctx),
|
||||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
bootclasspath: corePlatformBootclasspathLibraries(ctx),
|
||||||
noFrameworksLibs: true,
|
noFrameworksLibs: true,
|
||||||
}
|
}
|
||||||
case sdkPublic:
|
case sdkPublic:
|
||||||
|
@@ -49,8 +49,8 @@ func TestClasspath(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "default",
|
name: "default",
|
||||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
bootclasspath: config.StableCorePlatformBootclasspathLibraries,
|
||||||
system: config.LegacyCorePlatformSystemModules,
|
system: config.StableCorePlatformSystemModules,
|
||||||
java8classpath: config.FrameworkLibraries,
|
java8classpath: config.FrameworkLibraries,
|
||||||
java9classpath: config.FrameworkLibraries,
|
java9classpath: config.FrameworkLibraries,
|
||||||
aidl: "-Iframework/aidl",
|
aidl: "-Iframework/aidl",
|
||||||
@@ -58,16 +58,16 @@ func TestClasspath(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: `sdk_version:"core_platform"`,
|
name: `sdk_version:"core_platform"`,
|
||||||
properties: `sdk_version:"core_platform"`,
|
properties: `sdk_version:"core_platform"`,
|
||||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
bootclasspath: config.StableCorePlatformBootclasspathLibraries,
|
||||||
system: config.LegacyCorePlatformSystemModules,
|
system: config.StableCorePlatformSystemModules,
|
||||||
java8classpath: []string{},
|
java8classpath: []string{},
|
||||||
aidl: "",
|
aidl: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "blank sdk version",
|
name: "blank sdk version",
|
||||||
properties: `sdk_version: "",`,
|
properties: `sdk_version: "",`,
|
||||||
bootclasspath: config.LegacyCorePlatformBootclasspathLibraries,
|
bootclasspath: config.StableCorePlatformBootclasspathLibraries,
|
||||||
system: config.LegacyCorePlatformSystemModules,
|
system: config.StableCorePlatformSystemModules,
|
||||||
java8classpath: config.FrameworkLibraries,
|
java8classpath: config.FrameworkLibraries,
|
||||||
java9classpath: config.FrameworkLibraries,
|
java9classpath: config.FrameworkLibraries,
|
||||||
aidl: "-Iframework/aidl",
|
aidl: "-Iframework/aidl",
|
||||||
@@ -155,9 +155,9 @@ func TestClasspath(t *testing.T) {
|
|||||||
{
|
{
|
||||||
|
|
||||||
name: "nostdlib system_modules",
|
name: "nostdlib system_modules",
|
||||||
properties: `sdk_version: "none", system_modules: "legacy-core-platform-api-stubs-system-modules"`,
|
properties: `sdk_version: "none", system_modules: "stable-core-platform-api-stubs-system-modules"`,
|
||||||
system: "legacy-core-platform-api-stubs-system-modules",
|
system: "stable-core-platform-api-stubs-system-modules",
|
||||||
bootclasspath: []string{"legacy-core-platform-api-stubs-system-modules-lib"},
|
bootclasspath: []string{"stable-core-platform-api-stubs-system-modules-lib"},
|
||||||
java8classpath: []string{},
|
java8classpath: []string{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@@ -135,7 +135,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
name: "%s",
|
name: "%s",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||||
}
|
}
|
||||||
`, extra)
|
`, extra)
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
name: "framework",
|
name: "framework",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||||
aidl: {
|
aidl: {
|
||||||
export_include_dirs: ["framework/aidl"],
|
export_include_dirs: ["framework/aidl"],
|
||||||
},
|
},
|
||||||
@@ -160,7 +160,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
name: "android.hidl.base-V1.0-java",
|
name: "android.hidl.base-V1.0-java",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||||
installable: true,
|
installable: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,7 +168,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
name: "android.hidl.manager-V1.0-java",
|
name: "android.hidl.manager-V1.0-java",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||||
installable: true,
|
installable: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
name: "org.apache.http.legacy",
|
name: "org.apache.http.legacy",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||||
installable: true,
|
installable: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
name: "android.test.base",
|
name: "android.test.base",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||||
installable: true,
|
installable: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ func GatherRequiredDepsForTest() string {
|
|||||||
name: "android.test.mock",
|
name: "android.test.mock",
|
||||||
srcs: ["a.java"],
|
srcs: ["a.java"],
|
||||||
sdk_version: "none",
|
sdk_version: "none",
|
||||||
system_modules: "legacy-core-platform-api-stubs-system-modules",
|
system_modules: "stable-core-platform-api-stubs-system-modules",
|
||||||
installable: true,
|
installable: true,
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
@@ -51,10 +51,10 @@ java_system_modules_import {
|
|||||||
name: "core-current-stubs-system-modules",
|
name: "core-current-stubs-system-modules",
|
||||||
}
|
}
|
||||||
java_system_modules_import {
|
java_system_modules_import {
|
||||||
name: "legacy-core-platform-api-stubs-system-modules",
|
name: "stable-core-platform-api-stubs-system-modules",
|
||||||
}
|
}
|
||||||
java_import {
|
java_import {
|
||||||
name: "legacy.core.platform.api.stubs",
|
name: "stable.core.platform.api.stubs",
|
||||||
}
|
}
|
||||||
java_import {
|
java_import {
|
||||||
name: "android_stubs_current",
|
name: "android_stubs_current",
|
||||||
|
Reference in New Issue
Block a user