diff options
59 files changed, 1380 insertions, 6 deletions
diff --git a/build/allowed_deps.txt b/build/allowed_deps.txt index d491781a..d83e4f02 100644 --- a/build/allowed_deps.txt +++ b/build/allowed_deps.txt @@ -13,11 +13,22 @@ # See go/apex-allowed-deps-error for more details. # TODO(b/157465465): introduce automated quality signals and remove this list. +android.hardware.audio.common-V1-ndk(minSdkVersion:31) +android.hardware.audio.common@5.0(minSdkVersion:30) +android.hardware.bluetooth.a2dp@1.0(minSdkVersion:30) +android.hardware.bluetooth.audio-V1-ndk(minSdkVersion:31) +android.hardware.bluetooth.audio-V2-ndk(minSdkVersion:31) +android.hardware.bluetooth.audio@2.0(minSdkVersion:30) +android.hardware.bluetooth.audio@2.1(minSdkVersion:30) +android.hardware.bluetooth@1.0(minSdkVersion:30) +android.hardware.bluetooth@1.1(minSdkVersion:30) android.hardware.cas.native@1.0(minSdkVersion:29) android.hardware.cas@1.0(minSdkVersion:29) android.hardware.common-ndk_platform(minSdkVersion:29) android.hardware.common-V2-ndk(minSdkVersion:29) android.hardware.common-V2-ndk_platform(minSdkVersion:29) +android.hardware.common.fmq-V1-ndk(minSdkVersion:29) +android.hardware.graphics.allocator-V1-ndk(minSdkVersion:29) android.hardware.graphics.allocator@2.0(minSdkVersion:29) android.hardware.graphics.allocator@3.0(minSdkVersion:29) android.hardware.graphics.allocator@4.0(minSdkVersion:29) @@ -26,6 +37,7 @@ android.hardware.graphics.bufferqueue@2.0(minSdkVersion:29) android.hardware.graphics.common-ndk_platform(minSdkVersion:29) android.hardware.graphics.common-V2-ndk(minSdkVersion:29) android.hardware.graphics.common-V2-ndk_platform(minSdkVersion:29) +android.hardware.graphics.common-V3-ndk(minSdkVersion:29) android.hardware.graphics.common@1.0(minSdkVersion:29) android.hardware.graphics.common@1.1(minSdkVersion:29) android.hardware.graphics.common@1.2(minSdkVersion:29) @@ -48,9 +60,12 @@ android.hardware.neuralnetworks@1.0(minSdkVersion:30) android.hardware.neuralnetworks@1.1(minSdkVersion:30) android.hardware.neuralnetworks@1.2(minSdkVersion:30) android.hardware.neuralnetworks@1.3(minSdkVersion:30) +android.hardware.radio-V1.0-java(minSdkVersion:current) android.hardware.tetheroffload.config-V1.0-java(minSdkVersion:current) android.hardware.tetheroffload.control-V1.0-java(minSdkVersion:current) android.hardware.tetheroffload.control-V1.1-java(minSdkVersion:current) +android.hardware.uwb-V1-ndk(minSdkVersion:Tiramisu) +android.hardware.uwb-V1-rust(minSdkVersion:Tiramisu) android.hardware.wifi-V1.0-java(minSdkVersion:30) android.hardware.wifi-V1.0-java-constants(minSdkVersion:30) android.hardware.wifi-V1.1-java(minSdkVersion:30) @@ -81,7 +96,11 @@ android.hidl.safe_union@1.0(minSdkVersion:29) android.hidl.token@1.0(minSdkVersion:29) android.hidl.token@1.0-utils(minSdkVersion:29) android.media.audio.common.types-V1-cpp(minSdkVersion:29) +android.media.audio.common.types-V1-ndk(minSdkVersion:29) android.net.ipsec.ike.xml(minSdkVersion:(no version)) +android.system.suspend-V1-ndk(minSdkVersion:30) +android.system.suspend-V1-ndk(minSdkVersion:Tiramisu) +android.system.suspend.control-V1-ndk(minSdkVersion:30) android_downloader_lib(minSdkVersion:30) androidx-constraintlayout_constraintlayout(minSdkVersion:14) androidx-constraintlayout_constraintlayout-solver(minSdkVersion:24) @@ -109,6 +128,7 @@ androidx.drawerlayout_drawerlayout(minSdkVersion:14) androidx.dynamicanimation_dynamicanimation(minSdkVersion:14) androidx.emoji2_emoji2(minSdkVersion:14) androidx.emoji2_emoji2-views-helper(minSdkVersion:14) +androidx.exifinterface_exifinterface(minSdkVersion:14) androidx.fragment_fragment(minSdkVersion:14) androidx.fragment_fragment-ktx(minSdkVersion:14) androidx.interpolator_interpolator(minSdkVersion:14) @@ -176,6 +196,7 @@ audiopolicy-aidl-cpp(minSdkVersion:29) auto_value_annotations(minSdkVersion:19) av-headers(minSdkVersion:29) av-types-aidl-cpp(minSdkVersion:29) +avrcp_headers(minSdkVersion:30) bcm_object(minSdkVersion:29) bionic_libc_platform_headers(minSdkVersion:29) boringssl_self_test(minSdkVersion:29) @@ -191,8 +212,10 @@ car-rotary-lib(minSdkVersion:28) car-rotary-lib-resources(minSdkVersion:28) car-ui-lib(minSdkVersion:28) car-ui-lib-resources(minSdkVersion:28) +census(minSdkVersion:30) clatd(minSdkVersion:30) codecs_g711dec(minSdkVersion:29) +com.android.vcard(minSdkVersion:9) com.google.android.material_material(minSdkVersion:14) connectivity_native_aidl_interface-V1-java(minSdkVersion:30) conscrypt(minSdkVersion:29) @@ -219,9 +242,9 @@ crtend_so(minSdkVersion:current) datastallprotosnano(minSdkVersion:29) dnsproxyd_protocol_headers(minSdkVersion:29) DocumentsUI-res-lib(minSdkVersion:29) -exoplayer2-annotation-stubs(minSdkVersion:16) -exoplayer2-extractor(minSdkVersion:16) -exoplayer2.15.1(minSdkVersion:16) +exoplayer-annotation_stubs(minSdkVersion:16) +exoplayer-mediaprovider-core(minSdkVersion:16) +exoplayer-mediaprovider-ui(minSdkVersion:16) ExtServices(minSdkVersion:30) ExtServices(minSdkVersion:current) ExtServices-core(minSdkVersion:30) @@ -232,13 +255,15 @@ fmtlib(minSdkVersion:29) fmtlib_headers(minSdkVersion:29) fmtlib_ndk(minSdkVersion:29) fp16_headers(minSdkVersion:30) +framework-bluetooth(minSdkVersion:current) framework-mediaprovider(minSdkVersion:30) framework-permission(minSdkVersion:30) framework-permission(minSdkVersion:current) framework-statsd(minSdkVersion:30) framework-statsd(minSdkVersion:current) framework-tethering(minSdkVersion:30) -framework-uwb(minSdkVersion:current) +framework-uwb(minSdkVersion:33) +framework-uwb(minSdkVersion:Tiramisu) framework-wifi(minSdkVersion:30) framework-wifi-util-lib(minSdkVersion:30) gemmlowp_headers(minSdkVersion:(no version)) @@ -249,14 +274,15 @@ geotz_s2storage_ro(minSdkVersion:31) GoogleCellBroadcastApp(minSdkVersion:29) GoogleCellBroadcastServiceModule(minSdkVersion:29) GoogleExtServices(minSdkVersion:30) -GoogleExtServices(minSdkVersion:current) GooglePermissionController(minSdkVersion:28) GooglePermissionController(minSdkVersion:30) +gpr_base(minSdkVersion:30) guava(minSdkVersion:current) gwp_asan_headers(minSdkVersion:S) icing-java-proto-lite(minSdkVersion:current) iconloader(minSdkVersion:21) iconloader(minSdkVersion:26) +internal_include_headers(minSdkVersion:30) ipmemorystore-aidl-interfaces-java(minSdkVersion:29) ipmemorystore-aidl-interfaces-V10-java(minSdkVersion:29) jacocoagent(minSdkVersion:9) @@ -277,8 +303,11 @@ libadbd_core(minSdkVersion:(no version)) libadbd_core(minSdkVersion:30) libadbd_services(minSdkVersion:(no version)) libadbd_services(minSdkVersion:30) +libaddress_sorting(minSdkVersion:30) libaidlcommonsupport(minSdkVersion:29) liballoc.rust_sysroot(minSdkVersion:29) +libalts_frame_protector(minSdkVersion:30) +libalts_util(minSdkVersion:30) libamrextractor(minSdkVersion:29) libandroid_log_sys(minSdkVersion:29) libandroid_logger(minSdkVersion:29) @@ -291,6 +320,7 @@ libasync_safe(minSdkVersion:apex_inherit) libasyncio(minSdkVersion:(no version)) libasyncio(minSdkVersion:apex_inherit) libatomic(minSdkVersion:(no version)) +libaudio-a2dp-hw-utils(minSdkVersion:29) libaudio_system_headers(minSdkVersion:29) libaudioclient_aidl_conversion_util(minSdkVersion:29) libaudioclient_headers(minSdkVersion:29) @@ -315,9 +345,16 @@ libbinder_ndk_sys(minSdkVersion:Tiramisu) libbinder_rs(minSdkVersion:Tiramisu) libbinder_tokio_rs(minSdkVersion:Tiramisu) libbinderthreadstateutils(minSdkVersion:29) +libbitflags(minSdkVersion:29) +libbluetooth-types(minSdkVersion:29) libbluetooth-types-header(minSdkVersion:29) +libbluetooth_headers(minSdkVersion:30) libbrotli(minSdkVersion:(no version)) libbrotli(minSdkVersion:apex_inherit) +libbt-platform-protos-lite(minSdkVersion:30) +libbt_keystore_cc(minSdkVersion:30) +libbt_keystore_cc_headers(minSdkVersion:30) +libbtcore_headers(minSdkVersion:30) libbuildversion(minSdkVersion:(no version)) libbuildversion(minSdkVersion:26) libbytes(minSdkVersion:29) @@ -331,8 +368,10 @@ libc_headers_arch(minSdkVersion:apex_inherit) libc_llndk_headers(minSdkVersion:apex_inherit) libc_scudo(minSdkVersion:apex_inherit) libcap(minSdkVersion:29) +libcesu8(minSdkVersion:29) libcfg_if(minSdkVersion:29) libcfg_if.rust_sysroot(minSdkVersion:29) +libchrome(minSdkVersion:30) libcodec2(minSdkVersion:29) libcodec2_headers(minSdkVersion:29) libcodec2_hidl@1.0(minSdkVersion:29) @@ -372,6 +411,7 @@ libcodec2_soft_vp9dec(minSdkVersion:29) libcodec2_soft_vp9enc(minSdkVersion:29) libcodec2_vndk(minSdkVersion:29) libcom_android_networkstack_tethering_util_jni(minSdkVersion:30) +libcombine(minSdkVersion:29) libcompiler_builtins.rust_sysroot(minSdkVersion:29) libcore.rust_sysroot(minSdkVersion:29) libcrypto(minSdkVersion:29) @@ -380,8 +420,11 @@ libcrypto_static(minSdkVersion:29) libcrypto_utils(minSdkVersion:(no version)) libcrypto_utils(minSdkVersion:apex_inherit) libcutils(minSdkVersion:29) +libcutils_bindgen(minSdkVersion:29) libcutils_headers(minSdkVersion:29) libcutils_sockets(minSdkVersion:29) +libcxx(minSdkVersion:29) +libcxxbridge05(minSdkVersion:29) libdexfile_external_headers(minSdkVersion:31) libdexfile_support(minSdkVersion:31) libdiagnose_usb(minSdkVersion:(no version)) @@ -389,10 +432,14 @@ libdiagnose_usb(minSdkVersion:apex_inherit) libdmabufheap(minSdkVersion:29) libdmabufinfo(minSdkVersion:S) libdoh_ffi(minSdkVersion:29) +libdowncast_rs(minSdkVersion:29) libeigen(minSdkVersion:(no version)) libeigen(minSdkVersion:apex_inherit) libenv_logger(minSdkVersion:29) +liberror_headers(minSdkVersion:29) +libevent(minSdkVersion:30) libexpat(minSdkVersion:apex_inherit) +libexpectedutils_headers(minSdkVersion:29) libextservices(minSdkVersion:30) libextservices_jni(minSdkVersion:30) libfft2d(minSdkVersion:30) @@ -401,6 +448,7 @@ libFLAC(minSdkVersion:29) libFLAC-config(minSdkVersion:29) libFLAC-headers(minSdkVersion:29) libflacextractor(minSdkVersion:29) +libflatbuffers-cpp(minSdkVersion:30) libfmq(minSdkVersion:29) libfmq-base(minSdkVersion:29) libform_urlencoded(minSdkVersion:29) @@ -420,6 +468,41 @@ libgcc_stripped(minSdkVersion:(no version)) libgetopts(minSdkVersion:29) libgralloctypes(minSdkVersion:29) libgrallocusage(minSdkVersion:29) +libgrpc(minSdkVersion:30) +libgrpc++(minSdkVersion:30) +libgrpc++_base(minSdkVersion:30) +libgrpc++_codegen_base_src(minSdkVersion:30) +libgrpc_base(minSdkVersion:30) +libgrpc_base_c(minSdkVersion:30) +libgrpc_bindgen(minSdkVersion:29) +libgrpc_client_authority_filter(minSdkVersion:30) +libgrpc_client_channel(minSdkVersion:30) +libgrpc_deadline_filter(minSdkVersion:30) +libgrpc_http_filters(minSdkVersion:30) +libgrpc_lb_policy_grpclb_secure(minSdkVersion:30) +libgrpc_lb_policy_pick_first(minSdkVersion:30) +libgrpc_lb_policy_round_robin(minSdkVersion:30) +libgrpc_max_age_filter(minSdkVersion:30) +libgrpc_message_size_filter(minSdkVersion:30) +libgrpc_resolver_dns_ares(minSdkVersion:30) +libgrpc_resolver_dns_native(minSdkVersion:30) +libgrpc_resolver_fake(minSdkVersion:30) +libgrpc_resolver_sockaddr(minSdkVersion:30) +libgrpc_secure(minSdkVersion:30) +libgrpc_server_backward_compatibility(minSdkVersion:30) +libgrpc_trace(minSdkVersion:30) +libgrpc_transport_chttp2(minSdkVersion:30) +libgrpc_transport_chttp2_alpn(minSdkVersion:30) +libgrpc_transport_chttp2_client_connector(minSdkVersion:30) +libgrpc_transport_chttp2_client_insecure(minSdkVersion:30) +libgrpc_transport_chttp2_client_secure(minSdkVersion:30) +libgrpc_transport_chttp2_server_insecure(minSdkVersion:30) +libgrpc_transport_chttp2_server_secure(minSdkVersion:30) +libgrpc_transport_inproc(minSdkVersion:30) +libgrpc_workaround_cronet_compression_filter(minSdkVersion:30) +libgrpc_wrap(minSdkVersion:29) +libgrpcio(minSdkVersion:29) +libgrpcio_sys(minSdkVersion:29) libgsm(minSdkVersion:apex_inherit) libgtest_prod(minSdkVersion:apex_inherit) libgtest_prod_headers(minSdkVersion:apex_inherit) @@ -437,6 +520,8 @@ libhwbinder_headers(minSdkVersion:29) libidna(minSdkVersion:29) libion(minSdkVersion:29) libip_checksum(minSdkVersion:30) +libjni(minSdkVersion:29) +libjni_sys(minSdkVersion:29) libjsoncpp(minSdkVersion:29) libkll(minSdkVersion:30) libkll-encoder(minSdkVersion:30) @@ -448,8 +533,11 @@ liblibc(minSdkVersion:29) liblibc.rust_sysroot(minSdkVersion:29) libLibGuiProperties(minSdkVersion:29) liblibm(minSdkVersion:29) +liblibz_sys(minSdkVersion:29) +liblock_api(minSdkVersion:29) liblog_headers(minSdkVersion:29) liblog_rust(minSdkVersion:29) +liblogger(minSdkVersion:29) liblua(minSdkVersion:(no version)) liblua(minSdkVersion:30) liblz4(minSdkVersion:(no version)) @@ -469,6 +557,7 @@ libmedia_midiiowrapper(minSdkVersion:29) libmediaformatshaper(minSdkVersion:29) libmemchr(minSdkVersion:29) libmeminfo(minSdkVersion:S) +libmemoffset(minSdkVersion:29) libminijail(minSdkVersion:29) libminijail_gen_constants(minSdkVersion:(no version)) libminijail_gen_constants_obj(minSdkVersion:29) @@ -477,6 +566,7 @@ libminijail_gen_syscall_obj(minSdkVersion:29) libminijail_generated(minSdkVersion:29) libmio(minSdkVersion:29) libmkvextractor(minSdkVersion:29) +libmodpb64(minSdkVersion:30) libmodules-utils-build(minSdkVersion:29) libmp3extractor(minSdkVersion:29) libmp4extractor(minSdkVersion:29) @@ -500,17 +590,22 @@ libneuralnetworks_common(minSdkVersion:30) libneuralnetworks_headers(minSdkVersion:(no version)) libneuralnetworks_headers(minSdkVersion:30) libneuralnetworks_shim_static(minSdkVersion:30) +libnix(minSdkVersion:29) libnum_cpus(minSdkVersion:29) +libnum_traits(minSdkVersion:29) liboggextractor(minSdkVersion:29) libonce_cell(minSdkVersion:29) libopenjdkjvmti_headers(minSdkVersion:31) libopus(minSdkVersion:29) libpanic_abort.rust_sysroot(minSdkVersion:29) +libparking_lot(minSdkVersion:29) +libparking_lot_core(minSdkVersion:29) libpercent_encoding(minSdkVersion:29) libperfetto_client_experimental(minSdkVersion:S) libpin_project_lite(minSdkVersion:29) libpin_utils(minSdkVersion:29) libPlatformProperties(minSdkVersion:S) +libpower(minSdkVersion:Tiramisu) libproc_macro_nested(minSdkVersion:29) libprocessgroup(minSdkVersion:29) libprocessgroup_headers(minSdkVersion:29) @@ -523,8 +618,14 @@ libprofile-clang-extras_ndk(minSdkVersion:(no version)) libprofile-extras(minSdkVersion:(no version)) libprofile-extras_ndk(minSdkVersion:(no version)) libprofiler_builtins.rust_sysroot(minSdkVersion:29) +libprotobuf(minSdkVersion:29) +libprotobuf-c-nano(minSdkVersion:30) +libprotobuf-cpp-full(minSdkVersion:29) libprotobuf-cpp-lite(minSdkVersion:29) +libprotobuf-cpp-lite-ndk(minSdkVersion:(no version)) +libprotobuf-cpp-lite-ndk(minSdkVersion:33) libprotobuf-java-lite(minSdkVersion:current) +libprotobuf-java-micro(minSdkVersion:8) libprotobuf-java-nano(minSdkVersion:9) libprotoutil(minSdkVersion:(no version)) libprotoutil(minSdkVersion:30) @@ -536,9 +637,12 @@ libring-test(minSdkVersion:29) librustc_demangle(minSdkVersion:(no version)) librustc_demangle.rust_sysroot(minSdkVersion:29) librustc_demangle_static(minSdkVersion:(no version)) +librustutils(minSdkVersion:29) libruy_static(minSdkVersion:30) +libscopeguard(minSdkVersion:29) libsfplugin_ccodec_utils(minSdkVersion:29) libslab(minSdkVersion:29) +libsmallvec(minSdkVersion:29) libsonivoxwithoutjet(minSdkVersion:29) libspeexresampler(minSdkVersion:29) libspin(minSdkVersion:29) @@ -572,6 +676,7 @@ libstd(minSdkVersion:29) libstd_detect.rust_sysroot(minSdkVersion:29) libsync(minSdkVersion:(no version)) libsystem_headers(minSdkVersion:apex_inherit) +libsystem_properties_bindgen(minSdkVersion:29) libsysutils(minSdkVersion:apex_inherit) libtcutils(minSdkVersion:30) libterm(minSdkVersion:29) @@ -581,6 +686,7 @@ libtextclassifier(minSdkVersion:30) libtextclassifier-java(minSdkVersion:28) libtextclassifier-java(minSdkVersion:current) libtextclassifier_abseil(minSdkVersion:30) +libtextclassifier_bert_tokenizer(minSdkVersion:30) libtextclassifier_flatbuffer_headers(minSdkVersion:30) libtextclassifier_hash_headers(minSdkVersion:(no version)) libtextclassifier_hash_headers(minSdkVersion:apex_inherit) @@ -595,6 +701,9 @@ libtinyvec(minSdkVersion:29) libtinyvec_macros(minSdkVersion:29) libtinyxml2(minSdkVersion:S) libtokio(minSdkVersion:29) +libtokio_stream(minSdkVersion:29) +libtsi(minSdkVersion:30) +libtsi_interface(minSdkVersion:30) libui(minSdkVersion:29) libui-types(minSdkVersion:apex_inherit) libui_headers(minSdkVersion:29) @@ -610,6 +719,7 @@ libutf(minSdkVersion:(no version)) libutf(minSdkVersion:14) libutils(minSdkVersion:apex_inherit) libutils_headers(minSdkVersion:apex_inherit) +libuwb_uci_packets(minSdkVersion:Tiramisu) libvorbisidec(minSdkVersion:29) libvpx(minSdkVersion:29) libwavextractor(minSdkVersion:29) @@ -633,6 +743,7 @@ metrics-constants-protos(minSdkVersion:current) modules-utils-backgroundthread(minSdkVersion:29) modules-utils-build(minSdkVersion:29) modules-utils-build_system(minSdkVersion:29) +modules-utils-bytesmatcher(minSdkVersion:29) modules-utils-handlerexecutor(minSdkVersion:29) modules-utils-list-slice(minSdkVersion:30) modules-utils-locallog(minSdkVersion:30) @@ -640,6 +751,8 @@ modules-utils-os(minSdkVersion:30) modules-utils-preconditions(minSdkVersion:29) modules-utils-shell-command-handler(minSdkVersion:29) modules-utils-statemachine(minSdkVersion:29) +modules-utils-synchronous-result-receiver(minSdkVersion:29) +modules-utils-uieventlogger-interface(minSdkVersion:29) ndk_crtbegin_so.21(minSdkVersion:(no version)) ndk_crtbegin_so.27(minSdkVersion:(no version)) ndk_crtend_so.21(minSdkVersion:(no version)) @@ -773,6 +886,7 @@ prebuilt_androidx.emoji2_emoji-nodeps(minSdkVersion:14) prebuilt_androidx.emoji2_emoji2-nodeps(minSdkVersion:14) prebuilt_androidx.emoji2_emoji2-views-helpe-nodeps(minSdkVersion:14) prebuilt_androidx.emoji2_emoji2-views-helper-nodeps(minSdkVersion:14) +prebuilt_androidx.exifinterface_exifinterface-nodeps(minSdkVersion:14) prebuilt_androidx.fragment_fragment-ktx-nodeps(minSdkVersion:(no version)) prebuilt_androidx.fragment_fragment-ktx-nodeps(minSdkVersion:14) prebuilt_androidx.fragment_fragment-nodeps(minSdkVersion:(no version)) @@ -882,6 +996,7 @@ prebuilt_asm-commons-9.2(minSdkVersion:current) prebuilt_asm-tree-7.0(minSdkVersion:current) prebuilt_asm-tree-9.2(minSdkVersion:current) prebuilt_bionic_libc_platform_headers(minSdkVersion:(no version)) +prebuilt_car-ui-lib-nodeps(minSdkVersion:28) prebuilt_com.google.android.material_material-nodeps(minSdkVersion:(no version)) prebuilt_com.google.android.material_material-nodeps(minSdkVersion:14) prebuilt_crtbegin_dynamic(minSdkVersion:(no version)) @@ -891,6 +1006,9 @@ prebuilt_crtend_so(minSdkVersion:(no version)) prebuilt_error_prone_annotations(minSdkVersion:(no version)) prebuilt_error_prone_annotations(minSdkVersion:29) prebuilt_error_prone_annotations(minSdkVersion:current) +prebuilt_glide-annotation-and-compiler-prebuilt(minSdkVersion:14) +prebuilt_glide-disklrucache-prebuilt(minSdkVersion:14) +prebuilt_glide-gifdecoder-prebuilt(minSdkVersion:14) prebuilt_glide-prebuilt(minSdkVersion:14) prebuilt_guava-listenablefuture-prebuilt-jar(minSdkVersion:29) prebuilt_guava-listenablefuture-prebuilt-jar(minSdkVersion:current) @@ -918,6 +1036,7 @@ prebuilt_test_framework-sdkextensions(minSdkVersion:(no version)) resourceobserver_aidl_interface-V1-ndk(minSdkVersion:29) resourceobserver_aidl_interface-V1-ndk_platform(minSdkVersion:29) s2-geometry-library-java(minSdkVersion:30) +sap-api-java-static(minSdkVersion:30) server_configurable_flags(minSdkVersion:29) ServiceWifiResourcesGoogle(minSdkVersion:30) SettingsLibActionBarShadow(minSdkVersion:21) @@ -933,8 +1052,10 @@ SettingsLibProgressBar(minSdkVersion:21) SettingsLibRadioButtonPreference(minSdkVersion:21) SettingsLibRestrictedLockUtils(minSdkVersion:21) SettingsLibSearchWidget(minSdkVersion:21) +SettingsLibSelectorWithWidgetPreference(minSdkVersion:21) SettingsLibSettingsTheme(minSdkVersion:21) SettingsLibSettingsTransition(minSdkVersion:29) +SettingsLibTopIntroPreference(minSdkVersion:21) SettingsLibTwoTargetPreference(minSdkVersion:21) SettingsLibUtils(minSdkVersion:21) spatializer-aidl-cpp(minSdkVersion:29) @@ -944,6 +1065,7 @@ statsd-aidl-ndk_platform(minSdkVersion:30) statsprotos(minSdkVersion:29) tensorflow_headers(minSdkVersion:(no version)) tensorflow_headers(minSdkVersion:apex_inherit) +tensorflowlite_java(minSdkVersion:30) TetheringApiCurrentLib(minSdkVersion:30) textclassifier-java-proto-lite(minSdkVersion:30) textclassifier-statsd(minSdkVersion:30) @@ -953,6 +1075,13 @@ TextClassifierNotificationLibNoManifest(minSdkVersion:30) TextClassifierServiceLibNoManifest(minSdkVersion:28) TextClassifierServiceLibNoManifest(minSdkVersion:30) tflite_support(minSdkVersion:30) +tflite_support_base_task_api_java(minSdkVersion:30) +tflite_support_classifiers_java(minSdkVersion:30) +tflite_support_java(minSdkVersion:30) +tflite_support_libz(minSdkVersion:30) +tflite_support_metadata_extractor(minSdkVersion:30) +tflite_support_task_core_proto(minSdkVersion:30) +tflite_support_tokenizers(minSdkVersion:30) wifi-lite-protos(minSdkVersion:30) wifi-nano-protos(minSdkVersion:30) wifi-service-pre-jarjar(minSdkVersion:30) diff --git a/build/mainline_modules_sdks.py b/build/mainline_modules_sdks.py index e1c9228c..eaa4639c 100755 --- a/build/mainline_modules_sdks.py +++ b/build/mainline_modules_sdks.py @@ -816,6 +816,16 @@ class BundledMainlineModule(MainlineModule): # List of mainline modules. MAINLINE_MODULES = [ MainlineModule( + apex="com.android.adservices", + sdks=["adservices-module-sdk"], + first_release=Tiramisu, + ), + MainlineModule( + apex="com.android.appsearch", + sdks=["appsearch-sdk"], + first_release=Tiramisu, + ), + MainlineModule( apex="com.android.art", sdks=[ "art-module-sdk", @@ -832,6 +842,13 @@ MAINLINE_MODULES = [ configModuleTypePrefix="art_prebuilt_", ), MainlineModule( + apex="com.android.btservices", + sdks=["btservices-module-sdk"], + first_release=Tiramisu, + # Bluetooth has always been and is still optional. + last_optional_release=LATEST, + ), + MainlineModule( apex="com.android.conscrypt", sdks=[ "conscrypt-module-sdk", @@ -872,6 +889,11 @@ MAINLINE_MODULES = [ ]), ), MainlineModule( + apex="com.android.ondevicepersonalization", + sdks=["ondevicepersonalization-module-sdk"], + first_release=Tiramisu, + ), + MainlineModule( apex="com.android.permission", sdks=["permission-module-sdk"], first_release=R, @@ -912,6 +934,13 @@ MAINLINE_MODULES = [ ]), ), MainlineModule( + apex="com.android.uwb", + sdks=["uwb-module-sdk"], + first_release=Tiramisu, + # Uwb has always been and is still optional. + last_optional_release=LATEST, + ), + MainlineModule( apex="com.android.wifi", sdks=["wifi-module-sdk"], first_release=R, diff --git a/javatests/com/android/modules/apkinapex/Android.bp b/javatests/com/android/modules/apkinapex/Android.bp new file mode 100644 index 00000000..ea5e0a8d --- /dev/null +++ b/javatests/com/android/modules/apkinapex/Android.bp @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2022 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +java_test_host { + name: "ApkInApexTest", + srcs: [ + "ApkInApexTest.java" + ], + libs: ["tradefed"], + java_resources: [ + ":test_com.android.modules.apkinapex", + ], + static_libs: [ + "compatibility-host-util", + "cts-install-lib-host", + "frameworks-base-hostutils", + "modules-utils-build-testing", + "truth-prebuilt", + ], + test_suites: [ + "general-tests", + "mts-core", + ], +} diff --git a/javatests/com/android/modules/apkinapex/ApkInApexTest.java b/javatests/com/android/modules/apkinapex/ApkInApexTest.java new file mode 100644 index 00000000..f5c28fa1 --- /dev/null +++ b/javatests/com/android/modules/apkinapex/ApkInApexTest.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2022 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 com.android.modules.apkinapex; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assume.assumeTrue; +import static org.junit.Assert.assertThrows; + +import com.android.modules.utils.build.testing.DeviceSdkLevel; +import com.android.tradefed.device.DeviceNotAvailableException; +import com.android.tradefed.testtype.DeviceJUnit4ClassRunner; +import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test; +import com.android.internal.util.test.SystemPreparer; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.RuleChain; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; + +import android.cts.install.lib.host.InstallUtilsHost; + +import java.util.Set; + +/** + * Collection of tests to test functionality of APKs in apexes. + * + * <p>This test installs an apex which contains APKs and then performs the tests. + */ +@RunWith(DeviceJUnit4ClassRunner.class) +public class ApkInApexTest extends BaseHostJUnit4Test { + + private final InstallUtilsHost mHostUtils = new InstallUtilsHost(this); + private final TemporaryFolder mTemporaryFolder = new TemporaryFolder(); + private final SystemPreparer mPreparer = new SystemPreparer(mTemporaryFolder, this::getDevice); + + @Rule + public final RuleChain ruleChain = RuleChain.outerRule(mTemporaryFolder).around(mPreparer); + + @Test + public void installApexAndRunTests() throws Exception { + if (!getDevice().isAdbRoot()) { + getDevice().enableAdbRoot(); + } + assumeTrue("Device does not support updating APEX", mHostUtils.isApexUpdateSupported()); + assumeTrue("Device requires root", getDevice().isAdbRoot()); + DeviceSdkLevel deviceSdkLevel = new DeviceSdkLevel(getDevice()); + assumeTrue("Test requires atLeastT", deviceSdkLevel.isDeviceAtLeastT()); + + String apex = "test_com.android.modules.apkinapex.apex"; + mPreparer.pushResourceFile(apex, "/system/apex/" + apex); + mPreparer.reboot(); + + Set<String> packages = getDevice().getInstalledPackageNames(); + + assertThat(packages) + .containsAtLeast( + "com.android.modules.apkinapex.apps.installable", + "com.android.modules.apkinapex.apps.futuretargetsdk" + ); + + assertThat(packages) + .containsNoneOf( + "com.android.modules.apkinapex.apps.futureminsdk", + "com.android.modules.apkinapex.apps.pastmaxsdk" + ); + } +} diff --git a/javatests/com/android/modules/apkinapex/OWNERS b/javatests/com/android/modules/apkinapex/OWNERS new file mode 100644 index 00000000..55f5b971 --- /dev/null +++ b/javatests/com/android/modules/apkinapex/OWNERS @@ -0,0 +1,5 @@ +# Mainline modularization team + +andreionea@google.com +pedroql@google.com +satayev@google.com diff --git a/javatests/com/android/modules/apkinapex/TEST_MAPPING b/javatests/com/android/modules/apkinapex/TEST_MAPPING new file mode 100644 index 00000000..6db4d77f --- /dev/null +++ b/javatests/com/android/modules/apkinapex/TEST_MAPPING @@ -0,0 +1,7 @@ +{ + "postsubmit": [ + { + "name": "ApkInApexTest" + } + ] +} diff --git a/javatests/com/android/modules/apkinapex/apex/Android.bp b/javatests/com/android/modules/apkinapex/apex/Android.bp new file mode 100644 index 00000000..c57280eb --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apex/Android.bp @@ -0,0 +1,43 @@ +// Copyright (C) 2022 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +apex_key { + name: "test_com.android.modules.apkinapex.key", + public_key: "test_com.android.modules.apkinapex.avbpubkey", + private_key: "test_com.android.modules.apkinapex.pem", +} + +android_app_certificate { + name: "test_com.android.modules.apkinapex.certificate", + certificate: "test_com.android.modules.apkinapex", +} + +apex_test { + name: "test_com.android.modules.apkinapex", + manifest: "manifest.json", + file_contexts: ":apex.test-file_contexts", + key: "test_com.android.modules.apkinapex.key", + certificate: ":test_com.android.modules.apkinapex.certificate", + updatable: false, + apps: [ + "com.android.modules.apkinapex.apps.installable", + "com.android.modules.apkinapex.apps.futureminsdk", + "com.android.modules.apkinapex.apps.futuretargetsdk", + "com.android.modules.apkinapex.apps.pastmaxsdk", + ], +} diff --git a/javatests/com/android/modules/apkinapex/apex/manifest.json b/javatests/com/android/modules/apkinapex/apex/manifest.json new file mode 100644 index 00000000..e022bbcf --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apex/manifest.json @@ -0,0 +1,4 @@ +{ + "name": "test_com.android.modules.apkinapex", + "version": 1 +} diff --git a/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.avbpubkey b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.avbpubkey Binary files differnew file mode 100644 index 00000000..8048e32e --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.avbpubkey diff --git a/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.pem b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.pem new file mode 100644 index 00000000..b674ca5e --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.pem @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.pk8 b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.pk8 Binary files differnew file mode 100644 index 00000000..a7fdf218 --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.pk8 diff --git a/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.x509.pem b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.x509.pem new file mode 100644 index 00000000..250ca497 --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apex/test_com.android.modules.apkinapex.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF6TCCA9ECFD53ZcG0C3ytBE7VKpvEYvgrm30+MA0GCSqGSIb3DQEBCwUAMIGv +MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91 +bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwHQW5kcm9pZDEi +MCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTErMCkGA1UEAwwidGVz +dF9jb20uYW5kcm9pZC5tb2R1bGVzLmFwa2luYXBleDAgFw0yMjA0MjAxMzI4MjNa +GA80NzYwMDMxNjEzMjgyM1owga8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxp +Zm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lk +MRAwDgYDVQQLDAdBbmRyb2lkMSIwIAYJKoZIhvcNAQkBFhNhbmRyb2lkQGFuZHJv +aWQuY29tMSswKQYDVQQDDCJ0ZXN0X2NvbS5hbmRyb2lkLm1vZHVsZXMuYXBraW5h +cGV4MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyKYGS+TPbDsOAMi/ +BIuOmWteJ1JvbLHVRYdXvLQuaT/x8Y6DCvaHbkh0WTOdytP3+ggJBcHW2SaRtvZg +bjoluXLVsNkyKSCHo/oBZbsL6Fcba/fePcEfQgJSwMPfMZPTfxn6e6f6QgpWPYiY +EF4XoJB0d48Im2Vj6kVSmngiGV93EVs+hJgaKdmt81LzrQyIuHmPP+LOS80KB2YS +V5wNkSViX9UKEXjG0IejJGsG+5FXiZI06NIERM4lAJ8OBuGTPXRNrej+N8YsaOIb +gPOMUJnEOyUeds4C6hTDZ+hqKbMBdLtXL3c3Jv/xYqXgB552HWS7jD/TdaHD9OmP +mAE9VLFFMmChUcW3/fCzrPG/jU9YE1TJlhjvwWKueL1topHTMy684Finb01I1wPi +gSNxBCnb58ejp2fbd6igR4J5GJomXxAOnWZjIjW4Xvq/LbCF+UrHoppdGUBVCr7Q +sKd2ErnW5bu/6PCdTXNuUj1TstBOi0fM0mMHFawRhJmxwPzW2N4DjwtHoFOt1gEm +OHZg85G7CVddA1rqzpU0y0GU8nDNGFvM04lxEuyJjXoT4ttVm9ye9YV+B6D+xE2B +0PxAVMZPXHgriA2hUuCHX6Wq3tgR+pYYCyZIzHHgkHrGobYanc6WyaBVYKrIoO4z +07c3VWDF5CK9+Sr2rY4eOYERCNECAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAZcOG +fle0l9KLwzDGXNYo5XaLppF891uphE2JaaHKrWIXNpKqFkg8iC0+Rxc4vpEGOj3x +DwBQElB2dCYLlfsTdlszATSf3EeKfKFFnF7yf82zjqDyBiTnYn9V+oi85gBC/DCl +PenCeTIv43qWAW660iR4wHVV87WLxlSPNo9HnV2ANwCfth4GBFmz9Shb54T9PiGJ +GPjOzZU9yaNOt7XaScL4AFS9CSF6npkpUXpZ1Zo8jjLdk/JGkDbLbm9fVLPmpHq4 +ObkYAzIaApx5Oq0aVXQGAd1woDwT7EXpodv3swY3fSIc3rVkc9PmYAZZEH/X/7Ne +oVS7xMRWQTowrxrtypeshKtu6S2+8ioJa1g6sVM5k0B9qnhJTDnCJFzqGwdb2gLv +H8o1ZoRrp+w3CLFDySuy/4ty2Hv4kggyVO/ivhO7inMRDH0BVyFO6oKs5I2aVvQB +kOxzPy6Isln3gdEW2Ckrd5Cg2QfpidJ7catDpnbN979F+YVM8v0gIyKOb4gEGFQU +ZfjELGJZ2UNQdpmlcvrPJfvRS0g85szgISr5K+bO2g6DUcSbCpgnvvZh4javt1Cv +Nmba1fpWvL+J8QdXtYYHFtCt/qc3M9WOgNmFNHqpSj+qQAMVG0O+Y3pXzX4crBqR +h+Xiai9DFq4fJJoRGD6xp+j+5s6g3UcF2zA8Mv0= +-----END CERTIFICATE----- diff --git a/javatests/com/android/modules/apkinapex/apps/Android.bp b/javatests/com/android/modules/apkinapex/apps/Android.bp new file mode 100644 index 00000000..04b56f29 --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apps/Android.bp @@ -0,0 +1,50 @@ +// Copyright (C) 2022 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test_helper_app { + name: "com.android.modules.apkinapex.apps.futureminsdk", + target_sdk_version: "Tiramisu", + + // min sdk is overridden in the AndroidManifest.xml - but it is required to have a value here + // so the build system uses the value from the manifest! + min_sdk_version: "23", + apex_available: [ "test_com.android.modules.apkinapex" ], + manifest: "FutureMinSdkAndroidManifest.xml" +} + +android_test_helper_app { + name: "com.android.modules.apkinapex.apps.futuretargetsdk", + target_sdk_version: "Tiramisu", + apex_available: [ "test_com.android.modules.apkinapex" ], + manifest: "FutureTargetSdkAndroidManifest.xml" +} + +android_test_helper_app { + name: "com.android.modules.apkinapex.apps.pastmaxsdk", + target_sdk_version: "Tiramisu", + apex_available: [ "test_com.android.modules.apkinapex" ], + manifest: "PastMaxSdkAndroidManifest.xml" +} + +android_test_helper_app { + name: "com.android.modules.apkinapex.apps.installable", + target_sdk_version: "Tiramisu", + min_sdk_version: "23", + apex_available: [ "test_com.android.modules.apkinapex" ], + manifest: "InstallableAndroidManifest.xml" +} diff --git a/javatests/com/android/modules/apkinapex/apps/FutureMinSdkAndroidManifest.xml b/javatests/com/android/modules/apkinapex/apps/FutureMinSdkAndroidManifest.xml new file mode 100644 index 00000000..b81e3587 --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apps/FutureMinSdkAndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2022 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. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.modules.apkinapex.apps.futureminsdk"> + <!-- on purpose we use a non-existing minSdkVersion to simulate a future API codename that + was not known when this system image was compiled --> + <uses-sdk + android:minSdkVersion="FutureSdkCodename" + /> +</manifest> diff --git a/javatests/com/android/modules/apkinapex/apps/FutureTargetSdkAndroidManifest.xml b/javatests/com/android/modules/apkinapex/apps/FutureTargetSdkAndroidManifest.xml new file mode 100644 index 00000000..962d846c --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apps/FutureTargetSdkAndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2022 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. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.modules.apkinapex.apps.futuretargetsdk"> + <!-- on purpose we use a non-existing targetSdkVersion to simulate a future API codename that + was not known when this system image was compiled --> + <uses-sdk + android:targetSdkVersion="FutureSdkCodename" + /> +</manifest> diff --git a/javatests/com/android/modules/apkinapex/apps/InstallableAndroidManifest.xml b/javatests/com/android/modules/apkinapex/apps/InstallableAndroidManifest.xml new file mode 100644 index 00000000..ee8ef927 --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apps/InstallableAndroidManifest.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2022 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. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.modules.apkinapex.apps.installable"> +</manifest> diff --git a/javatests/com/android/modules/apkinapex/apps/PastMaxSdkAndroidManifest.xml b/javatests/com/android/modules/apkinapex/apps/PastMaxSdkAndroidManifest.xml new file mode 100644 index 00000000..720a9b4f --- /dev/null +++ b/javatests/com/android/modules/apkinapex/apps/PastMaxSdkAndroidManifest.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2022 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. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.modules.apkinapex.apps.pastmaxsdk"> + <uses-sdk + android:maxSdkVersion="30" + /> +</manifest> diff --git a/javatests/com/android/modules/updatablesharedlibs/Android.bp b/javatests/com/android/modules/updatablesharedlibs/Android.bp new file mode 100644 index 00000000..f469f95e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/Android.bp @@ -0,0 +1,46 @@ +/* + * 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +java_test_host { + name: "UpdatableSharedLibsTest", + srcs: [ + "UpdatableSharedLibsTest.java" + ], + libs: ["tradefed"], + java_resources: [ + ":test_com.android.modules.updatablesharedlibs", + ], + data: [ + ":com.android.modules.updatablesharedlibs.apps.targetS", + ":com.android.modules.updatablesharedlibs.apps.targetT", + ":com.android.modules.updatablesharedlibs.apps.targetTWithLib", + ], + static_libs: [ + "compatibility-host-util", + "cts-install-lib-host", + "frameworks-base-hostutils", + "modules-utils-build-testing", + "truth-prebuilt", + ], + test_suites: [ + "general-tests", + "mts-core", + ], +} diff --git a/javatests/com/android/modules/updatablesharedlibs/OWNERS b/javatests/com/android/modules/updatablesharedlibs/OWNERS new file mode 100644 index 00000000..55f5b971 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/OWNERS @@ -0,0 +1,5 @@ +# Mainline modularization team + +andreionea@google.com +pedroql@google.com +satayev@google.com diff --git a/javatests/com/android/modules/updatablesharedlibs/TEST_MAPPING b/javatests/com/android/modules/updatablesharedlibs/TEST_MAPPING new file mode 100644 index 00000000..71bf5cc8 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/TEST_MAPPING @@ -0,0 +1,7 @@ +{ + "postsubmit": [ + { + "name": "UpdatableSharedLibsTest" + } + ] +} diff --git a/javatests/com/android/modules/updatablesharedlibs/UpdatableSharedLibsTest.java b/javatests/com/android/modules/updatablesharedlibs/UpdatableSharedLibsTest.java new file mode 100644 index 00000000..05295f61 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/UpdatableSharedLibsTest.java @@ -0,0 +1,91 @@ +/* + * 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 com.android.modules.updatablesharedlibs; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assume.assumeTrue; +import static org.junit.Assert.assertThrows; + +import com.android.tradefed.targetprep.TargetSetupError; +import com.android.tradefed.testtype.DeviceJUnit4ClassRunner; +import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test; +import com.android.tradefed.testtype.junit4.DeviceTestRunOptions; +import com.android.internal.util.test.SystemPreparer; + +import com.android.modules.utils.build.testing.DeviceSdkLevel; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.RuleChain; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; + +import android.cts.install.lib.host.InstallUtilsHost; + +@RunWith(DeviceJUnit4ClassRunner.class) +public class UpdatableSharedLibsTest extends BaseHostJUnit4Test { + + private final InstallUtilsHost mHostUtils = new InstallUtilsHost(this); + private final TemporaryFolder mTemporaryFolder = new TemporaryFolder(); + private final SystemPreparer mPreparer = new SystemPreparer(mTemporaryFolder, this::getDevice); + + @Rule + public final RuleChain ruleChain = RuleChain.outerRule(mTemporaryFolder).around(mPreparer); + + @Test + public void callOnDeviceApiFromHost() throws Exception { + if (!getDevice().isAdbRoot()) { + getDevice().enableAdbRoot(); + } + assumeTrue("Device needs to run on at least T", isAtLeastT()); + assumeTrue("Device does not support updating APEX", mHostUtils.isApexUpdateSupported()); + assumeTrue("Device requires root", getDevice().isAdbRoot()); + + // install app requiring lib before the lib is installed + assertInstalationFails(); + + String apex = "test_com.android.modules.updatablesharedlibs.apex"; + mPreparer.pushResourceFile(apex, "/system/apex/" + apex); + mPreparer.reboot(); + getDevice().disableAdbRoot(); + + installPackage("com.android.modules.updatablesharedlibs.apps.targetS.apk"); + installPackage("com.android.modules.updatablesharedlibs.apps.targetT.apk"); + installPackage("com.android.modules.updatablesharedlibs.apps.targetTWithLib.apk"); + + runDeviceTests("com.android.modules.updatablesharedlibs.apps.targetS", null); + runDeviceTests("com.android.modules.updatablesharedlibs.apps.targetT", null); + runDeviceTests("com.android.modules.updatablesharedlibs.apps.targetTWithLib", null); + } + + private void assertInstalationFails() throws Exception { + String packageName = "com.android.modules.updatablesharedlibs.apps.targetTWithLib"; + Exception e = assertThrows( + TargetSetupError.class, + () -> installPackage(packageName + ".apk")); + assertThat(e).hasMessageThat().contains( + "Package " + packageName + " requires " + + "unavailable shared library " + + "com.android.modules.updatablesharedlibs.libs.since.t"); + } + + protected boolean isAtLeastT() throws Exception { + DeviceSdkLevel deviceSdkLevel = new DeviceSdkLevel(getDevice()); + return deviceSdkLevel.isDeviceAtLeastT(); + } +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apex/Android.bp b/javatests/com/android/modules/updatablesharedlibs/apex/Android.bp new file mode 100644 index 00000000..db56f356 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apex/Android.bp @@ -0,0 +1,40 @@ +// 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +apex_key { + name: "com.android.modules.updatablesharedlibs.key", + public_key: "com.android.modules.updatablesharedlibs.avbpubkey", + private_key: "com.android.modules.updatablesharedlibs.pem", +} + +android_app_certificate { + name: "com.android.modules.updatablesharedlibs.certificate", + certificate: "com.android.modules.updatablesharedlibs", +} + +apex_test { + name: "test_com.android.modules.updatablesharedlibs", + manifest: "manifest.json", + file_contexts: ":apex.test-file_contexts", + key: "com.android.modules.updatablesharedlibs.key", + java_libs: [ + "com.android.modules.updatablesharedlibs.libs.before.t", + "com.android.modules.updatablesharedlibs.libs.since.t", + ], + updatable: false, +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.avbpubkey b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.avbpubkey Binary files differnew file mode 100644 index 00000000..e95ecbe8 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.avbpubkey diff --git a/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.pem b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.pem new file mode 100644 index 00000000..ef30766f --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.pem @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.pk8 b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.pk8 Binary files differnew file mode 100644 index 00000000..db1a90fe --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.pk8 diff --git a/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.x509.pem b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.x509.pem new file mode 100644 index 00000000..6d9143fc --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apex/com.android.modules.updatablesharedlibs.x509.pem @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF8zCCA9sCFF/jvwHjBgaxHaamJyRxH88j4704MA0GCSqGSIb3DQEBCwUAMIG0 +MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91 +bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwHQW5kcm9pZDEi +MCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTEwMC4GA1UEAwwnY29t +LmFuZHJvaWQubW9kdWxlcy51cGRhdGFibGVzaGFyZWRsaWJzMCAXDTIxMTAyNzEy +NTU0OFoYDzQ3NTkwOTIzMTI1NTQ4WjCBtDELMAkGA1UEBhMCVVMxEzARBgNVBAgM +CkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB0Fu +ZHJvaWQxEDAOBgNVBAsMB0FuZHJvaWQxIjAgBgkqhkiG9w0BCQEWE2FuZHJvaWRA +YW5kcm9pZC5jb20xMDAuBgNVBAMMJ2NvbS5hbmRyb2lkLm1vZHVsZXMudXBkYXRh +Ymxlc2hhcmVkbGliczCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK1C +8OSduZta1sNA/3eKcj/IU5dtOUWFSB21dKIlzOqEBOO9meCBiU5IYKGIjEpktsEH +CaIn3PZ8iqUNU30myjgugqQbdoo7GyYHj9px23s5L+DRoOyDlk6WEfLpNei74POz +wisii5MJMN3SEPVbMFhwYJnfPOOxLl1hLpkKD0I/bDKrjKnVCqpDB3YfOZrwk32h +Og1fI7G7/kCBD2KZPyjXghJMVs0ohRrl7KLFSYCGIvrUH8WUQ3iQGGmTYTJmwUMu +BshlY/xt2EIqjzU2s3R9uzPibzDfaWgzmHVEV1fmXwUEryiKSza8lPnUhaH2fNsi +SPUHYPG19qEoQueHchBNpxFFJPipTGH00XLKAQATqmCL2Dwxu02HY4mxdUKFc5TS +AKre9e7GjUv+P6RNuqMXOUmdTcN8xXy2wfIFeVa1JA9IAdRz9OlkXiB/l7GLjb0x +WEAIG0cmikrPsgKe9GT+OjKKKwhKrE/oCp+qc4Y9BnPoo1Q538BbEp0jYyYpKOVQ +7nGUbPI6Km6f+RzyzqEKB10EmUREApinEl0j05CVbf/WNl5ubRgo70MlyXdaQS2L +U6XF+HgwIOySLHL0opQgbgapZIGaOQv3/baa4R7DaJ8oVNQwSCpieLW+MzsTk3hJ +MyJAJf7iRlNcRx7NoJy5JWL9kmXiWAffYo+Dr8ldAgMBAAEwDQYJKoZIhvcNAQEL +BQADggIBAGQ5m+rrDvOQUfeOfRdfuU+XyhJ1zaOmyi1Br8ARuUrG5m3H6o8D1DyW +zmv09YgkcXt4iTSFG5WcxXtu6mA57f9KuiXaRtA4wzmcnSgUpZrhRamltv1xfo8P +h5vW9EKU67+437CuFBKlyjRLC+MD1GyMgNJwbHBqkIDUIfio+soIBVKgdANshSq7 +Cgc1dLAg7DvJkRg+WyjhBRmmregopXmfJfs73zxt2Jif5QQEZfLG27JkE7Ae06+9 +1FKvotlabdT3LMXjlX6miaJhPV8WPCmGyF2sZ8rOvI8OIKjWfWdf2S5269OnOrpg +IMRJTnXzsIDNk/nVdbvI50V0/STIKyCj+HYMjlGjyFqs9XOSoWtv7Y41bYDp+eoF +tfau5WOmVALWQ/M3sSIeBGkpzoq33wkyoqYNrlLRnA8FSNCOahKZpgAZyd7Cs9Fu +EzK1+35F+5HdxgJaK29cmiaBsx3acTUr4UZrPewsmnYTU+xUtnbOKaLniUxkf/WT +8qPhdg8n/1Hks5iWRzvKSHmFYMzx/efbz7PcB4UEyzKyaYW5mpX9xPLZ0Du6Je3X +JIk2t6WEGnMDHWS2fa1KpUfhsiRKkxNP7tMMuAwZ/2OnCiFmZ2/Tzy6bp4EFPsa6 +zXcvJSf7eAe5jJkKrWkoMoKp+SBGoCKXzoMRCAbLSEdnSpr5EZXF +-----END CERTIFICATE----- diff --git a/javatests/com/android/modules/updatablesharedlibs/apex/manifest.json b/javatests/com/android/modules/updatablesharedlibs/apex/manifest.json new file mode 100644 index 00000000..ffe9a73f --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apex/manifest.json @@ -0,0 +1,4 @@ +{ + "name": "test_com.android.modules.updatablesharedlibs", + "version": 1 +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetS/Android.bp b/javatests/com/android/modules/updatablesharedlibs/apps/targetS/Android.bp new file mode 100644 index 00000000..24c495b0 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetS/Android.bp @@ -0,0 +1,29 @@ +// 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test_helper_app { + name: "com.android.modules.updatablesharedlibs.apps.targetS", + srcs: ["UpdatableSharedLibraryTargetSTest.java"], + static_libs: [ + "androidx.test.rules", + "androidx.test.core", + "truth-prebuilt", + ], + sdk_version: "current", + target_sdk_version: "31", +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetS/AndroidManifest.xml b/javatests/com/android/modules/updatablesharedlibs/apps/targetS/AndroidManifest.xml new file mode 100644 index 00000000..e0c0ec98 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetS/AndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.modules.updatablesharedlibs.apps.targetS"> + <application> + </application> + + <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" + android:targetPackage="com.android.modules.updatablesharedlibs.apps.targetS" + ></instrumentation> +</manifest> diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetS/UpdatableSharedLibraryTargetSTest.java b/javatests/com/android/modules/updatablesharedlibs/apps/targetS/UpdatableSharedLibraryTargetSTest.java new file mode 100644 index 00000000..d881ce80 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetS/UpdatableSharedLibraryTargetSTest.java @@ -0,0 +1,77 @@ +/* + * 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 com.android.modules.updatablesharedlibs.apps.targetS; + +import static com.google.common.truth.Truth.assertThat; + +import org.junit.Test; +import org.junit.runner.RunWith; +import junit.framework.Assert; + +import com.google.common.truth.Correspondence; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; + +/** + * Tests an app targeting S. + * + * <p>One of the shared libraries included in this test claims to be in the + * BOOTCLASSPATH before T so it should be added transparently to this app. + */ +@RunWith(AndroidJUnit4.class) +public class UpdatableSharedLibraryTargetSTest { + private static String SHARED_LIB_PATH = "/apex/test_com.android.modules.updatablesharedlibs" + + "/javalib/com.android.modules.updatablesharedlibs.libs.before.t.jar"; + + private static final Context sContext = InstrumentationRegistry.getInstrumentation() + .getContext(); + + @Test + public void checkSharedLibrary() throws Exception { + String packageName = sContext.getPackageName(); + ApplicationInfo appInfo = sContext.getPackageManager().getApplicationInfo(packageName, + PackageManager.GET_SHARED_LIBRARY_FILES); + + assertThat(appInfo.sharedLibraryFiles) + .asList() + .contains(SHARED_LIB_PATH); + } + + @Test + public void callApi() throws Exception { + Object api = Class.forName("com.android.modules.updatablesharedlibs.libs.before.t.Api") + .getDeclaredConstructor() + .newInstance(); + + String actual = (String) api.getClass().getDeclaredMethod("methodBeforeT").invoke(api); + assertThat(actual).isEqualTo("Success"); + } + + @Test + public void testGetSystemSharedLibraryNames() { + String[] libraries = sContext.getPackageManager().getSystemSharedLibraryNames(); + assertThat(libraries) + .asList() + .containsAtLeast( + "com.android.modules.updatablesharedlibs.libs.before.t", + "com.android.modules.updatablesharedlibs.libs.since.t"); + } +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetT/Android.bp b/javatests/com/android/modules/updatablesharedlibs/apps/targetT/Android.bp new file mode 100644 index 00000000..70a549e5 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetT/Android.bp @@ -0,0 +1,29 @@ +// 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test_helper_app { + name: "com.android.modules.updatablesharedlibs.apps.targetT", + srcs: ["UpdatableSharedLibraryTargetTTest.java"], + static_libs: [ + "androidx.test.rules", + "androidx.test.core", + "truth-prebuilt", + ], + sdk_version: "current", + target_sdk_version: "Tiramisu", +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetT/AndroidManifest.xml b/javatests/com/android/modules/updatablesharedlibs/apps/targetT/AndroidManifest.xml new file mode 100644 index 00000000..17f52e7f --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetT/AndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.modules.updatablesharedlibs.apps.targetT"> + <application> + </application> + + <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" + android:targetPackage="com.android.modules.updatablesharedlibs.apps.targetT" + ></instrumentation> +</manifest> diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetT/UpdatableSharedLibraryTargetTTest.java b/javatests/com/android/modules/updatablesharedlibs/apps/targetT/UpdatableSharedLibraryTargetTTest.java new file mode 100644 index 00000000..20078a59 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetT/UpdatableSharedLibraryTargetTTest.java @@ -0,0 +1,66 @@ +/* + * 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 com.android.modules.updatablesharedlibs.apps.targetT; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import org.junit.Test; +import org.junit.runner.RunWith; +import junit.framework.Assert; + +import com.google.common.truth.Correspondence; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; + +/** + * Tests an app targeting T. + * + * <p>With the shared libraries included in this test, none of the shared libraries present in this + * test should be included for this app. + */ +@RunWith(AndroidJUnit4.class) +public class UpdatableSharedLibraryTargetTTest { + private static final Correspondence<String, String> CONTAINS_SUBSTRING = + Correspondence.from(String::contains, "contains"); + private static final Context sContext = InstrumentationRegistry.getInstrumentation() + .getContext(); + + @Test + public void checkHasNoSharedLibrary() throws Exception { + String packageName = sContext.getPackageName(); + ApplicationInfo appInfo = sContext.getPackageManager().getApplicationInfo(packageName, + PackageManager.GET_SHARED_LIBRARY_FILES); + + assertThat(appInfo.sharedLibraryFiles) + .asList() + .comparingElementsUsing(CONTAINS_SUBSTRING) + .doesNotContain("com.android.modules.updatablesharedlibs"); + } + + @Test + public void checkHasNoApiAccess() throws Exception { + assertThrows( + ClassNotFoundException.class, + () -> Class.forName("com.android.modules.updatablesharedlibs.libs.before.t.Api") + ); + } +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/Android.bp b/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/Android.bp new file mode 100644 index 00000000..890af116 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/Android.bp @@ -0,0 +1,33 @@ +/* + * 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +android_test_helper_app { + name: "com.android.modules.updatablesharedlibs.apps.targetTWithLib", + srcs: ["UpdatableSharedLibraryTargetTWithLibraryTest.java"], + libs: [ + "com.android.modules.updatablesharedlibs.libs.since.t", + ], + static_libs: [ + "androidx.test.rules", + "androidx.test.core", + ], + sdk_version: "current", + target_sdk_version: "Tiramisu", +} diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/AndroidManifest.xml b/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/AndroidManifest.xml new file mode 100644 index 00000000..f510ca6d --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/AndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.modules.updatablesharedlibs.apps.targetTWithLib"> + <application> + </application> + + <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" + android:targetPackage="com.android.modules.updatablesharedlibs.apps.targetTWithLib" + ></instrumentation> +</manifest> diff --git a/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/UpdatableSharedLibraryTargetTWithLibraryTest.java b/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/UpdatableSharedLibraryTargetTWithLibraryTest.java new file mode 100644 index 00000000..425ed990 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/apps/targetTWithLib/UpdatableSharedLibraryTargetTWithLibraryTest.java @@ -0,0 +1,59 @@ +/* + * 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 com.android.modules.updatablesharedlibs.apps.targetTWithLib; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import android.content.Context; +import android.content.pm.PackageManager; +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; + +/** + * Tests an app targeting T which also includes a shared library that is part of the BOOTCLASSPATH + * from T. + * + * <p>This means the shared library should not be explicitly in the shared libraries in order + * to avoid duplication of the BCP. + */ +@RunWith(AndroidJUnit4.class) +public class UpdatableSharedLibraryTargetTWithLibraryTest { + // private static final Context sContext = InstrumentationRegistry.getInstrumentation() + // .getContext(); + + @Test + public void checkHasNoSharedLibrary() throws Exception { + // TODO(b/205261027): not possible to test yet + + // This is the code we'd like to run. But because before API finalisation PM + // will see the shared library as + // having "on-bcp-since 9001" this means that it never considers that shared + // library to be in the BCP. + + // String packageName = getContext().getPackageName(); + // ApplicationInfo appInfo = getPackageManager().getApplicationInfo(packageName, + // PackageManager.GET_SHARED_LIBRARY_FILES); + // Log.d(TAG, "checkHasNoSharedLibrary in " + appInfo.sharedLibraryFiles.length + // + " libraries"); + // for (String path : appInfo.sharedLibraryFiles) { + // if (path.contains("com.android.modules.updatablesharedlibs")) { + // Assert.fail("Unexpectedly found a shared library: " + path); + // } + // } + } +} diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/Android.bp b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/Android.bp new file mode 100644 index 00000000..8f0565ec --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/Android.bp @@ -0,0 +1,38 @@ +/* + * 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +java_sdk_library { + name: "com.android.modules.updatablesharedlibs.libs.before.t", + srcs: [ + "Api.java" + ], + permitted_packages: [ "com.android.modules.updatablesharedlibs.libs"], + apex_available: [ "test_com.android.modules.updatablesharedlibs" ], + min_sdk_version: "Tiramisu", + sdk_version: "current", + on_bootclasspath_before: "Tiramisu", + + // Output the api files to a special directory that won't trigger an API + // review as it is a test only API. + api_dir: "api_dir", + // Testing only. + no_dist: true, + unsafe_ignore_missing_latest_api: true, +} diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/Api.java b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/Api.java new file mode 100644 index 00000000..a01d0f00 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/Api.java @@ -0,0 +1,27 @@ +/* + * 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 com.android.modules.updatablesharedlibs.libs.before.t; + +/** + * Basic class to pretend we have one API. + */ +public class Api { + + public String methodBeforeT() { + return "Success"; + } +} diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/current.txt new file mode 100644 index 00000000..2b3339c1 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/current.txt @@ -0,0 +1,10 @@ +// Signature format: 2.0 +package com.android.modules.updatablesharedlibs.libs.before.t { + + public class Api { + ctor public Api(); + method public String methodBeforeT(); + } + +} + diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/module-lib-current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/module-lib-current.txt new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/module-lib-current.txt diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/module-lib-removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/module-lib-removed.txt new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/module-lib-removed.txt diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/removed.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/system-current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/system-current.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/system-current.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/system-removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/system-removed.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/system-removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/test-current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/test-current.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/test-current.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/test-removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/test-removed.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/before/t/api_dir/test-removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/Android.bp b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/Android.bp new file mode 100644 index 00000000..553dca6d --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/Android.bp @@ -0,0 +1,38 @@ +/* + * 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 { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +java_sdk_library { + name: "com.android.modules.updatablesharedlibs.libs.since.t", + srcs: [ + "Api.java" + ], + permitted_packages: [ "com.android.modules.updatablesharedlibs.libs.since"], + apex_available: [ "test_com.android.modules.updatablesharedlibs" ], + min_sdk_version: "Tiramisu", + sdk_version: "current", + on_bootclasspath_since: "Tiramisu", + + // Output the api files to a special directory that won't trigger an API + // review as it is a test only API. + api_dir: "api_dir", + // Testing only. + no_dist: true, + unsafe_ignore_missing_latest_api: true, +} diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/Api.java b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/Api.java new file mode 100644 index 00000000..53dde680 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/Api.java @@ -0,0 +1,27 @@ +/* + * 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 com.android.modules.updatablesharedlibs.libs.since.t; + +/** + * Basic class to pretend we have one API. + */ +public class Api { + + public String methodSinceT() { + return "Success"; + } +} diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/current.txt new file mode 100644 index 00000000..c459c1a3 --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/current.txt @@ -0,0 +1,10 @@ +// Signature format: 2.0 +package com.android.modules.updatablesharedlibs.libs.since.t { + + public class Api { + ctor public Api(); + method public String methodSinceT(); + } + +} + diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/module-lib-current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/module-lib-current.txt new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/module-lib-current.txt diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/module-lib-removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/module-lib-removed.txt new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/module-lib-removed.txt diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/removed.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/system-current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/system-current.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/system-current.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/system-removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/system-removed.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/system-removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/test-current.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/test-current.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/test-current.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/test-removed.txt b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/test-removed.txt new file mode 100644 index 00000000..d802177e --- /dev/null +++ b/javatests/com/android/modules/updatablesharedlibs/libs/since/t/api_dir/test-removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/proto/sdk.proto b/proto/sdk.proto index 4fddf8df..850b31b4 100644 --- a/proto/sdk.proto +++ b/proto/sdk.proto @@ -38,6 +38,11 @@ enum SdkModule { // S modules ART = 8; SCHEDULING = 9; + + // T modules + AD_SERVICES = 11; + APPSEARCH = 12; + ON_DEVICE_PERSONALIZATION = 13; } // A single extension version. diff --git a/sdk/ModuleDefaults.bp b/sdk/ModuleDefaults.bp index 057d3c65..d9e3af53 100644 --- a/sdk/ModuleDefaults.bp +++ b/sdk/ModuleDefaults.bp @@ -102,7 +102,6 @@ java_defaults { // Hide impl library and stub sources impl_library_visibility: [ ":__pkg__", - "//frameworks/base", // For framework-all "//frameworks/base/api", // For framework-all ], stubs_source_visibility: ["//visibility:private"], diff --git a/tools/Android.bp b/tools/Android.bp index 642c2f8a..1bb33fa9 100644 --- a/tools/Android.bp +++ b/tools/Android.bp @@ -65,9 +65,12 @@ prebuilt_etc { "//art:__subpackages__", "//external/conscrypt:__subpackages__", "//frameworks/av/apex:__subpackages__", + "//packages/modules/AdServices:__subpackages__", + "//packages/modules/AppSearch:__subpackages__", "//packages/modules/Connectivity:__subpackages__", "//packages/modules/IPsec/apex:__subpackages__", "//packages/modules/Permission:__subpackages__", + "//packages/modules/OnDevicePersonalization:__subpackages__", "//packages/modules/Scheduling:__subpackages__", "//packages/modules/SdkExtensions:__subpackages__", "//packages/modules/StatsD:__subpackages__", |