From 3927818d5ea47d0a39d2898825878bbfc6a963a7 Mon Sep 17 00:00:00 2001 From: Adithya R Date: Sun, 23 Apr 2023 08:59:21 +0530 Subject: [PATCH] Restructure to vendor/xiaomi/camera Import from device/xiaomi/lisa-miuicamera: commit 33f736aa61e224998d5c121f6c38c944e49fea8d Author: Adithya R Date: Fri Apr 21 16:54:19 2023 +0530 lisa-miuicamera: Update to V14.0.3.0.TKOMIXM commit 569341615b88bf864c135356a11a5338e058c9d4 Author: Adithya R Date: Tue Jan 31 10:00:48 2023 +0530 lisa-miuicamera: Label libSNPE and deps as sphal We already have these in public.libraries.txt, just needs to be labeled as sphal so that Miui Camera can load it for clone mode. 01-30 23:10:20.988 5067 5067 I auditd : type=1400 audit(0.0:2944): avc: denied { read } for comm="CameraSetup" name="libSNPE.so" dev="dm-4" ino=2242 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=0 app=com.android.camera 01-30 23:10:20.988 5067 5067 W CameraSetup: type=1400 audit(0.0:2944): avc: denied { read } for name="libSNPE.so" dev="dm-4" ino=2242 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=0 app=com.android.camera 01-30 23:10:20.992 5067 5121 E CloneSDK: Load native library failed: java.lang.UnsatisfiedLinkError: dlopen failed: library "libSNPE.so" not found: needed by /data/user/0/com.android.camera/app_qigsaw/5.0.0.0/movielens/31.0.0@31/nativeLib/arm64-v8a/libfenshen_snpe.so in namespace classloader-namespace-shared commit d1ad3e40dd5c00fb97bb12d02668978698339599 Author: Adithya R Date: Mon Jan 23 22:21:23 2023 +0530 lisa-miuicamera: Initial commit --- Android.bp | 2 +- Android.mk | 15 +++- BoardConfigVendor.mk | 2 +- README.md | 27 +++++++ camera-vendor.mk | 16 +++++ .../default-permissions-miuicamera.xml | 37 ++++++++++ ...miuicamera-hiddenapi-package-whitelist.xml | 4 ++ .../privapp-permissions-miuicamera.xml | 12 ++++ extract-files.sh | 72 +++++++++++++++++++ lisa-miuicamera-vendor.mk | 16 ----- miuicamera.mk | 23 ++++++ proprietary-files.txt | 7 ++ sepolicy/vendor/file_contexts | 8 +++ sepolicy/vendor/hal_camera_default.te | 1 + sepolicy/vendor/platform_app.te | 7 ++ setup-makefiles.sh | 52 ++++++++++++++ 16 files changed, 281 insertions(+), 20 deletions(-) create mode 100644 README.md create mode 100644 camera-vendor.mk create mode 100644 configs/permissions/default-permissions-miuicamera.xml create mode 100644 configs/permissions/miuicamera-hiddenapi-package-whitelist.xml create mode 100644 configs/permissions/privapp-permissions-miuicamera.xml create mode 100755 extract-files.sh delete mode 100644 lisa-miuicamera-vendor.mk create mode 100644 miuicamera.mk create mode 100644 proprietary-files.txt create mode 100644 sepolicy/vendor/file_contexts create mode 100644 sepolicy/vendor/hal_camera_default.te create mode 100644 sepolicy/vendor/platform_app.te create mode 100755 setup-makefiles.sh diff --git a/Android.bp b/Android.bp index 9e493df..feb087a 100644 --- a/Android.bp +++ b/Android.bp @@ -1,6 +1,6 @@ // Automatically generated file. DO NOT MODIFY // -// This file is generated by device/xiaomi/lisa-miuicamera/setup-makefiles.sh +// This file is generated by vendor/xiaomi/camera/setup-makefiles.sh soong_namespace { } diff --git a/Android.mk b/Android.mk index a9e7e54..3abd1d8 100644 --- a/Android.mk +++ b/Android.mk @@ -1,9 +1,20 @@ # Automatically generated file. DO NOT MODIFY # -# This file is generated by device/xiaomi/lisa-miuicamera/setup-makefiles.sh +# This file is generated by vendor/xiaomi/camera/setup-makefiles.sh LOCAL_PATH := $(call my-dir) -ifeq ($(TARGET_DEVICE),lisa-miuicamera) +ifneq ($(filter lisa,$(TARGET_DEVICE)),) + +CAMERA_LIBRARIES := libcamera_algoup_jni.xiaomi.so libcamera_mianode_jni.xiaomi.so + +CAMERA_SYMLINKS := $(addprefix $(TARGET_OUT_APPS_PRIVILEGED)/MiuiCamera/lib/arm64/,$(notdir $(CAMERA_LIBRARIES))) +$(CAMERA_SYMLINKS): $(LOCAL_INSTALLED_MODULE) + @echo "MiuiCamera lib link: $@" + @mkdir -p $(dir $@) + @rm -rf $@ + $(hide) ln -sf /system/lib64/$(notdir $@) $@ + +ALL_DEFAULT_INSTALLED_MODULES += $(CAMERA_SYMLINKS) endif diff --git a/BoardConfigVendor.mk b/BoardConfigVendor.mk index 75f98f5..59d0ce1 100644 --- a/BoardConfigVendor.mk +++ b/BoardConfigVendor.mk @@ -1,4 +1,4 @@ # Automatically generated file. DO NOT MODIFY # -# This file is generated by device/xiaomi/lisa-miuicamera/setup-makefiles.sh +# This file is generated by vendor/xiaomi/camera/setup-makefiles.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..0098a26 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# proprietary_vendor_xiaomi_camera + +Prebuilt stock MIUI Camera to include in custom ROM builds. + +Extracted from lisa MIUI package (refer proprietary-files.txt for version). + +### Supported devices +* Xiaomi 11 Lite NE (lisa) + +### How to use? + +1. Clone this repo to `vendor/xiaomi/camera` + +2. Inherit it from `device.mk` in device tree: + +``` +# Camera +$(call inherit-product-if-exists, vendor/xiaomi/camera/miuicamera.mk) +``` + +3. Set `ro.product.mod_device` according to stock, and `ro.miui.notch=1` if the device has a display cutout, for example: + +``` +PRODUCT_SYSTEM_PROPERTIES += \ + ro.miui.notch=1 \ + ro.product.mod_device=lisa +``` diff --git a/camera-vendor.mk b/camera-vendor.mk new file mode 100644 index 0000000..d1839f6 --- /dev/null +++ b/camera-vendor.mk @@ -0,0 +1,16 @@ +# Automatically generated file. DO NOT MODIFY +# +# This file is generated by vendor/xiaomi/camera/setup-makefiles.sh + +PRODUCT_SOONG_NAMESPACES += \ + vendor/xiaomi/camera + +PRODUCT_COPY_FILES += \ + vendor/xiaomi/camera/proprietary/system/lib64/libcamera_algoup_jni.xiaomi.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libcamera_algoup_jni.xiaomi.so \ + vendor/xiaomi/camera/proprietary/system/lib64/libcamera_mianode_jni.xiaomi.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libcamera_mianode_jni.xiaomi.so \ + vendor/xiaomi/camera/proprietary/system/lib64/libgui-xiaomi.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libgui-xiaomi.so \ + vendor/xiaomi/camera/proprietary/system/lib64/libmicampostproc_client.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libmicampostproc_client.so \ + vendor/xiaomi/camera/proprietary/system/lib64/vendor.xiaomi.hardware.campostproc@1.0.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/vendor.xiaomi.hardware.campostproc@1.0.so + +PRODUCT_PACKAGES += \ + MiuiCamera diff --git a/configs/permissions/default-permissions-miuicamera.xml b/configs/permissions/default-permissions-miuicamera.xml new file mode 100644 index 0000000..fa09489 --- /dev/null +++ b/configs/permissions/default-permissions-miuicamera.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/permissions/miuicamera-hiddenapi-package-whitelist.xml b/configs/permissions/miuicamera-hiddenapi-package-whitelist.xml new file mode 100644 index 0000000..aa1df44 --- /dev/null +++ b/configs/permissions/miuicamera-hiddenapi-package-whitelist.xml @@ -0,0 +1,4 @@ + + + + diff --git a/configs/permissions/privapp-permissions-miuicamera.xml b/configs/permissions/privapp-permissions-miuicamera.xml new file mode 100644 index 0000000..eaf600b --- /dev/null +++ b/configs/permissions/privapp-permissions-miuicamera.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/extract-files.sh b/extract-files.sh new file mode 100755 index 0000000..c59762d --- /dev/null +++ b/extract-files.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# SPDX-License-Identifier: Apache-2.0 +# + +set -e + +DEVICE=camera +VENDOR=xiaomi + +# Load extract_utils and do some sanity checks +MY_DIR="${BASH_SOURCE%/*}" +if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi + +ANDROID_ROOT="${MY_DIR}/../../.." + +HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh" +if [ ! -f "${HELPER}" ]; then + echo "Unable to find helper script at ${HELPER}" + exit 1 +fi +source "${HELPER}" + +# Default to sanitizing the vendor folder before extraction +CLEAN_VENDOR=true + +KANG= +SECTION= + +while [ "${#}" -gt 0 ]; do + case "${1}" in + -n | --no-cleanup ) + CLEAN_VENDOR=false + ;; + -k | --kang ) + KANG="--kang" + ;; + -s | --section ) + SECTION="${2}"; shift + CLEAN_VENDOR=false + ;; + * ) + SRC="${1}" + ;; + esac + shift +done + +if [ -z "${SRC}" ]; then + SRC="adb" +fi + +function blob_fixup() { + case "${1}" in + system/lib64/libgui-xiaomi.so) + patchelf --set-soname libgui-xiaomi.so "${2}" + ;; + system/lib64/libcamera_algoup_jni.xiaomi.so|system/lib64/libcamera_mianode_jni.xiaomi.so) + patchelf --replace-needed libgui.so libgui-xiaomi.so "${2}" + ;; + esac +} + +# Initialize the helper +setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}" + +extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}" + +"${MY_DIR}/setup-makefiles.sh" diff --git a/lisa-miuicamera-vendor.mk b/lisa-miuicamera-vendor.mk deleted file mode 100644 index 835ddee..0000000 --- a/lisa-miuicamera-vendor.mk +++ /dev/null @@ -1,16 +0,0 @@ -# Automatically generated file. DO NOT MODIFY -# -# This file is generated by device/xiaomi/lisa-miuicamera/setup-makefiles.sh - -PRODUCT_SOONG_NAMESPACES += \ - vendor/xiaomi/lisa-miuicamera - -PRODUCT_COPY_FILES += \ - vendor/xiaomi/lisa-miuicamera/proprietary/system/lib64/libcamera_algoup_jni.xiaomi.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libcamera_algoup_jni.xiaomi.so \ - vendor/xiaomi/lisa-miuicamera/proprietary/system/lib64/libcamera_mianode_jni.xiaomi.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libcamera_mianode_jni.xiaomi.so \ - vendor/xiaomi/lisa-miuicamera/proprietary/system/lib64/libgui-xiaomi.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libgui-xiaomi.so \ - vendor/xiaomi/lisa-miuicamera/proprietary/system/lib64/libmicampostproc_client.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libmicampostproc_client.so \ - vendor/xiaomi/lisa-miuicamera/proprietary/system/lib64/vendor.xiaomi.hardware.campostproc@1.0.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/vendor.xiaomi.hardware.campostproc@1.0.so - -PRODUCT_PACKAGES += \ - MiuiCamera diff --git a/miuicamera.mk b/miuicamera.mk new file mode 100644 index 0000000..310fac6 --- /dev/null +++ b/miuicamera.mk @@ -0,0 +1,23 @@ +# +# Copyright (C) 2023 Paranoid Android +# +# SPDX-License-Identifier: Apache-2.0 +# + +# Permissions +PRODUCT_COPY_FILES += \ + vendor/xiaomi/camera/configs/permissions/default-permissions-miuicamera.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/default-permissions/default-permissions-miuicamera.xml \ + vendor/xiaomi/camera/configs/permissions/miuicamera-hiddenapi-package-whitelist.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/miuicamera-hiddenapi-package-whitelist.xml \ + vendor/xiaomi/camera/configs/permissions/privapp-permissions-miuicamera.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-miuicamera.xml + +# Properties +PRODUCT_SYSTEM_PROPERTIES += \ + persist.vendor.camera.privapp.list=org.codeaurora.snapcam,com.android.camera \ + ro.com.google.lens.oem_camera_package=com.android.camera \ + vendor.camera.aux.packagelist=org.codeaurora.snapcam,com.android.camera + +# Sepolicy +BOARD_VENDOR_SEPOLICY_DIRS += \ + vendor/xiaomi/camera/sepolicy/vendor + +$(call inherit-product, vendor/xiaomi/camera/camera-vendor.mk) diff --git a/proprietary-files.txt b/proprietary-files.txt new file mode 100644 index 0000000..cf73a51 --- /dev/null +++ b/proprietary-files.txt @@ -0,0 +1,7 @@ +# From lisa MIUI V14.0.3.0.TKOMIXM package +-product/priv-app/MiuiCamera/MiuiCamera.apk:system/priv-app/MiuiCamera/MiuiCamera.apk;OVERRIDES=Camera,Camera2,GoogleCameraGo +system/lib64/libcamera_algoup_jni.xiaomi.so +system/lib64/libcamera_mianode_jni.xiaomi.so +system/lib64/libgui.so:system/lib64/libgui-xiaomi.so +system/lib64/libmicampostproc_client.so +system/lib64/vendor.xiaomi.hardware.campostproc@1.0.so diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts new file mode 100644 index 0000000..8b7b95f --- /dev/null +++ b/sepolicy/vendor/file_contexts @@ -0,0 +1,8 @@ +/vendor/lib(64)?/libSNPE\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/libc\+\+_shared\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/libhta\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/libsnpe_dsp_domains_v2\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/libsnpe_dsp_domains_v3\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/rfsa/adsp/libsnpe_htp_v65_skel\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/rfsa/adsp/libsnpe_htp_v66_skel\.so u:object_r:same_process_hal_file:s0 +/vendor/lib(64)?/rfsa/adsp/libsnpe_htp_v68_skel\.so u:object_r:same_process_hal_file:s0 diff --git a/sepolicy/vendor/hal_camera_default.te b/sepolicy/vendor/hal_camera_default.te new file mode 100644 index 0000000..a112595 --- /dev/null +++ b/sepolicy/vendor/hal_camera_default.te @@ -0,0 +1 @@ +binder_call(hal_camera_default, platform_app) diff --git a/sepolicy/vendor/platform_app.te b/sepolicy/vendor/platform_app.te new file mode 100644 index 0000000..eb1ccf8 --- /dev/null +++ b/sepolicy/vendor/platform_app.te @@ -0,0 +1,7 @@ +allow platform_app app_data_file:file execute; +allow platform_app hal_xiaomi_camera_hwservice:hwservice_manager find; + +binder_call(platform_app, hal_camera_default) + +get_prop(platform_app, vendor_camera_prop) +get_prop(platform_app, vendor_fp_prop) diff --git a/setup-makefiles.sh b/setup-makefiles.sh new file mode 100755 index 0000000..dbc34e6 --- /dev/null +++ b/setup-makefiles.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# +# Copyright (C) 2016 The CyanogenMod Project +# Copyright (C) 2017-2020 The LineageOS Project +# +# SPDX-License-Identifier: Apache-2.0 +# + +set -e + +DEVICE=camera +DEVICE_COMMON=camera +VENDOR=xiaomi + +# Load extract_utils and do some sanity checks +MY_DIR="${BASH_SOURCE%/*}" +if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi + +ANDROID_ROOT="${MY_DIR}/../../.." + +HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh" +if [ ! -f "${HELPER}" ]; then + echo "Unable to find helper script at ${HELPER}" + exit 1 +fi +source "${HELPER}" + +# Initialize the helper +setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" true + +# Warning headers and guards +write_headers "lisa" +sed -i 's|device/|vendor/|g' "$ANDROIDBP" "$ANDROIDMK" "$BOARDMK" "$PRODUCTMK" + +cat << 'EOF' >> "$ANDROIDMK" +CAMERA_LIBRARIES := libcamera_algoup_jni.xiaomi.so libcamera_mianode_jni.xiaomi.so + +CAMERA_SYMLINKS := $(addprefix $(TARGET_OUT_APPS_PRIVILEGED)/MiuiCamera/lib/arm64/,$(notdir $(CAMERA_LIBRARIES))) +$(CAMERA_SYMLINKS): $(LOCAL_INSTALLED_MODULE) + @echo "MiuiCamera lib link: $@" + @mkdir -p $(dir $@) + @rm -rf $@ + $(hide) ln -sf /system/lib64/$(notdir $@) $@ + +ALL_DEFAULT_INSTALLED_MODULES += $(CAMERA_SYMLINKS) + +EOF + +write_makefiles "${MY_DIR}/proprietary-files.txt" true + +# Finish +write_footers