This reverts commit e5b5657f87
.
The reverted change was added in order to gather the information about
the hiddenapi that is needed for the runtime to enforce the hiddenapi
accessibility rules. Without it the build broke with the following
error when the android.test.base library was not in the
PRODUCT_BOOT_JARS list:
AssertionError: Error processing: frameworks/base/config/hiddenapi-greylist.txt
The following entries were unexpected:
Ljunit/framework/TestSuite;->isPublicTestMethod(Ljava/lang/reflect/Method;)Z
Landroid/test/AndroidTestCase;->setTestContext(Landroid/content/Context;)V
Landroid/test/InstrumentationTestCase;->runMethod(Ljava/lang/reflect/Method;I)V
Landroid/test/AndroidTestCase;->getTestContext()Landroid/content/Context;
Ljunit/framework/TestCase;->fName:Ljava/lang/String;
Ljunit/framework/TestSuite;->isTestMethod(Ljava/lang/reflect/Method;)Z
Please visit go/hiddenapi for more information.
However, it turns out that the runtime does not currently enforce
access to the hiddenapi of libraries that are not on the
PRODUCT_BOOT_JARS list. Gathering hiddenapi information for a library
not on the PRODUCT_BOOT_JARS list breaks the
CtsHiddenApiBlacklistApi27TestCases and
CtsHiddenApiBlacklistApi28TestCases test modules which use that
information to ensure that correct runtime behavior.
This change is being reverted simply because it does not work.
Bug: 126519737
Bug: 73711752
Test: make REMOVE_ATB_FROM_BCP=true droid and make droid
Change-Id: I1b4a7786b1061effa0e2d37832afa8570953a06e
168 lines
6.4 KiB
Go
168 lines
6.4 KiB
Go
// Copyright 2017 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 config
|
|
|
|
import (
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
|
|
_ "github.com/google/blueprint/bootstrap"
|
|
|
|
"android/soong/android"
|
|
)
|
|
|
|
var (
|
|
pctx = android.NewPackageContext("android/soong/java/config")
|
|
|
|
DefaultBootclasspathLibraries = []string{"core.platform.api.stubs", "core-lambda-stubs"}
|
|
DefaultSystemModules = "core-platform-api-stubs-system-modules"
|
|
DefaultLibraries = []string{"ext", "framework"}
|
|
DefaultLambdaStubsLibrary = "core-lambda-stubs"
|
|
SdkLambdaStubsPath = "prebuilts/sdk/tools/core-lambda-stubs.jar"
|
|
|
|
// A list of the jars that provide information about usages of the hidden API.
|
|
HiddenAPIExtraAppUsageJars = []string{
|
|
// The core-oj-hiddenapi provides information for the core-oj jar.
|
|
"core-oj-hiddenapi",
|
|
}
|
|
|
|
DefaultJacocoExcludeFilter = []string{"org.junit.*", "org.jacoco.*", "org.mockito.*"}
|
|
|
|
InstrumentFrameworkModules = []string{
|
|
"framework",
|
|
"telephony-common",
|
|
"services",
|
|
"android.car",
|
|
"android.car7",
|
|
"core-oj",
|
|
"core-libart",
|
|
}
|
|
|
|
ManifestMergerClasspath = []string{
|
|
"prebuilts/gradle-plugin/com/android/tools/build/manifest-merger/26.1.0/manifest-merger-26.1.0.jar",
|
|
"prebuilts/gradle-plugin/com/android/tools/common/26.1.0/common-26.1.0.jar",
|
|
"prebuilts/gradle-plugin/com/android/tools/sdk-common/26.1.0/sdk-common-26.1.0.jar",
|
|
"prebuilts/gradle-plugin/com/android/tools/sdklib/26.1.0/sdklib-26.1.0.jar",
|
|
"prebuilts/gradle-plugin/org/jetbrains/kotlin/kotlin-runtime/1.0.5/kotlin-runtime-1.0.5.jar",
|
|
"prebuilts/gradle-plugin/org/jetbrains/kotlin/kotlin-stdlib/1.1.3/kotlin-stdlib-1.1.3.jar",
|
|
"prebuilts/misc/common/guava/guava-21.0.jar",
|
|
}
|
|
)
|
|
|
|
func init() {
|
|
pctx.Import("github.com/google/blueprint/bootstrap")
|
|
|
|
pctx.StaticVariable("JavacHeapSize", "2048M")
|
|
pctx.StaticVariable("JavacHeapFlags", "-J-Xmx${JavacHeapSize}")
|
|
|
|
pctx.StaticVariable("CommonJdkFlags", strings.Join([]string{
|
|
`-Xmaxerrs 9999999`,
|
|
`-encoding UTF-8`,
|
|
`-sourcepath ""`,
|
|
`-g`,
|
|
// Turbine leaves out bridges which can cause javac to unnecessarily insert them into
|
|
// subclasses (b/65645120). Setting this flag causes our custom javac to assume that
|
|
// the missing bridges will exist at runtime and not recreate them in subclasses.
|
|
// If a different javac is used the flag will be ignored and extra bridges will be inserted.
|
|
// The flag is implemented by https://android-review.googlesource.com/c/486427
|
|
`-XDskipDuplicateBridges=true`,
|
|
|
|
// b/65004097: prevent using java.lang.invoke.StringConcatFactory when using -target 1.9
|
|
`-XDstringConcat=inline`,
|
|
}, " "))
|
|
|
|
pctx.VariableConfigMethod("hostPrebuiltTag", android.Config.PrebuiltOS)
|
|
|
|
pctx.VariableFunc("JavaHome", func(ctx android.PackageVarContext) string {
|
|
// This is set up and guaranteed by soong_ui
|
|
return ctx.Config().Getenv("ANDROID_JAVA_HOME")
|
|
})
|
|
|
|
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
|
pctx.SourcePathVariableWithEnvOverride("JavacCmd",
|
|
"${JavaToolchain}/javac", "ALTERNATE_JAVAC")
|
|
pctx.SourcePathVariable("JavaCmd", "${JavaToolchain}/java")
|
|
pctx.SourcePathVariable("JarCmd", "${JavaToolchain}/jar")
|
|
pctx.SourcePathVariable("JavadocCmd", "${JavaToolchain}/javadoc")
|
|
pctx.SourcePathVariable("JlinkCmd", "${JavaToolchain}/jlink")
|
|
pctx.SourcePathVariable("JmodCmd", "${JavaToolchain}/jmod")
|
|
pctx.SourcePathVariable("JrtFsJar", "${JavaHome}/lib/jrt-fs.jar")
|
|
pctx.SourcePathVariable("Ziptime", "prebuilts/build-tools/${hostPrebuiltTag}/bin/ziptime")
|
|
|
|
pctx.SourcePathVariable("GenKotlinBuildFileCmd", "build/soong/scripts/gen-kotlin-build-file.sh")
|
|
|
|
pctx.SourcePathVariable("JarArgsCmd", "build/soong/scripts/jar-args.sh")
|
|
pctx.HostBinToolVariable("ExtractJarPackagesCmd", "extract_jar_packages")
|
|
pctx.HostBinToolVariable("SoongZipCmd", "soong_zip")
|
|
pctx.HostBinToolVariable("MergeZipsCmd", "merge_zips")
|
|
pctx.HostBinToolVariable("Zip2ZipCmd", "zip2zip")
|
|
pctx.HostBinToolVariable("ZipSyncCmd", "zipsync")
|
|
pctx.HostBinToolVariable("ApiCheckCmd", "apicheck")
|
|
pctx.HostBinToolVariable("D8Cmd", "d8")
|
|
pctx.HostBinToolVariable("R8Cmd", "r8-compat-proguard")
|
|
pctx.HostBinToolVariable("HiddenAPICmd", "hiddenapi")
|
|
|
|
pctx.VariableFunc("TurbineJar", func(ctx android.PackageVarContext) string {
|
|
turbine := "turbine.jar"
|
|
if ctx.Config().UnbundledBuild() {
|
|
return "prebuilts/build-tools/common/framework/" + turbine
|
|
} else {
|
|
return pctx.HostJavaToolPath(ctx, turbine).String()
|
|
}
|
|
})
|
|
|
|
pctx.HostJavaToolVariable("JarjarCmd", "jarjar.jar")
|
|
pctx.HostJavaToolVariable("JsilverJar", "jsilver.jar")
|
|
pctx.HostJavaToolVariable("DoclavaJar", "doclava.jar")
|
|
pctx.HostJavaToolVariable("MetalavaJar", "metalava.jar")
|
|
pctx.HostJavaToolVariable("DokkaJar", "dokka.jar")
|
|
pctx.HostJavaToolVariable("JetifierJar", "jetifier.jar")
|
|
|
|
pctx.HostBinToolVariable("SoongJavacWrapper", "soong_javac_wrapper")
|
|
pctx.HostBinToolVariable("DexpreoptGen", "dexpreopt_gen")
|
|
|
|
pctx.VariableFunc("JavacWrapper", func(ctx android.PackageVarContext) string {
|
|
if override := ctx.Config().Getenv("JAVAC_WRAPPER"); override != "" {
|
|
return override + " "
|
|
}
|
|
return ""
|
|
})
|
|
|
|
pctx.HostJavaToolVariable("JacocoCLIJar", "jacoco-cli.jar")
|
|
|
|
hostBinToolVariableWithPrebuilt := func(name, prebuiltDir, tool string) {
|
|
pctx.VariableFunc(name, func(ctx android.PackageVarContext) string {
|
|
if ctx.Config().UnbundledBuild() || ctx.Config().IsPdkBuild() {
|
|
return filepath.Join(prebuiltDir, runtime.GOOS, "bin", tool)
|
|
} else {
|
|
return pctx.HostBinToolPath(ctx, tool).String()
|
|
}
|
|
})
|
|
}
|
|
|
|
hostBinToolVariableWithPrebuilt("Aapt2Cmd", "prebuilts/sdk/tools", "aapt2")
|
|
|
|
pctx.SourcePathVariable("ManifestFixerCmd", "build/soong/scripts/manifest_fixer.py")
|
|
|
|
pctx.SourcePathsVariable("ManifestMergerJars", " ", ManifestMergerClasspath...)
|
|
pctx.SourcePathsVariable("ManifestMergerClasspath", ":", ManifestMergerClasspath...)
|
|
|
|
pctx.HostBinToolVariable("ZipAlign", "zipalign")
|
|
|
|
pctx.HostBinToolVariable("Class2Greylist", "class2greylist")
|
|
pctx.HostBinToolVariable("HiddenAPI", "hiddenapi")
|
|
}
|