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 권한을 획득하여 시스템 접근이 가능하다.
댓글
댓글 쓰기