일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- NarwalFreo
- 삼성소프트웨어멤버십
- 신경회로망
- 동아리
- Google App Engine
- 인공지능
- Friendship
- BAM
- 물걸레자동세척로봇청소기
- 삼성
- 멤버십
- 구글 앱 엔진
- hopfield network
- 증강현실
- 가상화
- 빅데이터
- 패턴인식
- 파이썬
- SSM
- 신경망
- 패턴 인식
- 하이퍼바이저
- 물걸레로봇청소기추천
- Neural Network
- Bidirectional Associative Memory
- 삼성전자 소프트웨어멤버십 SSM
- Python
- 고려대학교
- 갤럭시탭S8울트라
- 나르왈프레오
- Today
- Total
정보공간_1
[2기 강북 강동하] 안드로이드 시스템 권한 앱 만들기 본문
[2기 강북 강동하] 안드로이드 시스템 권한 앱 만들기
일반적으로 어플리케이션을 만들어서 배포할적에는 사실 시스템 권한 앱을 만들일이 없습니다만,
학습용도나 직접 프레임워크를 빌드 하실때는 시스템 권한을 가지는 앱을 만들기도 합니다.
시스템 레벨의 권한을 가지게 되면 일반 유저 레벨에서 하지 못햇던 permission 을 추가로 가질수 있습니다.
ex) /dev/input/event 쪽에 접근 권한을 가져 안드로이드의 모든 event 들을 후킹도 할수있는 등)
먼저 간단하게 system 레벨을 가지는 어플리케이션을 개발하기 위해서는
AndroidManifest.xml 에 최상의 manifest 태그의 속성에 android:sharedUserId="android.uid.system" 을 추가하여줍니다.
이 상태로 빌드 후에 디바이스에 설치를 하려고하면 에러가 발생하게됩니다.
system 권한을 가지는 앱은 해당디바이스의 플랫폼 signing key 와 일치해여야하기 때문입니다.
이 문제를 해결하는 방법은 크게 2가지가 존재합니다.
1. 첫째로는 프레임워크 빌드 당시에 같이 빌드 하는 어플리케이션을 만드는 방법입니다.
안드로이드 프레임워크 소스코드의 루트 디렉터리에서
packages/apps 디렉터리내에들어가면 여러가지 프리로드앱들이 존재합니다.
ex) Browser Calendar Camera Gallery 등..
여기서 추가하고자하는 어플리케이션를 복사합니다. 해당 디렉터리내에는 Android.mk 파일이 추가 되어있어야합니다.
제가 작업한 어플리케이션의 Android.mk 파일의 바디 내용은 아래와 같습니다.
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := Systempertest
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
추가적으로 프레임워크 빌드당시에 해당앱도 같이 빌드하기 위해서는
build/target/product/core.mk 파일내에
PRODUCT_PACKAGES := \
ApplicationsProvider \
BackupRestoreConfirmation \
Browser \
Contacts \
.
.
.
.
HTMLViewer \
앱네임 추가
위와같이 어플리케이션명을 한줄 추가하여줍니다.
이런식으로 프레임워크를 빌드하면 시스템 권한을 가지는 앱을 만들수있습니다.
2. 두번째 방법으로 시스템앱을 개발하는 방법은 어플리케이션을 빌드한 후에 프레임워크의 signing key 로 signing 하는 방법입니다.
apk 파일의 signing 은 java 툴을 이용하면되고 필요한 파일들은
out/host/linux-x86/platform/signapk.jar
build/target/product/security/platform.pk8
build/target/product/security/platform.x509.pem 파일들과 apk 파일을 한곳에 모은뒤
java -jar signapk.jar platform.pk8 platform.x509.pem unsigned.apk signed.apk
를 입력하면 플랫폼 키로 signing 된 apk 파일을 얻을수있습니다.
이렇게되면 해당 타겟 디바이스에 system 권한을 가지는 앱이 설치가 가능합니다.
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[2기 대전 김형순] 게이미피케이션과 자기동기부여 (0) | 2012.11.27 |
---|---|
[2기 수원 이상웅] 페이스북 네트워크 분석 (0) | 2012.11.26 |
[2기 대구 김길종] Unity3D 기초 (3) (0) | 2012.11.24 |
[2기 전주 박준형] OpenMP 병렬 영역, 작업 분할 지시어 (0) | 2012.11.24 |
[2기 강남 권도일]자모음 분리 및 영문 텍스트 분리를 통한 텍스트 분석기 개발 (0) | 2012.11.24 |