You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.4 KiB
112 lines
4.4 KiB
// Copyright (C) 2020 The Android Open Source Project
|
|
//
|
|
// 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 {
|
|
default_applicable_licenses: ["Android-Apache-2.0"],
|
|
}
|
|
|
|
java_test_host {
|
|
name: "CtsUsesNativeLibraryTest",
|
|
defaults: ["cts_defaults"],
|
|
srcs: ["src/**/*.java"],
|
|
test_suites: [
|
|
"cts",
|
|
"general-tests",
|
|
],
|
|
libs: [
|
|
"cts-tradefed",
|
|
"tradefed",
|
|
"compatibility-host-util",
|
|
],
|
|
java_resource_dirs: ["res"],
|
|
data: [":CtsUesNativeLibraryBuildPackage"],
|
|
}
|
|
|
|
// Note that this app is built as a java library. The actual app is built
|
|
// by the test (CtsUsesNativeLibraryTest) while the test is running.
|
|
// This java library is appended to the built apk by the test.
|
|
java_library {
|
|
name: "CtsUsesNativeLibraryTestApp",
|
|
srcs: ["src_target/**/*.java"],
|
|
static_libs: [
|
|
"androidx.test.core",
|
|
"androidx.test.runner",
|
|
"androidx.test.rules",
|
|
"compatibility-device-util-axt",
|
|
],
|
|
sdk_version: "test_current",
|
|
compile_dex: true,
|
|
installable: false,
|
|
visibility: ["//visibility:private"],
|
|
}
|
|
|
|
// These are collection of tools and libraries that are required to build
|
|
// an apk by the test. This zip file is extracted by the test and files
|
|
// in the zip are executed from there.
|
|
//
|
|
// There are two tricks used here: 1) host tools such as aapt2 are listed
|
|
// in the `tools` property although they technically are inputs of the zip,
|
|
// not the tools for creating the zip. However, since the java test is not
|
|
// specific to arch, it can't (transitively) depend on arch-specific (x86)
|
|
// host tools. To work-around the problem, they are listed in the `tools`
|
|
// property, and then used as inputs in the `cmd`.
|
|
//
|
|
// 2) signapk and libconscrypt_openjdk_jni are listed in the `host_required`
|
|
// property instead of `tools` or `srcs`. This is because those modules are
|
|
// neither specific to arch (thus can't be in tools), nor provide source (thus
|
|
// can't be in srcs). To access them, their location in the soong intermediate
|
|
// directory is manually searched in the cmd, while dependencies to them are
|
|
// created using the `required` property.
|
|
genrule {
|
|
name: "CtsUesNativeLibraryBuildPackage",
|
|
// srcs, tools, required are all "essentially" inputs of the zip
|
|
// (except for soong_zip which is actually the tool)
|
|
srcs: [
|
|
":CtsUsesNativeLibraryTestApp",
|
|
":sdk_public_30_android",
|
|
"testkey.pk8",
|
|
"testkey.x509.pem",
|
|
],
|
|
tools: [
|
|
"aapt2",
|
|
"soong_zip",
|
|
"merge_zips",
|
|
// To make signapk.jar be generated under HOST_SOONG_OUT before this rule runes
|
|
"signapk",
|
|
],
|
|
host_required: [
|
|
"signapk",
|
|
"libconscrypt_openjdk_jni",
|
|
],
|
|
out: ["CtsUesNativeLibraryBuildPackage.zip"],
|
|
// Copied from system/apex/apexer/Android.bp
|
|
cmd: "HOST_OUT_BIN=$$(dirname $(location soong_zip)) && " +
|
|
"HOST_SOONG_OUT=$$(dirname $$(dirname $$HOST_OUT_BIN)) && " +
|
|
"SIGNAPK_JAR=$$(find $$HOST_SOONG_OUT -name \"signapk*\") && " +
|
|
"LIBCONSCRYPT_OPENJDK_JNI=$$(find $$HOST_SOONG_OUT -name \"libconscrypt_openjdk_jni.*\") && " +
|
|
"rm -rf $(genDir)/content && " +
|
|
"mkdir -p $(genDir)/content && " +
|
|
"cp $(location aapt2) $(genDir)/content && " +
|
|
"cp $(location merge_zips) $(genDir)/content && " +
|
|
"cp $(location :sdk_public_30_android) $(genDir)/content && " +
|
|
"cp $(location :CtsUsesNativeLibraryTestApp) $(genDir)/content && " +
|
|
"cp $(location testkey.pk8) $(genDir)/content && " +
|
|
"cp $(location testkey.x509.pem) $(genDir)/content && " +
|
|
"cp $$SIGNAPK_JAR $(genDir)/content && " +
|
|
"cp $$LIBCONSCRYPT_OPENJDK_JNI $(genDir)/content && " +
|
|
"$(location soong_zip) -C $(genDir)/content -D $(genDir)/content -o $(out) && " +
|
|
"rm -rf $(genDir)/content ",
|
|
visibility: ["//visibility:private"],
|
|
}
|