package { // See: http://go/android-license-faq // A large-scale-change added 'default_applicable_licenses' to import // all of the 'license_kinds' from "frameworks_base_license" // to get the below license kinds: // SPDX-license-identifier-Apache-2.0 default_applicable_licenses: ["frameworks_base_license"], } // Defaults for platform code that runs inside system_server java_defaults { name: "platform_service_defaults", plugins: ["error_prone_android_framework"], errorprone: { javacflags: [ "-Xep:AndroidFrameworkCompatChange:ERROR", // "-Xep:AndroidFrameworkUid:ERROR", "-Xep:SelfEquals:ERROR", "-Xep:NullTernary:ERROR", "-Xep:TryFailThrowable:ERROR", "-Xep:HashtableContains:ERROR", "-Xep:FormatString:ERROR", "-Xep:ArrayHashCode:ERROR", "-Xep:SelfAssignment:ERROR", "-Xep:ArrayEquals:ERROR", "-Xep:IdentityBinaryExpression:ERROR", // NOTE: only enable to generate local patchfiles // "-XepPatchChecks:refaster:frameworks/base/errorprone/refaster/EfficientXml.java.refaster", // "-XepPatchLocation:/tmp/refaster/", ], }, lint: { extra_check_modules: ["AndroidFrameworkLintChecker"], }, } // Config to control optimizing and shrinking the services target using R8. // Set via `export SYSTEM_OPTIMIZE_JAVA=true|false`, or explicitly in Make via the // `SOONG_CONFIG_ANDROID_SYSTEM_OPTIMIZE_JAVA` variable. soong_config_module_type { name: "system_optimized_java_defaults", module_type: "java_defaults", config_namespace: "ANDROID", bool_variables: [ "SYSTEM_OPTIMIZE_JAVA", "FULL_SYSTEM_OPTIMIZE_JAVA", ], properties: [ "optimize", "dxflags", ], } system_optimized_java_defaults { name: "services_java_defaults", soong_config_variables: { SYSTEM_OPTIMIZE_JAVA: { optimize: { enabled: true, // TODO(b/210510433): Enable optimizations after improving // retracing infra. // See also FULL_SYSTEM_OPTIMIZE_JAVA. optimize: false, shrink: true, ignore_warnings: false, proguard_compatibility: false, proguard_flags_files: [ "proguard.flags", // Ensure classes referenced in the framework-res manifest // and implemented in system_server are kept. ":framework-res{.aapt.proguardOptionsFile}", ], }, conditions_default: { optimize: { enabled: true, optimize: false, shrink: true, ignore_warnings: false, // Note that this proguard config is very conservative, only shrinking the // permission subpackage to prune unused jarjar'ed Kotlin dependencies. proguard_flags_files: ["proguard_permission.flags"], }, // Explicitly configure R8 to preserve debug info, as this path should // really only allow stripping of permission-specific code and deps. dxflags: ["--debug"], }, }, // Allow form factors to opt-in full system java optimization FULL_SYSTEM_OPTIMIZE_JAVA: { optimize: { optimize: true, }, }, }, } filegroup { name: "services-main-sources", srcs: [ "java/**/*.java", "java/**/package.html", ], path: "java", visibility: ["//visibility:private"], } filegroup { name: "services-non-updatable-sources", srcs: [ ":services.core-sources", ":services.core-sources-am-wm", "core/java/com/android/server/am/package.html", ":services.accessibility-sources", ":services.appprediction-sources", ":services.appwidget-sources", ":services.autofill-sources", ":services.backup-sources", ":services.companion-sources", ":services.contentcapture-sources", ":services.contentsuggestions-sources", ":services.coverage-sources", ":services.credentials-sources", ":services.devicepolicy-sources", ":services.midi-sources", ":services.musicsearch-sources", ":services.net-sources", ":services.permission-sources", ":services.print-sources", ":services.profcollect-sources", ":services.restrictions-sources", ":services.searchui-sources", ":services.smartspace-sources", ":services.soundtrigger-sources", ":services.systemcaptions-sources", ":services.translation-sources", ":services.texttospeech-sources", ":services.usage-sources", ":services.usb-sources", ":services.voiceinteraction-sources", ":services.wallpapereffectsgeneration-sources", ":services.wifi-sources", ":framework-pm-common-shared-srcs", ], visibility: ["//visibility:private"], } java_library { name: "Slogf", srcs: ["core/java/com/android/server/utils/Slogf.java"], } // merge all required services into one jar // ============================================================ java_library { name: "services", defaults: ["services_java_defaults"], installable: true, dex_preopt: { app_image: true, profile: "art-profile", }, exclude_kotlinc_generated_files: true, srcs: [":services-main-sources"], // The convention is to name each service module 'services.$(module_name)' static_libs: [ "services.core", "services.accessibility", "services.appprediction", "services.appwidget", "services.autofill", "services.backup", "services.companion", "services.contentcapture", "services.contentsuggestions", "services.coverage", "services.credentials", "services.devicepolicy", "services.flags", "services.midi", "services.musicsearch", "services.net", "services.people", "services.permission", "services.print", "services.profcollect", "services.restrictions", "services.searchui", "services.smartspace", "services.soundtrigger", "services.systemcaptions", "services.translation", "services.texttospeech", "services.usage", "services.usb", "services.voiceinteraction", "services.wallpapereffectsgeneration", "services.wifi", "service-blobstore", "service-jobscheduler", "android.hidl.base-V1.0-java", ], libs: [ "android.hidl.manager-V1.0-java", "framework-tethering.stubs.module_lib", "service-art.stubs.system_server", "service-permission.stubs.system_server", "service-rkp.stubs.system_server", "service-sdksandbox.stubs.system_server", ], vintf_fragments: [ "manifest_services.xml", ], required: [ "libukey2_jni_shared", "protolog.conf.json.gz", ], // Uncomment to enable output of certain warnings (deprecated, unchecked) //javacflags: ["-Xlint"], } // native library // ============================================================= cc_library_shared { name: "libandroid_servers", defaults: ["libservices.core-libs"], whole_static_libs: ["libservices.core"], } platform_compat_config { name: "services-platform-compat-config", src: ":services", } filegroup { name: "art-profile", srcs: ["art-profile"], } // API stub // ============================================================= soong_config_module_type_import { from: "frameworks/base/api/Android.bp", module_types: ["non_updatable_exportable_droidstubs"], } stubs_defaults { name: "services-stubs-default", installable: false, flags: [ "--show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.SYSTEM_SERVER\\)", "--hide-annotation android.annotation.Hide", "--hide InternalClasses", // com.android.* classes are okay in this interface // TODO: remove the --hide options below "--hide DeprecationMismatch", "--hide HiddenTypedefConstant", ], visibility: ["//frameworks/base:__subpackages__"], filter_packages: ["com.android."], } non_updatable_exportable_droidstubs { name: "services-non-updatable-stubs", srcs: [":services-non-updatable-sources"], defaults: [ "services-stubs-default", ], check_api: { current: { api_file: "api/current.txt", removed_api_file: "api/removed.txt", }, api_lint: { enabled: true, new_since: ":android-non-updatable.api.system-server.latest", baseline_file: "api/lint-baseline.txt", }, }, soong_config_variables: { release_hidden_api_exportable_stubs: { dists: [ { targets: ["sdk"], dir: "apistubs/android/system-server/api", dest: "android-non-updatable.txt", tag: ".exportable.api.txt", }, { targets: ["sdk"], dir: "apistubs/android/system-server/api", dest: "android-non-updatable-removed.txt", tag: ".exportable.removed-api.txt", }, ], conditions_default: { dists: [ { targets: ["sdk"], dir: "apistubs/android/system-server/api", dest: "android-non-updatable.txt", tag: ".api.txt", }, { targets: ["sdk"], dir: "apistubs/android/system-server/api", dest: "android-non-updatable-removed.txt", tag: ".removed-api.txt", }, ], }, }, }, api_surface: "system-server", }