AOSPAlliance / android-prepare-vendor

Set of scripts to automate AOSP compatible vendor blobs generation from factory images
25 stars 8 forks source link

Shared libraries missing dependencies #51

Open danielfullmer opened 3 years ago

danielfullmer commented 3 years ago

Some shared libraries are missing dependencies that are specified as DT_NEEDED entries from the dynamic section of the .so ELF files. (Following up on https://github.com/AOSPAlliance/android-prepare-vendor/pull/47#issuecomment-753533084)

I've used the following bash script to detect when this is the case: https://gist.github.com/danielfullmer/a582fa467a681f69a27ae88b6168f95d It should detect when a shared library depends on another shared library, which is in the stock image, but missing from the image we build.

I've run this script against all devices (excluding <= Pixel 2) on Android 11, using the naked configuration with the latest git tag from AOSP:

# crosshatch (Pixel 3 XL)
vendor/lib/libprotobuf-cpp-full.so is needed by vendor/lib64/libcamxncs.so

# blueline (Pixel 3)
vendor/lib/libprotobuf-cpp-full.so is needed by vendor/lib64/libcamxncs.so

# bonito (Pixel 3a XL)
vendor/lib64/libprotobuf-cpp-full.so is needed by vendor/lib64/camera/components/com.qti.camx.chiiqutils.so

# sargo (Pixel 3a)
vendor/lib64/libprotobuf-cpp-full.so is needed by vendor/lib64/camera/components/com.qti.camx.chiiqutils.so

# coral (Pixel 4 XL)
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvideocodec.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvt.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvtextutils.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvtutils.so
system_ext/lib/vendor.qti.hardware.tui_comm@1.0.so is needed by system_ext/lib/libsecureui_svcsock_system.so
system_ext/lib/vendor.qti.imsrtpservice@3.0.so is needed by system_ext/lib/lib-imsvt.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvideocodec.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvt.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvtextutils.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvtutils.so
system_ext/lib64/vendor.qti.hardware.tui_comm@1.0.so is needed by system_ext/lib64/libsecureui_svcsock_system.so
system_ext/lib64/vendor.qti.imsrtpservice@3.0.so is needed by system_ext/lib64/lib-imsvt.so
vendor/lib/android.hardware.sensors@2.0-ScopedWakelock.so is needed by vendor/lib/sensors.ssc.so
vendor/lib/libgooglecamerahal.so is needed by vendor/lib/camera/capture_sessions/lib_multicam_dualfov_capture_session.so
vendor/lib/libgooglecamerahalutils.so is needed by vendor/lib/camera/capture_sessions/lib_multicam_dualfov_capture_session.so
vendor/lib/libprotobuf-cpp-full.so is needed by vendor/lib/libcamera_nn_stub.so

# flame (Pixel 4)
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvideocodec.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvt.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvtextutils.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvtutils.so
system_ext/lib/vendor.qti.hardware.tui_comm@1.0.so is needed by system_ext/lib/libsecureui_svcsock_system.so
system_ext/lib/vendor.qti.imsrtpservice@3.0.so is needed by system_ext/lib/lib-imsvt.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvideocodec.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvt.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvtextutils.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvtutils.so
system_ext/lib64/vendor.qti.hardware.tui_comm@1.0.so is needed by system_ext/lib64/libsecureui_svcsock_system.so
system_ext/lib64/vendor.qti.imsrtpservice@3.0.so is needed by system_ext/lib64/lib-imsvt.so
vendor/lib/android.hardware.sensors@2.0-ScopedWakelock.so is needed by vendor/lib/sensors.ssc.so
vendor/lib/libgooglecamerahal.so is needed by vendor/lib/camera/capture_sessions/lib_multicam_dualfov_capture_session.so
vendor/lib/libgooglecamerahalutils.so is needed by vendor/lib/camera/capture_sessions/lib_multicam_dualfov_capture_session.so
vendor/lib/libprotobuf-cpp-full.so is needed by vendor/lib/libcamera_nn_stub.so

# sunfish (Pixel 4a)
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvideocodec.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvt.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvtextutils.so
system_ext/lib/libdiag_system.so is needed by system_ext/lib/lib-imsvtutils.so
system_ext/lib/vendor.qti.hardware.tui_comm@1.0.so is needed by system_ext/lib/libsecureui_svcsock_system.so
system_ext/lib/vendor.qti.imsrtpservice@3.0.so is needed by system_ext/lib/lib-imsvt.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvideocodec.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvt.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvtextutils.so
system_ext/lib64/libdiag_system.so is needed by system_ext/lib64/lib-imsvtutils.so
system_ext/lib64/vendor.display.config@1.2.so is needed by system_ext/lib64/vendor.display.config@1.3.so
system_ext/lib64/vendor.display.config@1.2.so is needed by system_ext/lib64/vendor.display.config@1.4.so
system_ext/lib64/vendor.display.config@1.2.so is needed by system_ext/lib64/vendor.display.config@1.5.so
system_ext/lib64/vendor.display.config@1.2.so is needed by system_ext/lib64/vendor.display.config@1.6.so
system_ext/lib64/vendor.display.config@1.2.so is needed by system_ext/lib64/vendor.display.config@1.7.so
system_ext/lib64/vendor.display.config@1.2.so is needed by system_ext/lib64/vendor.display.config@1.8.so
system_ext/lib64/vendor.qti.hardware.tui_comm@1.0.so is needed by system_ext/lib64/libsecureui_svcsock_system.so
system_ext/lib64/vendor.qti.imsrtpservice@3.0.so is needed by system_ext/lib64/lib-imsvt.so
chirayudesai commented 3 years ago

libprotobuf-cpp-full.so is available in AOSP.

vendor.display.config is not avaiable in AOSP, but it's open source and available in the CAF repositories.