Android Studio 에서 Signature APP 만들기

 Android Studio 에서 Signature APP 만들기

  • Android Studio , 에뮬레이터환경에서 Signature App을 만드는 방법에 대해서 기술한다.
  • Android 권한과 관련하여 시스템적으로 중요 정보를 얻기 위해서는 Protection Level 이 Signature 이상이여야 한다.
  • 즉, 시스템 권한이 필요한 경우 pre-built된 앱 혹은 동일한 플랫폼 사이닝키로 인증된 경우 사용 가능하다.
  • 아래는 Android Studio 를 통해서 에뮬레이터 환경에서 플랫폼 사이닝키로 인증하는 방법에 대해서 알아보자.

AOSP 퍼미션 정책

AOSP Permision

Protection Level

Protection Level 선언부

접근 권한

서드파티 앱

normal 

"normal"

각 앱에서 <use-permission/> 선언 후, 사용자 동의 없이 사용 가능

사용 가능

dangerous "dangerous"각 앱에서 <use-permission/> 선언 후, 사용자 동의 하에 사용 가능 (유저 퍼미션 팝업 및 동의 필요)사용 가능
signatureOrSystem "signature|privileged"아래 signature에 해당되거나, system/priv-app/ 경로에 프리빌트된 앱에서 사용 가능사용 불가 (플랫폼 사이닝 키 필요)
signature "signature"<permission/> 선언한 앱과 <use-permission/> 선언한 앱이 동일한 인증서로 사인된 경우 사용 가능사용 불가 (플랫폼 사이닝 키 필요)

*signature → certificate: "platform"
*system → privileged: true
*privileged → allowlist → required: ["allowed_privapp_com.android.car.rotary"]

PERMISSION FILE

 플랫폼 사이닝키로 인증하기 위해서는 platform.pk8 , platform.x509.pem 파일이 필요하다. 본인이 직접 AOSP 를 빌드하거나, 안드로이드 기기 제조사에서 해당 파일이 빌드 될 수 있도록 한다.

 대부분의 해당 APP이 필요한 경우는 본인이 안드로이드 AOSP 풀 빌드 까지 할 수 있는 환경이므로 해당 파일을 획득할 수 있다.

JKS FILE 생성

 위 두 파일을 가지고 platform.jks 파일을 생성해야한다.

 위 두 파일을 리눅스 서버로 옮기고 아래와 같이 실행한다.

$ openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
$ openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem 
  -out platform.p12 -password pass:android -name androiddebugkey
$ keytool -importkeystore -deststorepass android -destkeystore platform.jks 
  -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass android

 만들때, password android, name androiddebugkey, storepassword : android 로 설정한다.

 리눅스 환경에서 위와 같이 실행하면, platform.jks 파일이 생성됨을 확인 할 수 있다.


Android Studio 환경 설정

 File - Project Structure - Modules - Signing Configs - 에 위에서 설정한 password, key 를 아래와 같이 설정한다.

 위와 같이 설정하고 빌드하면, signature 권한을 획득하여 시스템 접근이 가능하다.







댓글

이 블로그의 인기 게시물

Intel® HAXM installation failed 해결하기

Kotlin Interface

Kotlin this, super