blob: 8204d1467245a0d948ae5957698ec02ece6fb2ed [file] [log] [blame]
// Copyright (C) 2021 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 {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "art_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["art_license"],
}
// This native library contains JNI support code for the ART Service Java
// Language library.
cc_defaults {
name: "libartservice_defaults",
defaults: ["art_defaults"],
host_supported: true,
srcs: [
"native/service.cc",
],
export_include_dirs: ["native"],
shared_libs: [
"liblog", // Used by "JNIHelp.h".
"libnativehelper",
],
}
cc_library {
name: "libartservice",
defaults: ["libartservice_defaults"],
apex_available: [
"com.android.art",
"com.android.art.debug",
],
shared_libs: [
"libart",
"libartbase",
"libarttools",
"libbase",
],
}
cc_library {
name: "libartserviced",
defaults: [
"libartservice_defaults",
"art_debug_defaults",
],
apex_available: [
"com.android.art",
"com.android.art.debug",
],
shared_libs: [
"libartd",
"libartbased",
"libarttools",
"libbase",
],
}
java_defaults {
name: "service-art-defaults",
defaults: [
"framework-system-server-module-defaults",
],
sdk_version: "system_server_current",
min_sdk_version: "31",
srcs: [
"java/**/*.java",
],
libs: [
"androidx.annotation_annotation",
"auto_value_annotations",
"sdk_module-lib_current_framework-configinfrastructure",
"sdk_module-lib_current_framework-permission-s",
// TODO(b/256866172): Transitive dependency, for r8 only.
"framework-statsd.stubs.module_lib",
// TODO(b/256866172): Transitive dependency, for r8 only. This module
// always refers to the jar in prebuilts/sdk. We can't use
// "framework-connectivity.stubs.module_lib" here because it's not
// available on master-art.
"sdk_module-lib_current_framework-connectivity",
],
static_libs: [
"art-statslog-art-java",
"artd-aidl-java",
"dexopt_chroot_setup-aidl-java",
"modules-utils-build",
"modules-utils-package-state",
"modules-utils-shell-command-handler",
"service-art-proto-java",
],
plugins: [
"auto_value_plugin",
],
}
// Used by tests to allow tests to mock the right classes.
java_library {
name: "service-art-pre-jarjar",
defaults: ["service-art-defaults"],
installable: false,
visibility: [
"//visibility:override",
"//visibility:private",
],
}
// Provides the API and implementation of the ART Service class that will be
// loaded by the System Server.
java_sdk_library {
// This target is named 'service-art' to conform to the naming conventions
// for JAR files in the System Server.
name: "service-art",
defaults: [
"service-art-defaults",
"framework-system-server-module-optimize-defaults",
],
permitted_packages: ["com.android.server.art"],
dex_preopt: {
profile: "art-profile",
},
visibility: [
"//art:__subpackages__",
"//frameworks/base/services/core",
],
apex_available: [
"com.android.art",
"com.android.art.debug",
],
jarjar_rules: "jarjar-rules.txt",
optimize: {
proguard_flags_files: ["proguard.flags"],
},
}
java_library {
name: "service-art-proto-java",
proto: {
type: "lite",
},
srcs: [
"proto/**/*.proto",
],
sdk_version: "system_server_current",
min_sdk_version: "31",
apex_available: [
"com.android.art",
"com.android.art.debug",
],
}
java_library {
name: "art-statslog-art-java",
srcs: [
":art-statslog-art-java-gen",
],
libs: [
"framework-statsd.stubs.module_lib",
],
sdk_version: "system_server_current",
min_sdk_version: "31",
apex_available: [
"com.android.art",
"com.android.art.debug",
],
}
genrule {
name: "art-statslog-art-java-gen",
tools: ["stats-log-api-gen"],
cmd: "$(location stats-log-api-gen) --java $(out) --module art --javaPackage com.android.server.art --javaClass ArtStatsLog",
out: ["java/com/android/server/art/ArtStatsLog.java"],
}
art_cc_defaults {
name: "art_libartservice_tests_defaults",
defaults: ["libartservice_defaults"],
srcs: [
"native/service_test.cc",
],
static_libs: [
"libgmock",
],
}
// Version of ART gtest `art_libartservice_tests` bundled with the ART APEX on target.
// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
art_cc_test {
name: "art_libartservice_tests",
defaults: [
"art_gtest_defaults",
"art_libartservice_tests_defaults",
],
shared_libs: [
"libarttools",
"libbase",
],
}
// Standalone version of ART gtest `art_libartservice_tests`, not bundled with the ART APEX on
// target.
art_cc_test {
name: "art_standalone_libartservice_tests",
defaults: [
"art_standalone_gtest_defaults",
"art_libartservice_tests_defaults",
],
static_libs: [
"libarttools",
"libbase",
],
}
android_test {
name: "ArtServiceTests",
// Include all test java files.
srcs: [
"javatests/**/*.java",
],
libs: [
"sdk_module-lib_current_framework-configinfrastructure",
],
static_libs: [
"androidx.test.ext.junit",
"androidx.test.ext.truth",
"androidx.test.runner",
"artd-aidl-java",
"framework-annotations-lib",
// We need ExtendedMockito to mock static methods.
"mockito-target-extended-minus-junit4",
"modules-utils-package-state",
"service-art-pre-jarjar",
// Statically link against system server to allow us to mock system
// server APIs. This won't work on master-art, but it's fine because we
// don't run this test on master-art.
"services.core",
],
jni_libs: [
"libartservice",
// The two libraries below are required by ExtendedMockito.
"libdexmakerjvmtiagent",
"libstaticjvmtiagent",
],
compile_multilib: "both",
// TODO: This module should move to sdk_version: "system_server_current" when possible,
// as this will restrict the APIs available to just that expected system API. For now,
// a compileOnly / runtimeOnly split for dependencies doesn't exist in the build system
// and so it's not possible to enforce.
min_sdk_version: "31",
test_suites: ["general-tests"],
test_config: "ArtServiceTests.xml",
}
filegroup {
name: "libartservice_protos",
srcs: [
"proto/**/*.proto",
],
visibility: [
"//cts/hostsidetests/compilation",
],
}