| 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.applock-sources", |
| ":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"], |
| } |
| |
| soong_config_module_type { |
| name: "art_profile_java_defaults", |
| module_type: "java_defaults", |
| config_namespace: "art_profile", |
| variables: ["services_profile_path"], |
| properties: ["dex_preopt"], |
| } |
| |
| soong_config_string_variable { |
| name: "services_profile_path", |
| values: ["art_wear_profile"], |
| } |
| |
| art_profile_java_defaults { |
| name: "art_profile_java_defaults", |
| soong_config_variables: { |
| services_profile_path: { |
| art_wear_profile: { |
| dex_preopt: { |
| app_image: true, |
| profile: "art-wear-profile", |
| }, |
| }, |
| conditions_default: { |
| dex_preopt: { |
| app_image: true, |
| profile: "art-profile", |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| // merge all required services into one jar |
| // ============================================================ |
| java_library { |
| name: "services", |
| defaults: [ |
| "services_java_defaults", |
| "art_profile_java_defaults", |
| ], |
| installable: true, |
| |
| exclude_kotlinc_generated_files: true, |
| |
| srcs: [":services-main-sources"], |
| |
| // The convention is to name each service module 'services.$(module_name)' |
| static_libs: [ |
| "services.applock", |
| "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", |
| ], |
| lint: { |
| baseline_filename: "lint-baseline.xml", |
| }, |
| |
| // 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 |
| // ============================================================= |
| |
| 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."], |
| } |
| |
| 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", |
| }, |
| }, |
| 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", |
| } |