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"], // OWNER: g/ravenwood // Bug component: 25698 default_team: "trendy_team_ravenwood", } filegroup { name: "ravenwood-common-policies", srcs: [ "texts/ravenwood-common-policies.txt", ], visibility: ["//visibility:private"], } filegroup { name: "ravenwood-services-policies", srcs: [ "texts/ravenwood-services-policies.txt", ], visibility: ["//visibility:private"], } filegroup { name: "ravenwood-framework-policies", srcs: [ "texts/ravenwood-framework-policies.txt", ], visibility: ["//visibility:private"], } filegroup { name: "ravenwood-standard-options", srcs: [ "texts/ravenwood-standard-options.txt", ], visibility: ["//visibility:private"], } filegroup { name: "ravenwood-annotation-allowed-classes", srcs: [ "texts/ravenwood-annotation-allowed-classes.txt", ], visibility: ["//visibility:private"], } // This and the next module contain the same classes with different implementations. // "ravenwood-runtime-common-device" will be statically linked in device side tests. // "ravenwood-runtime-common-ravenwood" will only exist in ravenwood-runtime, which will take // precedence even if the test jar (accidentally) contains "ravenwood-runtime-common-device". // "ravenwood-runtime-common" uses it to detect if the rutime is Ravenwood or not. java_library { name: "ravenwood-runtime-common-ravenwood", host_supported: true, sdk_version: "core_current", srcs: [ "runtime-common-ravenwood-src/**/*.java", ], visibility: [ // Some tests need to access the utilities. ":__subpackages__", ], } java_library { name: "ravenwood-runtime-common-device", host_supported: true, sdk_version: "core_current", srcs: [ "runtime-common-device-src/**/*.java", ], visibility: ["//visibility:private"], } java_library { name: "ravenwood-runtime-common", host_supported: true, sdk_version: "core_current", srcs: [ "runtime-common-src/**/*.java", ], libs: [ "ravenwood-runtime-common-ravenwood", ], static_libs: [ "framework-annotations-lib", // should it be "libs" instead? ], visibility: ["//visibility:private"], } java_library_host { name: "ravenwood-helper-libcore-runtime.host", srcs: [ "runtime-helper-src/libcore-fake/**/*.java", ], libs: [ "app-compat-annotations", ], static_libs: [ "ravenwood-runtime-common", ], visibility: ["//visibility:private"], } java_host_for_device { name: "ravenwood-helper-libcore-runtime", libs: [ "ravenwood-helper-libcore-runtime.host", ], visibility: ["//visibility:private"], } java_library { name: "ravenwood-helper-framework-runtime", srcs: [ "runtime-helper-src/framework/**/*.java", ], static_libs: [ "ravenwood-runtime-common", "androidx.annotation_annotation", ], libs: [ "framework-minus-apex.ravenwood", "framework-configinfrastructure.ravenwood", "ravenwood-helper-libcore-runtime", ], sdk_version: "core_current", visibility: ["//visibility:private"], } // Combine ravenwood-helper-*-runtime and create a single library, which we include // in the ravenwood runtime. // We do it this way rather than including the individual jars in the runtime, because // for some reason we couldn't include a java_host_for_device module in the ravenwood runtime. java_library { name: "ravenwood-helper-runtime", defaults: ["ravenwood-internal-only-visibility-java"], static_libs: [ "ravenwood-helper-framework-runtime", "ravenwood-helper-libcore-runtime", ], } java_library { name: "ravenwood-junit-impl", srcs: [ "junit-src/**/*.java", "junit-impl-src/**/*.java", ], static_libs: [ "androidx.test.monitor-for-device", "ravenwood-runtime-common", ], libs: [ "android.test.mock.impl", "framework-minus-apex.ravenwood", "ravenwood-framework", "services.core.ravenwood", "junit", "framework-annotations-lib", "ravenwood-helper-framework-runtime", "ravenwood-helper-libcore-runtime", "hoststubgen-helper-runtime.ravenwood", "mockito-ravenwood-prebuilt", ], visibility: [":__subpackages__"], jarjar_rules: ":ravenwood-services-jarjar-rules", } java_device_for_host { name: "ravenwood-junit-impl-for-ravenizer", libs: [ "ravenwood-junit-impl", ], visibility: [":__subpackages__"], } // Separated out from ravenwood-junit-impl since it needs to compile // against `module_current` java_library { name: "ravenwood-junit-impl-flag", srcs: [ "junit-flag-src/**/*.java", ], sdk_version: "module_current", libs: [ "junit", "flag-junit", ], visibility: ["//visibility:public"], } // Carefully compiles against only module_current to support tests that // want to verify they're unbundled. The "impl" library above is what // ships inside the Ravenwood environment to actually drive any API // access to implementation details. // We can't use test_current here because this library needs to be statically // linked to mainline tests as well, which can't use test APIs because they // need to be able to run on multiple API levels. java_library { name: "ravenwood-junit", srcs: [ "junit-src/**/*.java", "junit-stub-src/**/*.java", "junit-flag-src/**/*.java", ], sdk_version: "module_current", static_libs: [ "ravenwood-runtime-common", "ravenwood-runtime-common-device", ], libs: [ "junit", "flag-junit", "framework-annotations-lib", ], visibility: ["//visibility:public"], } // Library used to publish a handful of `android.ravenwood` APIs into // the Ravenwood BCP; we don't want to publish these APIs into the BCP // on physical devices, which is why this is a separate library java_library { name: "ravenwood-framework", srcs: [ "framework-src/**/*.java", ], libs: [ "framework-minus-apex.ravenwood", ], sdk_version: "core_current", visibility: ["//visibility:public"], } java_host_for_device { name: "androidx.test.monitor-for-device", libs: [ "androidx.test.monitor-for-host", ], } java_device_for_host { name: "androidx.test.monitor-for-host", libs: [ "androidx.test.monitor", ], } filegroup { name: "ravenwood-framework-jarjar-rules", srcs: ["texts/ravenwood-framework-jarjar-rules.txt"], visibility: ["//frameworks/base"], } filegroup { name: "ravenwood-services-jarjar-rules", srcs: ["texts/ravenwood-services-jarjar-rules.txt"], visibility: ["//frameworks/base"], } cc_defaults { name: "ravenwood_jni_defaults", cflags: [ "-Wall", "-Werror", "-Wno-unused-parameter", "-Wthread-safety", ], static_libs: [ "libnativehelper_jvm", ], shared_libs: [ "liblog", ], visibility: ["//visibility:private"], } // We need this as a separate library because we need to overload the // sysprop symbols before libbase is loaded into the process cc_library_host_shared { name: "libravenwood_initializer", defaults: ["ravenwood_jni_defaults"], srcs: ["runtime-jni/ravenwood_initializer.cpp"], } cc_library_host_shared { name: "libravenwood_runtime", defaults: ["ravenwood_jni_defaults"], srcs: [ "runtime-jni/ravenwood_runtime.cpp", "runtime-jni/ravenwood_os_constants.cpp", ], shared_libs: [ "libbase", "libutils", "libcutils", ], } // For collecting the *stats.csv files in a known directory under out/host/linux-x86/testcases/. // The "test" just shows the available stats filenames. sh_test_host { name: "ravenwood-stats-checker", src: "scripts/ravenwood-stats-checker.sh", test_suites: ["general-tests"], device_common_data: [ ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_stats.csv}", ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_apis.csv}", ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_keep_all.txt}", ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_dump.txt}", ":services.core.ravenwood-base{hoststubgen_services.core_stats.csv}", ":services.core.ravenwood-base{hoststubgen_services.core_apis.csv}", ":services.core.ravenwood-base{hoststubgen_services.core_keep_all.txt}", ":services.core.ravenwood-base{hoststubgen_services.core_dump.txt}", ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_stats.csv}", ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_apis.csv}", ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_keep_all.txt}", ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_dump.txt}", ":framework-statsd.ravenwood-base{framework-statsd_stats.csv}", ":framework-statsd.ravenwood-base{framework-statsd_apis.csv}", ":framework-statsd.ravenwood-base{framework-statsd_keep_all.txt}", ":framework-statsd.ravenwood-base{framework-statsd_dump.txt}", ], } java_library { name: "services.fakes.ravenwood-jarjar", installable: false, srcs: [":services.fakes-sources"], libs: [ "ravenwood-framework", "services.core.ravenwood", ], jarjar_rules: ":ravenwood-services-jarjar-rules", visibility: ["//visibility:private"], } java_library { name: "mockito-ravenwood-prebuilt", installable: false, static_libs: [ "mockito-robolectric-prebuilt", ], } java_library { name: "inline-mockito-ravenwood-prebuilt", installable: false, static_libs: [ "inline-mockito-robolectric-prebuilt", ], } filegroup { name: "ravenwood-data", device_common_srcs: [ ":system-build.prop", ":framework-res", ":ravenwood-empty-res", ":framework-platform-compat-config", ":services-platform-compat-config", "texts/ravenwood-build.prop", ], device_first_srcs: [ ":apex_icu.dat", ], visibility: ["//visibility:private"], } // Keep in sync with build/make/target/product/generic/Android.bp filegroup { name: "ravenwood-fonts", device_common_srcs: [ ":AndroidClock.ttf", ":CarroisGothicSC-Regular.ttf", ":ComingSoon.ttf", ":CutiveMono.ttf", ":DancingScript-Regular.ttf", ":DroidSansMono.ttf", ":NotoColorEmoji.ttf", ":NotoColorEmojiFlags.ttf", ":NotoNaskhArabic-Bold.ttf", ":NotoNaskhArabic-Regular.ttf", ":NotoNaskhArabicUI-Bold.ttf", ":NotoNaskhArabicUI-Regular.ttf", ":NotoSansAdlam-VF.ttf", ":NotoSansAhom-Regular.otf", ":NotoSansAnatolianHieroglyphs-Regular.otf", ":NotoSansArmenian-VF.ttf", ":NotoSansAvestan-Regular.ttf", ":NotoSansBalinese-Regular.ttf", ":NotoSansBamum-Regular.ttf", ":NotoSansBassaVah-Regular.otf", ":NotoSansBatak-Regular.ttf", ":NotoSansBengali-VF.ttf", ":NotoSansBengaliUI-VF.ttf", ":NotoSansBhaiksuki-Regular.otf", ":NotoSansBrahmi-Regular.ttf", ":NotoSansBuginese-Regular.ttf", ":NotoSansBuhid-Regular.ttf", ":NotoSansCJK-Regular.ttc", ":NotoSansCanadianAboriginal-Regular.ttf", ":NotoSansCarian-Regular.ttf", ":NotoSansChakma-Regular.otf", ":NotoSansCham-Bold.ttf", ":NotoSansCham-Regular.ttf", ":NotoSansCherokee-Regular.ttf", ":NotoSansCoptic-Regular.ttf", ":NotoSansCuneiform-Regular.ttf", ":NotoSansCypriot-Regular.ttf", ":NotoSansDeseret-Regular.ttf", ":NotoSansDevanagari-VF.ttf", ":NotoSansDevanagariUI-VF.ttf", ":NotoSansEgyptianHieroglyphs-Regular.ttf", ":NotoSansElbasan-Regular.otf", ":NotoSansEthiopic-VF.ttf", ":NotoSansGeorgian-VF.ttf", ":NotoSansGlagolitic-Regular.ttf", ":NotoSansGothic-Regular.ttf", ":NotoSansGrantha-Regular.ttf", ":NotoSansGujarati-Bold.ttf", ":NotoSansGujarati-Regular.ttf", ":NotoSansGujaratiUI-Bold.ttf", ":NotoSansGujaratiUI-Regular.ttf", ":NotoSansGunjalaGondi-Regular.otf", ":NotoSansGurmukhi-VF.ttf", ":NotoSansGurmukhiUI-VF.ttf", ":NotoSansHanifiRohingya-Regular.otf", ":NotoSansHanunoo-Regular.ttf", ":NotoSansHatran-Regular.otf", ":NotoSansHebrew-Bold.ttf", ":NotoSansHebrew-Regular.ttf", ":NotoSansImperialAramaic-Regular.ttf", ":NotoSansInscriptionalPahlavi-Regular.ttf", ":NotoSansInscriptionalParthian-Regular.ttf", ":NotoSansJavanese-Regular.otf", ":NotoSansKaithi-Regular.ttf", ":NotoSansKannada-VF.ttf", ":NotoSansKannadaUI-VF.ttf", ":NotoSansKayahLi-Regular.ttf", ":NotoSansKharoshthi-Regular.ttf", ":NotoSansKhmer-VF.ttf", ":NotoSansKhmerUI-Bold.ttf", ":NotoSansKhmerUI-Regular.ttf", ":NotoSansKhojki-Regular.otf", ":NotoSansLao-Bold.ttf", ":NotoSansLao-Regular.ttf", ":NotoSansLaoUI-Bold.ttf", ":NotoSansLaoUI-Regular.ttf", ":NotoSansLepcha-Regular.ttf", ":NotoSansLimbu-Regular.ttf", ":NotoSansLinearA-Regular.otf", ":NotoSansLinearB-Regular.ttf", ":NotoSansLisu-Regular.ttf", ":NotoSansLycian-Regular.ttf", ":NotoSansLydian-Regular.ttf", ":NotoSansMalayalam-VF.ttf", ":NotoSansMalayalamUI-VF.ttf", ":NotoSansMandaic-Regular.ttf", ":NotoSansManichaean-Regular.otf", ":NotoSansMarchen-Regular.otf", ":NotoSansMasaramGondi-Regular.otf", ":NotoSansMedefaidrin-VF.ttf", ":NotoSansMeeteiMayek-Regular.ttf", ":NotoSansMeroitic-Regular.otf", ":NotoSansMiao-Regular.otf", ":NotoSansModi-Regular.ttf", ":NotoSansMongolian-Regular.ttf", ":NotoSansMro-Regular.otf", ":NotoSansMultani-Regular.otf", ":NotoSansMyanmar-Bold.otf", ":NotoSansMyanmar-Medium.otf", ":NotoSansMyanmar-Regular.otf", ":NotoSansMyanmarUI-Bold.otf", ":NotoSansMyanmarUI-Medium.otf", ":NotoSansMyanmarUI-Regular.otf", ":NotoSansNKo-Regular.ttf", ":NotoSansNabataean-Regular.otf", ":NotoSansNewTaiLue-Regular.ttf", ":NotoSansNewa-Regular.otf", ":NotoSansOgham-Regular.ttf", ":NotoSansOlChiki-Regular.ttf", ":NotoSansOldItalic-Regular.ttf", ":NotoSansOldNorthArabian-Regular.otf", ":NotoSansOldPermic-Regular.otf", ":NotoSansOldPersian-Regular.ttf", ":NotoSansOldSouthArabian-Regular.ttf", ":NotoSansOldTurkic-Regular.ttf", ":NotoSansOriya-Bold.ttf", ":NotoSansOriya-Regular.ttf", ":NotoSansOriyaUI-Bold.ttf", ":NotoSansOriyaUI-Regular.ttf", ":NotoSansOsage-Regular.ttf", ":NotoSansOsmanya-Regular.ttf", ":NotoSansPahawhHmong-Regular.otf", ":NotoSansPalmyrene-Regular.otf", ":NotoSansPauCinHau-Regular.otf", ":NotoSansPhagsPa-Regular.ttf", ":NotoSansPhoenician-Regular.ttf", ":NotoSansRejang-Regular.ttf", ":NotoSansRunic-Regular.ttf", ":NotoSansSamaritan-Regular.ttf", ":NotoSansSaurashtra-Regular.ttf", ":NotoSansSharada-Regular.otf", ":NotoSansShavian-Regular.ttf", ":NotoSansSinhala-VF.ttf", ":NotoSansSinhalaUI-VF.ttf", ":NotoSansSoraSompeng-Regular.otf", ":NotoSansSoyombo-VF.ttf", ":NotoSansSundanese-Regular.ttf", ":NotoSansSylotiNagri-Regular.ttf", ":NotoSansSymbols-Regular-Subsetted.ttf", ":NotoSansSymbols-Regular-Subsetted2.ttf", ":NotoSansSyriacEastern-Regular.ttf", ":NotoSansSyriacEstrangela-Regular.ttf", ":NotoSansSyriacWestern-Regular.ttf", ":NotoSansTagalog-Regular.ttf", ":NotoSansTagbanwa-Regular.ttf", ":NotoSansTaiLe-Regular.ttf", ":NotoSansTaiTham-Regular.ttf", ":NotoSansTaiViet-Regular.ttf", ":NotoSansTakri-VF.ttf", ":NotoSansTamil-VF.ttf", ":NotoSansTamilUI-VF.ttf", ":NotoSansTelugu-VF.ttf", ":NotoSansTeluguUI-VF.ttf", ":NotoSansThaana-Bold.ttf", ":NotoSansThaana-Regular.ttf", ":NotoSansThai-Bold.ttf", ":NotoSansThai-Regular.ttf", ":NotoSansThaiUI-Bold.ttf", ":NotoSansThaiUI-Regular.ttf", ":NotoSansTifinagh-Regular.otf", ":NotoSansUgaritic-Regular.ttf", ":NotoSansVai-Regular.ttf", ":NotoSansWancho-Regular.otf", ":NotoSansWarangCiti-Regular.otf", ":NotoSansYi-Regular.ttf", ":NotoSerif-Bold.ttf", ":NotoSerif-BoldItalic.ttf", ":NotoSerif-Italic.ttf", ":NotoSerif-Regular.ttf", ":NotoSerifArmenian-VF.ttf", ":NotoSerifBengali-VF.ttf", ":NotoSerifCJK-Regular.ttc", ":NotoSerifDevanagari-VF.ttf", ":NotoSerifDogra-Regular.ttf", ":NotoSerifEthiopic-VF.ttf", ":NotoSerifGeorgian-VF.ttf", ":NotoSerifGujarati-VF.ttf", ":NotoSerifGurmukhi-VF.ttf", ":NotoSerifHebrew-Bold.ttf", ":NotoSerifHebrew-Regular.ttf", ":NotoSerifHentaigana.ttf", ":NotoSerifKannada-VF.ttf", ":NotoSerifKhmer-Bold.otf", ":NotoSerifKhmer-Regular.otf", ":NotoSerifLao-Bold.ttf", ":NotoSerifLao-Regular.ttf", ":NotoSerifMalayalam-VF.ttf", ":NotoSerifMyanmar-Bold.otf", ":NotoSerifMyanmar-Regular.otf", ":NotoSerifNyiakengPuachueHmong-VF.ttf", ":NotoSerifSinhala-VF.ttf", ":NotoSerifTamil-VF.ttf", ":NotoSerifTelugu-VF.ttf", ":NotoSerifThai-Bold.ttf", ":NotoSerifThai-Regular.ttf", ":NotoSerifTibetan-VF.ttf", ":NotoSerifYezidi-VF.ttf", ":Roboto-Regular.ttf", ":RobotoFlex-Regular.ttf", ":RobotoStatic-Regular.ttf", ":SourceSansPro-Bold.ttf", ":SourceSansPro-BoldItalic.ttf", ":SourceSansPro-Italic.ttf", ":SourceSansPro-Regular.ttf", ":SourceSansPro-SemiBold.ttf", ":SourceSansPro-SemiBoldItalic.ttf", ], device_first_srcs: [ ":font_fallback.xml", ":fonts.xml", ], visibility: ["//visibility:private"], } // JARs in "ravenwood-runtime" are set to the classpath, sorted alphabetically. // Rename some of the dependencies to make sure they're included in the intended order. java_library { name: "100-framework-minus-apex.ravenwood", installable: false, static_libs: ["framework-minus-apex.ravenwood"], visibility: ["//visibility:private"], } java_library { name: "200-kxml2-android", installable: false, static_libs: ["kxml2-android"], visibility: ["//visibility:private"], } java_library { name: "z00-all-updatable-modules-system-stubs", installable: false, static_libs: ["all-updatable-modules-system-stubs-for-host"], visibility: ["//visibility:private"], } android_ravenwood_libgroup { name: "ravenwood-runtime", data: [":ravenwood-data"], fonts: [":ravenwood-fonts"], libs: [ "100-framework-minus-apex.ravenwood", "200-kxml2-android", "ravenwood-runtime-common-ravenwood", "android.test.mock.ravenwood", "ravenwood-helper-runtime", "hoststubgen-helper-runtime.ravenwood", "services.core.ravenwood-jarjar", "services.fakes.ravenwood-jarjar", // ICU "core-icu4j-for-host.ravenwood", "icu4j-icudata-jarjar", "icu4j-icutzdata-jarjar", // DeviceConfig "framework-configinfrastructure.ravenwood", // StatsD "framework-statsd.ravenwood", // Provide runtime versions of utils linked in below "junit", "truth", "flag-junit", "ravenwood-framework", "ravenwood-junit-impl", "ravenwood-junit-impl-flag", "mockito-ravenwood-prebuilt", "inline-mockito-ravenwood-prebuilt", // It's a stub, so it should be towards the end. "z00-all-updatable-modules-system-stubs", ], jni_libs: [ // Libraries has to be loaded in the following order "libravenwood_initializer", "libravenwood_runtime", "libandroid_runtime", ], } android_ravenwood_libgroup { name: "ravenwood-utils", libs: [ "junit", "truth", "flag-junit", "ravenwood-framework", "ravenwood-junit", "mockito-ravenwood-prebuilt", "inline-mockito-ravenwood-prebuilt", ], } build = [ "Framework.bp", ]