diff --git a/common/Android.bp b/common/Android.bp index 12777b7..b1a220a 100644 --- a/common/Android.bp +++ b/common/Android.bp @@ -9,7 +9,7 @@ android_app_import { name: "MiuiCamera", owner: "xiaomi", apk: "proprietary/system/priv-app/MiuiCamera/MiuiCamera.apk", - overrides: ["Snap", "GoogleCameraGo", "GrapheneCamera", "Camera", "Aperture"], + overrides: ["GrapheneCamera", "Camera2", "Aperture"], certificate: "platform", dex_preopt: { enabled: false, diff --git a/common/common-vendor.mk b/common/common-vendor.mk index c08dca8..1f80171 100644 --- a/common/common-vendor.mk +++ b/common/common-vendor.mk @@ -33,5 +33,11 @@ PRODUCT_COPY_FILES += \ vendor/xiaomi/haydn-miuicamera/common/proprietary/vendor/lib64/vendor.qti.hardware.camera.device@1.0.so:$(TARGET_COPY_OUT_VENDOR)/lib64/vendor.qti.hardware.camera.device@1.0.so \ vendor/xiaomi/haydn-miuicamera/common/proprietary/vendor/lib64/vendor.qti.hardware.camera.device@3.5.so:$(TARGET_COPY_OUT_VENDOR)/lib64/vendor.qti.hardware.camera.device@3.5.so +TARGET_USE_PREBUILD_CAMERA_SERVICE ?= false +ifeq ($(TARGET_USE_PREBUILD_CAMERA_SERVİCE),true) +PRODUCT_COPY_FILES += \ + vendor/xiaomi/haydn-miuicamera/common/proprietary/system/lib64/libcameraservice.so:$(TARGET_COPY_OUT_SYSTEM)/lib64/libcameraservice.so +endif + PRODUCT_PACKAGES += \ MiuiCamera diff --git a/common/proprietary/system/lib64/libcameraservice.so b/common/proprietary/system/lib64/libcameraservice.so new file mode 100644 index 0000000..733ecc4 Binary files /dev/null and b/common/proprietary/system/lib64/libcameraservice.so differ diff --git a/extract-files.sh b/extract-files.sh old mode 100755 new mode 100644 diff --git a/init/init.miuicamera.rc b/init/init.miuicamera.rc new file mode 100644 index 0000000..45787e8 --- /dev/null +++ b/init/init.miuicamera.rc @@ -0,0 +1,18 @@ +# +# Copyright (C) 2021 The LineageOS Project +# +# SPDX-License-Identifier: Apache-2.0 +# + +# Miui camera +on boot && property:ro.boot.hwc=CN + setprop ro.product.mod_device "haydn" + +on boot && property:ro.boot.hwc=CN && property:ro.boot.hardware.sku=haydnpro + setprop ro.product.mod_device "haydn" + +on boot && property:ro.boot.hwc=GL + setprop ro.product.mod_device "haydn_global" + +on boot && property:ro.boot.hwc=IN + setprop ro.product.mod_device "haydn_in_global" diff --git a/products/board.mk b/products/board.mk index c8886a8..7e9d0c8 100644 --- a/products/board.mk +++ b/products/board.mk @@ -14,6 +14,8 @@ # limitations under the License. # +SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += vendor/xiaomi/haydn-miuicamera/sepolicy/private +SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS += vendor/xiaomi/haydn-miuicamera/sepolicy/public BOARD_VENDOR_SEPOLICY_DIRS += vendor/xiaomi/haydn-miuicamera/sepolicy/vendor include vendor/xiaomi/haydn-miuicamera/common/BoardConfigVendor.mk diff --git a/products/miuicamera.mk b/products/miuicamera.mk index 937db12..0959cd1 100644 --- a/products/miuicamera.mk +++ b/products/miuicamera.mk @@ -23,16 +23,26 @@ PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \ vendor/xiaomi/haydn-miuicamera/configs/sysconfig/miuicamera-hiddenapi-package-whitelist.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/miuicamera-hiddenapi-package-whitelist.xml +# Miui Camera init rc file +PRODUCT_COPY_FILES += \ + vendor/xiaomi/haydn-miuicamera/init/init.miuicamera.rc:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/init/init.miuicamera.rc + # Props PRODUCT_PRODUCT_PROPERTIES += \ ro.com.google.lens.oem_camera_package=com.android.camera PRODUCT_SYSTEM_PROPERTIES += \ - persist.vendor.camera.privapp.list=com.android.camera \ - vendor.camera.aux.packagelist=com.android.camera,org.pixelexperience.faceunlock + vendor.camera.aux.packagelist=com.android.camera,org.pixelexperience.faceunlock \ + persist.vendor.camera.privapp.list=com.android.camera + +PRODUCT_VENDOR_PROPERTIES += \ + ro.hardware.camera=xiaomi PRODUCT_PACKAGES += \ DisableCamera2 \ - DisableMiuiCamera + DisableMiuiCamera \ + MiuiCameraOverlayLos \ + MiuiCameraOverlayAosp + $(call inherit-product, vendor/xiaomi/haydn-miuicamera/common/common-vendor.mk) diff --git a/proprietary-files.txt b/proprietary-files.txt index 01e5f6c..0fc62d3 100644 --- a/proprietary-files.txt +++ b/proprietary-files.txt @@ -1,6 +1,6 @@ # All unpinned blobs below are extracted from miui_HAYDNGlobal_V13.0.1.0.SKKMIXM --system/priv-app/MiuiCamera/MiuiCamera.apk;OVERRIDES=Snap,GoogleCameraGo +-system/priv-app/MiuiCamera/MiuiCamera.apk;OVERRIDES=GrapheneCamera,Camera2,Aperture system/lib64/android.hardware.camera.common@1.0.so system/lib64/libcamera_algoup_jni.xiaomi.so system/lib64/libcamera_mianode_jni.xiaomi.so diff --git a/rro_overlay/MiuiCameraOverlayAosp/Android.bp b/rro_overlay/MiuiCameraOverlayAosp/Android.bp new file mode 100644 index 0000000..a70a631 --- /dev/null +++ b/rro_overlay/MiuiCameraOverlayAosp/Android.bp @@ -0,0 +1,4 @@ +runtime_resource_overlay { + name: "MiuiCameraOverlayAosp", + product_specific: true, +} diff --git a/rro_overlay/MiuiCameraOverlayAosp/AndroidManifest.xml b/rro_overlay/MiuiCameraOverlayAosp/AndroidManifest.xml new file mode 100644 index 0000000..50663be --- /dev/null +++ b/rro_overlay/MiuiCameraOverlayAosp/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + diff --git a/rro_overlay/MiuiCameraOverlayAosp/res/values/config.xml b/rro_overlay/MiuiCameraOverlayAosp/res/values/config.xml new file mode 100644 index 0000000..ff6ac47 --- /dev/null +++ b/rro_overlay/MiuiCameraOverlayAosp/res/values/config.xml @@ -0,0 +1,13 @@ + + + + + com.android.camera + org.lineageos.aperture + org.lineageos.aperture.dev + com.crdroid.faceunlock + org.pixelexperience.faceunlock + + diff --git a/rro_overlay/MiuiCameraOverlayLos/Android.bp b/rro_overlay/MiuiCameraOverlayLos/Android.bp new file mode 100644 index 0000000..cf6721d --- /dev/null +++ b/rro_overlay/MiuiCameraOverlayLos/Android.bp @@ -0,0 +1,4 @@ +runtime_resource_overlay { + name: "MiuiCameraOverlayLos", + product_specific: true, +} diff --git a/rro_overlay/MiuiCameraOverlayLos/AndroidManifest.xml b/rro_overlay/MiuiCameraOverlayLos/AndroidManifest.xml new file mode 100644 index 0000000..f6650d6 --- /dev/null +++ b/rro_overlay/MiuiCameraOverlayLos/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + diff --git a/rro_overlay/MiuiCameraOverlayLos/res/values/config.xml b/rro_overlay/MiuiCameraOverlayLos/res/values/config.xml new file mode 100644 index 0000000..ff6ac47 --- /dev/null +++ b/rro_overlay/MiuiCameraOverlayLos/res/values/config.xml @@ -0,0 +1,13 @@ + + + + + com.android.camera + org.lineageos.aperture + org.lineageos.aperture.dev + com.crdroid.faceunlock + org.pixelexperience.faceunlock + + diff --git a/sepolicy/private/cameraserver.te b/sepolicy/private/cameraserver.te new file mode 100644 index 0000000..1aca86c --- /dev/null +++ b/sepolicy/private/cameraserver.te @@ -0,0 +1,3 @@ +allow cameraserver property_socket:sock_file write; +allow cameraserver init:unix_stream_socket connectto; +set_prop(cameraserver, exported_system_prop) diff --git a/sepolicy/private/file_contexts b/sepolicy/private/file_contexts new file mode 100644 index 0000000..81a6f3d --- /dev/null +++ b/sepolicy/private/file_contexts @@ -0,0 +1,2 @@ +# Camera +/vendor/camera(/.*)? u:object_r:vendor_configs_file:s0 diff --git a/sepolicy/private/platform_app.te b/sepolicy/private/platform_app.te new file mode 100644 index 0000000..6ad7e7f --- /dev/null +++ b/sepolicy/private/platform_app.te @@ -0,0 +1 @@ +hal_client_domain(platform_app, hal_misys) diff --git a/sepolicy/private/priv_app.te b/sepolicy/private/priv_app.te new file mode 100644 index 0000000..315f42d --- /dev/null +++ b/sepolicy/private/priv_app.te @@ -0,0 +1 @@ +hal_client_domain(priv_app, hal_misys) diff --git a/sepolicy/private/property_contexts b/sepolicy/private/property_contexts new file mode 100644 index 0000000..0cae346 --- /dev/null +++ b/sepolicy/private/property_contexts @@ -0,0 +1,2 @@ +# Miui Camera +sys.camera.miui.apk u:object_r:exported_system_prop:s0 diff --git a/sepolicy/public/attributes b/sepolicy/public/attributes new file mode 100644 index 0000000..e7f54f1 --- /dev/null +++ b/sepolicy/public/attributes @@ -0,0 +1 @@ +hal_attribute_lineage(misys) diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts new file mode 100644 index 0000000..80cc738 --- /dev/null +++ b/sepolicy/vendor/file_contexts @@ -0,0 +1,3 @@ +/vendor/bin/hw/vendor\.xiaomi\.hardware\.misys@1\.0-service u:object_r:hal_misys_default_exec:s0 +/vendor/bin/hw/vendor\.xiaomi\.hardware\.misys@2\.0-service u:object_r:hal_misys_default_exec:s0 +/vendor/bin/hw/vendor\.xiaomi\.hardware\.misys@3\.0-service u:object_r:hal_misys_default_exec:s0 diff --git a/sepolicy/vendor/hal_camera_default.te b/sepolicy/vendor/hal_camera_default.te index 18dde02..076dd4b 100644 --- a/sepolicy/vendor/hal_camera_default.te +++ b/sepolicy/vendor/hal_camera_default.te @@ -1,7 +1,11 @@ +type hal_camerapostproc_xiaomi_hwservice, hwservice_manager_type; + get_prop(hal_camera_default, vendor_fp_prop) binder_call(hal_camera_default, platform_app) +add_hwservice(hal_camera_default, hal_camerapostproc_xiaomi_hwservice) + allow hal_camera_default mnt_vendor_file:dir { search }; allow hal_camera_default proc_stat:file { open read }; allow hal_camera_default vendor_xdsp_device:chr_file { read }; diff --git a/sepolicy/vendor/hal_misys.te b/sepolicy/vendor/hal_misys.te new file mode 100644 index 0000000..2072c83 --- /dev/null +++ b/sepolicy/vendor/hal_misys.te @@ -0,0 +1,5 @@ +# HwBinder IPC from client to server +binder_call(hal_misys_client, hal_misys_server) + +add_hwservice(hal_misys_server, hal_misys_hwservice) +allow hal_misys_client hal_misys_hwservice:hwservice_manager find; diff --git a/sepolicy/vendor/hal_misys_default.te b/sepolicy/vendor/hal_misys_default.te new file mode 100644 index 0000000..e16dc85 --- /dev/null +++ b/sepolicy/vendor/hal_misys_default.te @@ -0,0 +1,15 @@ +type hal_misys_default, domain; +hal_server_domain(hal_misys_default, hal_misys) + +type hal_misys_default_exec, exec_type, vendor_file_type, file_type; + +init_daemon_domain(hal_misys_default) + +allow hal_misys_default camera_persist_file:file create_file_perms; +allow hal_misys_default camera_persist_file:dir create_dir_perms; + +r_dir_file(hal_misys_default, firmware_file) +r_dir_file(hal_misys_default, mnt_vendor_file) + +get_prop(hal_misys_default, vendor_camera_prop) +get_prop(hal_misys_default, vendor_camera_sensor_prop); diff --git a/sepolicy/vendor/hwservice.te b/sepolicy/vendor/hwservice.te new file mode 100644 index 0000000..d01145c --- /dev/null +++ b/sepolicy/vendor/hwservice.te @@ -0,0 +1 @@ +type hal_misys_hwservice, hwservice_manager_type; diff --git a/sepolicy/vendor/hwservice_contexts b/sepolicy/vendor/hwservice_contexts new file mode 100644 index 0000000..e013b96 --- /dev/null +++ b/sepolicy/vendor/hwservice_contexts @@ -0,0 +1,3 @@ +# Miui camera +vendor.xiaomi.hardware.misys::IMiSys u:object_r:hal_misys_hwservice:s0 +vendor.xiaomi.hardware.campostproc::IMiPostProcService u:object_r:hal_camerapostproc_xiaomi_hwservice:s0 diff --git a/sepolicy/vendor/platform_app.te b/sepolicy/vendor/platform_app.te index 37627b7..7b69320 100644 --- a/sepolicy/vendor/platform_app.te +++ b/sepolicy/vendor/platform_app.te @@ -5,3 +5,9 @@ binder_call(platform_app, hal_camera_default) get_prop(platform_app, vendor_camera_sensor_prop); get_prop(platform_app, vendor_fp_prop) + +allow platform_app cgroup:file r_file_perms; + +allow platform_app hal_misys_hwservice:hwservice_manager find; + +allow platform_app miui_multi_display:service_manager find; diff --git a/sepolicy/vendor/priv_app.te b/sepolicy/vendor/priv_app.te new file mode 100644 index 0000000..f29450f --- /dev/null +++ b/sepolicy/vendor/priv_app.te @@ -0,0 +1 @@ +allow priv_app cgroup:file r_file_perms; diff --git a/sepolicy/vendor/service.te b/sepolicy/vendor/service.te new file mode 100644 index 0000000..e8ce1d8 --- /dev/null +++ b/sepolicy/vendor/service.te @@ -0,0 +1 @@ +type miui_multi_display, service_manager_type; diff --git a/sepolicy/vendor/service_contexts b/sepolicy/vendor/service_contexts new file mode 100644 index 0000000..e952fb5 --- /dev/null +++ b/sepolicy/vendor/service_contexts @@ -0,0 +1 @@ +miui_multi_display u:object_r:miui_multi_display:s0 diff --git a/setup-makefiles.sh b/setup-makefiles.sh old mode 100755 new mode 100644