2011년 3월 4일 금요일

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

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 디버깅 시작!

댓글 없음:

댓글 쓰기