// Copyright (C) 2018 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 default_applicable_licenses: ["Android-Apache-2.0"], } min_launcher3_sdk_version = "31" // Targets that don't inherit framework aconfig libs (i.e., those that don't set // `platform_apis: true`) must manually link them. java_defaults { name: "launcher-non-platform-apis-defaults", static_libs: [ "android.os.flags-aconfig-java", "android.appwidget.flags-aconfig-java", "com.android.window.flags.window-aconfig-java", ], } // Common source files used to build launcher (java and kotlin) // All sources are split so they can be reused in many other libraries/apps in other folders // Main Launcher source, excluding the build config filegroup { name: "launcher-src", srcs: [ "src/**/*.java", "src/**/*.kt", ], } // Main Launcher source for compose, excluding the build config filegroup { name: "launcher-compose-enabled-src", srcs: [ "compose/facade/enabled/*.kt", "compose/facade/core/*.kt", "compose/features/**/*.kt", ], } filegroup { name: "launcher-compose-disabled-src", srcs: [ "compose/facade/core/*.kt", "compose/facade/disabled/*.kt", ], } // Source code for quickstep build, on top of launcher-src filegroup { name: "launcher-quickstep-src", srcs: [ "quickstep/src/**/*.kt", "quickstep/src/**/*.java", ], device_common_srcs: [ ":launcher-quickstep-processed-protolog-src", ], } // Launcher ProtoLog support filegroup { name: "launcher-quickstep-unprocessed-protolog-src", srcs: [ "quickstep/src_protolog/**/*.java", ], } java_library { name: "launcher-quickstep_protolog-groups", srcs: [ "quickstep/src_protolog/**/*.java", ], static_libs: [ "protolog-group", "androidx.annotation_annotation", "com_android_launcher3_flags_lib", ], } java_genrule { name: "launcher-quickstep-processed-protolog-src", srcs: [ ":protolog-impl", ":launcher-quickstep-unprocessed-protolog-src", ":launcher-quickstep_protolog-groups", ], tools: ["protologtool"], cmd: "$(location protologtool) transform-protolog-calls " + "--protolog-class com.android.internal.protolog.common.ProtoLog " + "--loggroups-class com.android.quickstep.util.QuickstepProtoLogGroup " + "--loggroups-jar $(location :launcher-quickstep_protolog-groups) " + "--viewer-config-file-path /system_ext/etc/launcher.quickstep.protolog.pb " + "--output-srcjar $(out) " + "$(locations :launcher-quickstep-unprocessed-protolog-src)", out: ["launcher.quickstep.protolog.srcjar"], } java_genrule { name: "gen-launcher.quickstep.protolog.pb", srcs: [ ":launcher-quickstep-unprocessed-protolog-src", ":launcher-quickstep_protolog-groups", ], tools: ["protologtool"], cmd: "$(location protologtool) generate-viewer-config " + "--protolog-class com.android.internal.protolog.common.ProtoLog " + "--loggroups-class com.android.quickstep.util.QuickstepProtoLogGroup " + "--loggroups-jar $(location :launcher-quickstep_protolog-groups) " + "--viewer-config-type proto " + "--viewer-config $(out) " + "$(locations :launcher-quickstep-unprocessed-protolog-src)", out: ["launcher.quickstep.protolog.pb"], } prebuilt_etc { name: "launcher.quickstep.protolog.pb", system_ext_specific: true, src: ":gen-launcher.quickstep.protolog.pb", filename_from_src: true, } // Source code for quickstep dagger filegroup { name: "launcher-quickstep-dagger", srcs: [ "quickstep/dagger/**/*.java", "quickstep/dagger/**/*.kt", ], } // Source code for quickstep build with compose enabled, on top of launcher-src filegroup { name: "launcher-quickstep-compose-enabled-src", srcs: [ "quickstep/compose/facade/core/*.kt", "quickstep/compose/facade/enabled/*.kt", "quickstep/compose/features/**/*.kt", ], } filegroup { name: "launcher-quickstep-compose-disabled-src", srcs: [ "quickstep/compose/facade/core/*.kt", "quickstep/compose/facade/disabled/*.kt", ], } // Alternate source when quickstep is not included filegroup { name: "launcher-src_no_quickstep", srcs: [ "src_no_quickstep/**/*.java", "src_no_quickstep/**/*.kt", ], } // Default build config for Launcher3 filegroup { name: "launcher-build-config", srcs: [ "src_build_config/**/*.java", ], } // Proguard files for Launcher3 filegroup { name: "launcher-proguard-rules", srcs: ["proguard.flags"], } // Opt-in configuration for Launcher3 code depending on Jetpack Compose. soong_config_module_type { name: "launcher_compose_java_defaults", module_type: "java_defaults", config_namespace: "ANDROID", bool_variables: ["release_enable_compose_in_launcher"], properties: [ "srcs", "static_libs", ], } // Opt-in configuration for Launcher Quickstep code depending on Jetpack Compose. soong_config_bool_variable { name: "release_enable_compose_in_launcher", } soong_config_module_type { name: "quickstep_compose_java_defaults", module_type: "java_defaults", config_namespace: "ANDROID", bool_variables: ["release_enable_compose_in_launcher"], properties: [ "srcs", "static_libs", ], } soong_config_module_type { name: "launcher_compose_tests_java_defaults", module_type: "java_defaults", config_namespace: "ANDROID", bool_variables: ["release_enable_compose_in_launcher"], properties: [ "static_libs", ], } launcher_compose_java_defaults { name: "launcher_compose_defaults", soong_config_variables: { release_enable_compose_in_launcher: { srcs: [ ":launcher-compose-enabled-src", ], // Compose dependencies static_libs: [ "androidx.compose.runtime_runtime", "androidx.compose.material3_material3", ], // By default, Compose is disabled and we compile the ComposeFacade // in compose/launcher3/facade/disabled/. conditions_default: { srcs: [ ":launcher-compose-disabled-src", ], static_libs: [], }, }, }, } quickstep_compose_java_defaults { name: "quickstep_compose_defaults", soong_config_variables: { release_enable_compose_in_launcher: { srcs: [ ":launcher-quickstep-compose-enabled-src", ], // Compose dependencies static_libs: [ "androidx.compose.runtime_runtime", "androidx.compose.material3_material3", ], // By default, Compose is disabled and we compile the ComposeFacade // in compose/quickstep/facade/disabled/. conditions_default: { srcs: [ ":launcher-quickstep-compose-disabled-src", ], static_libs: [], }, }, }, } launcher_compose_tests_java_defaults { name: "launcher_compose_tests_defaults", soong_config_variables: { release_enable_compose_in_launcher: { // Compose dependencies static_libs: [ "androidx.compose.runtime_runtime", "androidx.compose.ui_ui-test-junit4", "androidx.compose.ui_ui-test-manifest", ], conditions_default: { static_libs: [], }, }, }, } android_library { name: "launcher-aosp-tapl", libs: [ "framework-statsd.stubs.module_lib", ], static_libs: [ "androidx.annotation_annotation", "androidx.test.runner", "androidx.test.rules", "androidx.test.uiautomator_uiautomator", "androidx.preference_preference", "SystemUISharedLib", "//frameworks/libs/systemui:animationlib", "//frameworks/libs/systemui:contextualeducationlib", "launcher-testing-shared", ], srcs: [ "tests/tapl/**/*.java", "tests/tapl/**/*.kt", ], resource_dirs: [], manifest: "tests/tapl/AndroidManifest.xml", platform_apis: true, } java_library_static { name: "launcher_log_protos_lite", srcs: [ "protos/*.proto", "protos_overrides/*.proto", ], sdk_version: "current", proto: { type: "lite", local_include_dirs: [ "protos", "protos_overrides", ], }, static_libs: ["libprotobuf-java-lite"], } java_library_static { name: "launcher_quickstep_log_protos_lite", srcs: [ "quickstep/protos_overrides/*.proto", ], sdk_version: "current", proto: { type: "lite", local_include_dirs: [ "quickstep/protos_overrides", ], }, static_libs: [ "libprotobuf-java-lite", "launcher_log_protos_lite", ], } java_library { name: "LauncherPluginLib", static_libs: ["PluginCoreLib"], srcs: ["src_plugins/**/*.java"], sdk_version: "current", min_sdk_version: min_launcher3_sdk_version, } // Library with all the dependencies for building Launcher3 android_library { name: "Launcher3ResLib", defaults: [ "launcher_compose_defaults", ], srcs: [], resource_dirs: ["res"], static_libs: [ "LauncherPluginLib", "launcher_quickstep_log_protos_lite", "androidx-constraintlayout_constraintlayout", "androidx.recyclerview_recyclerview", "androidx.dynamicanimation_dynamicanimation", "androidx.fragment_fragment", "androidx.preference_preference", "androidx.slice_slice-view", "androidx.cardview_cardview", "androidx.window_window", "com.google.android.material_material", "//frameworks/libs/systemui:iconloader_base", "//frameworks/libs/systemui:view_capture", "//frameworks/libs/systemui:animationlib", "//frameworks/libs/systemui:contextualeducationlib", "//frameworks/libs/systemui:msdl", "SystemUI-statsd", "launcher-testing-shared", "androidx.lifecycle_lifecycle-common-java8", "androidx.lifecycle_lifecycle-extensions", "androidx.lifecycle_lifecycle-runtime-ktx", "kotlinx_coroutines_android", "kotlinx_coroutines", "com_android_launcher3_flags_lib", "com_android_wm_shell_flags_lib", "dagger2", "jsr330", "com_android_systemui_shared_flags_lib", ], manifest: "AndroidManifest-common.xml", sdk_version: "current", min_sdk_version: min_launcher3_sdk_version, lint: { baseline_filename: "lint-baseline.xml", }, } // // Build rule for Launcher3 app. // android_app { name: "Launcher3", defaults: ["launcher-non-platform-apis-defaults"], static_libs: [ "Launcher3ResLib", ], srcs: [ ":launcher-src", ":launcher-src_no_quickstep", ":launcher-build-config", ], optimize: { proguard_flags_files: [":launcher-proguard-rules"], // Proguard is disable for testing. Derivarive prjects to keep proguard enabled enabled: false, }, sdk_version: "current", min_sdk_version: min_launcher3_sdk_version, target_sdk_version: "current", plugins: ["dagger2-compiler"], privileged: true, system_ext_specific: true, overrides: [ "Home", "Launcher2", ], required: ["privapp_whitelist_com.android.launcher3"], jacoco: { include_filter: ["com.android.launcher3.**"], }, additional_manifests: [ "AndroidManifest-common.xml", ], lint: { baseline_filename: "lint-baseline.xml", }, } // Library with all the dependencies for building quickstep android_library { name: "QuickstepResLib", srcs: [], resource_dirs: [ "quickstep/res", ], libs: [ "framework-statsd.stubs.module_lib", ], static_libs: [ "Launcher3ResLib", "lottie", "SystemUISharedLib", "SettingsLibSettingsTheme", "dagger2", "protolog-group", ], manifest: "quickstep/AndroidManifest.xml", min_sdk_version: "current", } // Library with all the source code and dependencies for building Launcher Go android_library { name: "Launcher3GoLib", defaults: [ "launcher_compose_defaults", "quickstep_compose_defaults", ], srcs: [ ":launcher-src", ":launcher-quickstep-src", ":launcher-quickstep-dagger", "go/quickstep/src/**/*.java", "go/quickstep/src/**/*.kt", ], resource_dirs: [ "go/quickstep/res", ], // Note the ordering here is important when it comes to resource // overriding. We want the most specific resource overrides defined // in QuickstepResLib to take precendece, so it should be the final // dependency. See b/205278434 for how this can go wrong. static_libs: [ "QuickstepResLib", "androidx.room_room-runtime", ], plugins: [ "androidx.room_room-compiler-plugin", "dagger2-compiler", ], manifest: "quickstep/AndroidManifest.xml", additional_manifests: [ "go/AndroidManifest.xml", "AndroidManifest-common.xml", ], min_sdk_version: "current", // TODO(b/319712088): re-enable use_resource_processor use_resource_processor: false, } // Library with all the source code and dependencies for building Quickstep android_library { name: "Launcher3QuickStepLib", defaults: [ "launcher_compose_defaults", "quickstep_compose_defaults", ], srcs: [ ":launcher-src", ":launcher-quickstep-src", ":launcher-quickstep-dagger", ":launcher-build-config", ], resource_dirs: [], libs: [ "framework-statsd.stubs.module_lib", ], // Note the ordering here is important when it comes to resource // overriding. We want the most specific resource overrides defined // in QuickstepResLib to take precendece, so it should be the final // dependency. See b/208647810 for how this can go wrong. static_libs: [ "SystemUI-statsd", "QuickstepResLib", ], manifest: "quickstep/AndroidManifest.xml", platform_apis: true, plugins: ["dagger2-compiler"], min_sdk_version: "current", // TODO(b/319712088): re-enable use_resource_processor use_resource_processor: false, } // Build rule for Quickstep app. android_app { name: "Launcher3QuickStep", static_libs: ["Launcher3QuickStepLib"], optimize: { proguard_flags_files: [":launcher-proguard-rules"], enabled: true, shrink_resources: true, }, platform_apis: true, min_sdk_version: "current", target_sdk_version: "current", privileged: true, system_ext_specific: true, overrides: [ "Home", "Launcher2", "Launcher3", ], required: [ "privapp_whitelist_com.android.launcher3", "launcher.quickstep.protolog.pb", ], resource_dirs: ["quickstep/res"], additional_manifests: [ "quickstep/AndroidManifest-launcher.xml", "AndroidManifest-common.xml", ], manifest: "quickstep/AndroidManifest.xml", jacoco: { include_filter: ["com.android.launcher3.*"], }, } // Build rule for Launcher3 Go app with quickstep for Android Go devices. // Note that the following two rules are exactly same, and should // eventually be merged into a single target android_app { name: "Launcher3Go", static_libs: ["Launcher3GoLib"], resource_dirs: [], platform_apis: true, min_sdk_version: "current", target_sdk_version: "current", optimize: { proguard_flags_files: ["proguard.flags"], enabled: true, shrink_resources: true, }, privileged: true, system_ext_specific: true, overrides: [ "Home", "Launcher2", "Launcher3", "Launcher3QuickStep", ], required: ["privapp_whitelist_com.android.launcher3"], additional_manifests: [ "go/AndroidManifest.xml", "go/AndroidManifest-launcher.xml", "AndroidManifest-common.xml", ], manifest: "quickstep/AndroidManifest.xml", jacoco: { include_filter: ["com.android.launcher3.*"], }, } android_app { name: "Launcher3QuickStepGo", static_libs: ["Launcher3GoLib"], resource_dirs: [], platform_apis: true, min_sdk_version: "current", target_sdk_version: "current", optimize: { proguard_flags_files: ["proguard.flags"], enabled: true, shrink_resources: true, }, privileged: true, system_ext_specific: true, overrides: [ "Home", "Launcher2", "Launcher3", "Launcher3QuickStep", ], required: ["privapp_whitelist_com.android.launcher3"], additional_manifests: [ "go/AndroidManifest.xml", "go/AndroidManifest-launcher.xml", "AndroidManifest-common.xml", ], manifest: "quickstep/AndroidManifest.xml", jacoco: { include_filter: ["com.android.launcher3.*"], }, }