// 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", ], shared_libs: [ "libbase", ], } cc_library { name: "libartservice", defaults: ["libartservice_defaults"], apex_available: [ "com.android.art", "com.android.art.debug", ], shared_libs: [ ], } cc_library { name: "libartserviced", defaults: [ "libartservice_defaults", "art_debug_defaults", ], apex_available: [ "com.android.art", "com.android.art.debug", ], shared_libs: [ ], } 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-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", "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"], 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", ], } // 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", ], } // 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", ], } android_test { name: "ArtServiceTests", // Include all test java files. srcs: [ "javatests/**/*.java", ], 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: [ // 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", }