Android system에 prebuilt된 앱을 추가하기 위해서 System app permission을 추가해주어야한다.
적절한 Permission이 추가되지 않으면 아래의 문제가 발생한다.
priv-app 경로에 있어도 앱에 누락된 권한이 부여되지 않는다.Preload App 중에서 특히 /system/priv-app/ 에 설치된 앱을 System App이라 한다. 혹은 Privileged App이라고도 부른다.
Preivileged App은 시스템 이미지 파티션의 priv-app 디렉터리에 위치한 시스템 앱이다. Android 출시에 사용되는 파티션은 다음과 같다.
/system/system, /product, /vendorAndorid SDK의 root directory로 이동
System App 추가한 다음(이전 글 참고), 빌드 환경 설정
# 제조사별 방법 다를 수 있으므로 확인 필요
source build/envsetup.sh
lunch [TARGET]
빌드 실행
out dir에 있는 apk를 사용하기 때문에 빌드 환경 설정 시, OUT_DIR을 export 해주었다면 동일하게 설정이 되어있었어야한다. (이걸로 엉뚱하게 GPT 뚜들기고있었음;; 😂)
# REFER ) privapp_permission Usage
Usage:
Specify which apk to generate priv-app permissions for. If no apk is \
specified, this will default to all APKs under "<ANDROID_PRODUCT_OUT>/\
<all the partitions>/priv-app/".
스크립트 실행
development/tools/privapp_permissions/privapp_permission.py를 실행하여 나온 결과를 xml파일로 저장하면 된다.
--xml 옵션을 추가하여 xml 파일로 바로 저장할 수도 있음. (--h option으로 parameter 확인 가능)
$ python development/tools/privapp_permissions/privapp_permissions.py
################################################################################
#
# apex/com.android.wifi XML:
#
################################################################################
<?xml version="1.0" encoding="utf-8"?>
<!-- for the partition: /apex/com.android.wifi -->
<permissions>
</permissions>
################################################################################
#
# gen/META/lic_intermediates/out/target/product/[platform_name]/system XML:
#
################################################################################
<?xml version="1.0" encoding="utf-8"?>
<!-- for the partition: /gen/META/lic_intermediates/out/target/product/[platform_name]/system -->
허용 목록을 만든 후에는 빌드 속성 ro.control_privapp_permissions=enforce를 설정하여 런타임 적용을 사용 설정합니다.
🔗 독점 권한 허용 | Andoird Open Source Project
🔗 독점 권한 허용 목록 | Andoird Open Source Project