냔무의 좌충우돌

sisan.egloos.com

Eclipse 상에서 Android Framework단 원하는 특정 APK(e.g Home, Calendar, etc)만을 Customization 또는 기타 수정 작업을 진행

sisan.egloos.com/2797558
Eclipse 상에서 Android Framework단 원하는 특정 APK(e.g Home, Calendar, etc)만을 Customization 또는 기타 수정 작업을 진행 하기 위한 방법(별도의 전체/부분 Platform build 과정을 거치지 않기 때문에 빠른 개발 진행이 가능)

(*) 선행 조건/과정
-> Android Eclaire Platform Full Source 빌드 완료 가정!

(1) 작업 하고자 하는 특정 APK를 로컬 다른 작업 폴더에 Copy 후 Eclipse에서 Import 한다. => 다수 에러 발생 (해당 라이브러리를 로딩 하지 않았기 때문 임)
(2) \mydroid\out\target\common\obj\JAVA_LIBRARIES와\mydroid\out\target\common\obj\APPS 를 로컬 다른 작업 폴더에 Copy 함
(3) Android Home의 경우
framework_intermediates와 core_intermediates 내 classes.jar를 User library 타입으로 가져 온다. => 정상 빌드 확인

(*) 이제 Eclipse상 특정 APK 소스 로딩 및 빌드 과정이 끝났습니다. 이제 해당 APK를 Emulator 등에 재 배포/설치 해서 디버깅 하기 위해서는 Signing 과정을 다음과 같이 수행 해야합니다.

(*) Application Signing 관련 부연 설명 - 서명되지 않은 애플리케이션을 설치하려고 하면I[NSTALL_PARSE_FAILED_NO_CERTIFICATES] 에러가 발생 합니다.
현재 Eclipse ADT 환경에서 안드로이드 애플리케이션을 개발하면서, 서명 작업을 의식하지 않고 자연스럽게 타겟에 애플리케이션을 설치하고 테스트 할 수 있는 것은 해당 애플리케이션을 빌드 하면서 자동으로 apk에 서명까지 함께 해주기 때문 입니다.

APK 서명에는 Debug/Release 모드가 있는데, Eclipse는 Debug 모드로 서명을 해줍니다.
(Eclipse가 APK를 디버그 모드로 서명하기 위한 키/인증서(key/certificate)는 "$HOME/.android/debug.keystore" 파일에 저장되어 있습니다.)
Eclipse->Preferences->Android->Build 메뉴를 보면 Default로 debug keystore 파일이 설정되어 있는 것을 확인하실 수 있습니다.

(4) 해당 APK의 서명 테스트 키를 확인 하고 로컬 폴더에 Copy 합니다.

=> Android 제공 하는 서명용 테스트 키는 다음과 같습니다.
• testkey -- a generic key for packages that do not otherwise specify a key.
• platform -- a test key for packages that are part of the core platform.
• shared -- a test key for things that are shared in the home/contacts process.
• media -- a test key for packages that are part of the media/download system.

해당 APK의 Android.mk 파일을 보면 LOCAL_CERTIFICATE 값을 보고 맞는 키를 쓰시면 됩니다. 만약 LOCAL_CERTIFICATE 변수가 정의돼 있지 않으면 testkey 키로 서명하시면 됩니다.

(5) Android Home의 경우 Shared 설정 이기 때문에 shared.pk8, shared.x509.pem을 Copy 해 옵니다.

(6) Eclipse상에서 일반 유저 애플리케이션처럼 서명 작업을 신경 쓰지 않고 Run As 또는 Debug As로 개발/디버깅/테스트 할 수 있게 안드로이드 Debug용 keystore를 다음과 같이 만든다.

windows command 실행 예) -> 입/출력 파일명 말고 나머지는 모두 동일하게 typing 해 주십시오.

# openssl pkcs8 -inform DER -nocrypt -in shared.pk8 -out shared.pem
=> copy해 온 .pk8 파일을 가지고 .pem 생성
# openssl pkcs12 -export -in shared.x509.pem -inkey shared.pem -out shared.p12 -name androiddebugkey
=> shared.p12 생성
# keytool -importkeystore -deststorepass android -destkeystore sisan.android.debugging.shared.keystore
-srckeystore shared.p12 -srcstoretype PKCS12 -srcstorepass android
=> sisan_android_debugging_shared.keystore 생성

(7) (6)번 과정에서 만들어진 .keystore 파일을 Eclipse->Preferences->Android->Build 상 Custom debug keystore로 설정 하시면 됩니다.

Eclipse상에서 F11 디버깅 시작!



닉네임
비밀번호
블로그
비공개

프로필

비공개 창고임...블로그 안해요-_-; by 냔무
작성자 블로그 가기