지난 글에서는 로컬의 네이티브 애플리케이션 소스를 이클립스를 통해 쉽게 디버깅할 수 있도록, 에뮬레이터에 내장된 것과 동일한 키로 서명하는 방법을 알아봤습니다. 그러나 굳이 내장된 것과 동일하게 서명하지 않고(즉 Custom Debug Keystore를 만들지 않고) 로컬 네이티브 애플리케이션을 디버깅할 수 있습니다.
(1) 내장된 애플리케이션을 설치 제거하거나(uninstall)
(2) 내장된 패키지(apk) 파일을 내가 빌드한 apk 파일로 덮어쓴 후(overwrite)
그러고 나서 이클립스에서 Debug As로 디버깅하면 됩니다.
1. 네이티브 애플리케이션 uninstall하기
에뮬레이터에서 기존 네이티브 애플리케이션을 설치제거(uninstall)합니다.
# 그냥 언인스톨하면 안됩니다
$ adb uninstall com.android.calculator2
Failure
# 아직 rm으로 파일을 삭제할 수 없습니다
$ adb shell rm /system/app/Calculator.apk
rm failed for /system/app/Calculator.apk, Read-only file system
# remount는 /system 파티션을 ro(read-only)에서 rw(read-write)로 바꿉니다
$ adb remount
# 이제 rm으로 apk를 삭제하고 uninstall합니다
$ adb shell rm /system/app/Calculator.apk
$ adb uninstall com.android.calculator2
Success
# 기존 데이터를 보존하고 uninstall하려면 -k 옵션 추가
$ adb shell pm uninstall -k com.android.calculator2
▶ 네이티브 애플리케이션 제거 순서 요약 : remount => remove apk => uninstall
2. 또는 네이티브 패키지 파일을 덮어쓰기
내장된 애플리케이션 패키지 파일(apk)을 로컬에서 빌드된 파일로 강제로 덮어씌우고 디버깅할 수 있습니다.
# remount는 /system 파티션을 ro(read-only)에서 rw(read-write)로 바꿉니다
$ adb remount
# 내장된 apk를 로컬 apk로 overwrite합니다
$ adb push C:\Calculator\bin\Calculator.apk /system/app
이클립스에서 Debug As 실행
내장된 애플리케이션을 언인스톨하거나 로컬 패키지 파일로 덮어쓴 후에 이클립스에서 [프로젝트 오른 클릭 > Debug As > Android Application]을 실행합니다. 이제 로컬에서 빌드된 네이티브 애플리케이션이 타겟에 새롭게 설치되면서 소스를 디버깅할 수 있습니다. (이 경우 apk는 /data/app에 설치됩니다. /system/app에 설치되지 않습니다)
'Android' 카테고리의 다른 글
[안드로이드] SQLite 테이블 조회시 한글 > 영어 > 기타 순으로 정렬하기 (1) | 2010.04.30 |
---|---|
[안드로이드] 애플리케이션 프로세스에 직접 debugger 붙이기 (2) | 2010.04.13 |
[안드로이드] 이클립스에서 Debug As Android Application 실행시 벌어지는 일들 (0) | 2010.04.08 |
[안드로이드] 이클립스에 native application 빌드환경 만들기 (2) | 2010.04.08 |
[안드로이드] 이클립스에서 네이티브 애플리케이션을 디버그 모드로 서명하기 (17) | 2010.04.08 |