'Android' 카테고리의 다른 글
[안드로이드] 쓰레드 덤프 보기 (1) | 2010.07.27 |
---|---|
[안드로이드] Resources 개요 (2) | 2010.05.11 |
[안드로이드] 힙덤프 생성 방법 3가지 (0) | 2010.05.04 |
[안드로이드] 문제해결 방법론 메모 (0) | 2010.05.03 |
[안드로이드] 반복 테스트용 dos 배치 스크립트 (5) | 2010.05.03 |
[안드로이드] 쓰레드 덤프 보기 (1) | 2010.07.27 |
---|---|
[안드로이드] Resources 개요 (2) | 2010.05.11 |
[안드로이드] 힙덤프 생성 방법 3가지 (0) | 2010.05.04 |
[안드로이드] 문제해결 방법론 메모 (0) | 2010.05.03 |
[안드로이드] 반복 테스트용 dos 배치 스크립트 (5) | 2010.05.03 |
[안드로이드] Resources 개요 (2) | 2010.05.11 |
---|---|
[안드로이드] Heap 메모리 분석 (2) | 2010.05.10 |
[안드로이드] 문제해결 방법론 메모 (0) | 2010.05.03 |
[안드로이드] 반복 테스트용 dos 배치 스크립트 (5) | 2010.05.03 |
[안드로이드] 안드로이드 테스트 관련 자료 (0) | 2010.05.03 |
[안드로이드] Heap 메모리 분석 (2) | 2010.05.10 |
---|---|
[안드로이드] 힙덤프 생성 방법 3가지 (0) | 2010.05.04 |
[안드로이드] 반복 테스트용 dos 배치 스크립트 (5) | 2010.05.03 |
[안드로이드] 안드로이드 테스트 관련 자료 (0) | 2010.05.03 |
[안드로이드] SQLite 테이블 조회시 한글 > 영어 > 기타 순으로 정렬하기 (1) | 2010.04.30 |
[안드로이드] 힙덤프 생성 방법 3가지 (0) | 2010.05.04 |
---|---|
[안드로이드] 문제해결 방법론 메모 (0) | 2010.05.03 |
[안드로이드] 안드로이드 테스트 관련 자료 (0) | 2010.05.03 |
[안드로이드] SQLite 테이블 조회시 한글 > 영어 > 기타 순으로 정렬하기 (1) | 2010.04.30 |
[안드로이드] 애플리케이션 프로세스에 직접 debugger 붙이기 (2) | 2010.04.13 |
[안드로이드] 문제해결 방법론 메모 (0) | 2010.05.03 |
---|---|
[안드로이드] 반복 테스트용 dos 배치 스크립트 (5) | 2010.05.03 |
[안드로이드] SQLite 테이블 조회시 한글 > 영어 > 기타 순으로 정렬하기 (1) | 2010.04.30 |
[안드로이드] 애플리케이션 프로세스에 직접 debugger 붙이기 (2) | 2010.04.13 |
[안드로이드] 커스텀 디버그 서명없이 네이티브 애플리케이션 디버깅하기 (1) | 2010.04.12 |
[안드로이드] 반복 테스트용 dos 배치 스크립트 (5) | 2010.05.03 |
---|---|
[안드로이드] 안드로이드 테스트 관련 자료 (0) | 2010.05.03 |
[안드로이드] 애플리케이션 프로세스에 직접 debugger 붙이기 (2) | 2010.04.13 |
[안드로이드] 커스텀 디버그 서명없이 네이티브 애플리케이션 디버깅하기 (1) | 2010.04.12 |
[안드로이드] 이클립스에서 Debug As Android Application 실행시 벌어지는 일들 (0) | 2010.04.08 |
프로세스에 디버거 붙이는 작업을 자동화하기
만약 수동으로 디버거를 붙이는 작업을 자꾸 반복해야 한다면, 이것은 당연히 비효율적인 일이 되고 맙니다.
또한 디버거를 붙이는 작업을 사람이 수동으로 처리하다보니, 애플리케이션 시작부터 리모트 디버거를 붙이기까지 다소 시간이 걸릴 수 있습니다. 이렇게 되면 디버거가 연결되기 전에 액티비티의 onCreate() 같은 메소드에 찍어둔 중단점은 지나쳐 버릴 수가 있습니다 (아 물론, 이 문제는 에뮬레이터의 Dev Tools 애플리케이션의 Development Settins에서 아래처럼 Wait For Debugger 옵션을 체크하여 방지할 수 있습니다).
어쨋든 디버거 붙이는 과정은 가급적 스크립트로 만들어두고 자동으로 실행시키는 것이 좋습니다.
▶ 타겟(에뮬레이터)에서 해당 애플리케이션을 시작
am(Activity Manager) 명령어를 이용합니다. 타겟에서 지정된 액티비티를 디버그 모드로 시작하는 명령형식은 다음과 같습니다.
▶ 이클립스 DDMS에서 해당 프로세스를 선택
이클립스 DDMS를 보지 않고 방금 띄운 프로세스의 디버깅 포트를 알아내는 것이 핵심입니다. 디버깅 포트는 이렇게 알아낼 수 있습니다.
(1) 해당 프로세스가 마지막에 뜬 프로세스인 경우
(2) 프로세스의 이름을 알고 있는 경우
이제 리모트 디버깅 실행설정에서 설정해둔 8700 포트를 이렇게 알아낸 포트로 포워딩하면 됩니다.
[안드로이드] 안드로이드 테스트 관련 자료 (0) | 2010.05.03 |
---|---|
[안드로이드] SQLite 테이블 조회시 한글 > 영어 > 기타 순으로 정렬하기 (1) | 2010.04.30 |
[안드로이드] 커스텀 디버그 서명없이 네이티브 애플리케이션 디버깅하기 (1) | 2010.04.12 |
[안드로이드] 이클립스에서 Debug As Android Application 실행시 벌어지는 일들 (0) | 2010.04.08 |
[안드로이드] 이클립스에 native application 빌드환경 만들기 (2) | 2010.04.08 |
지난 글에서는 로컬의 네이티브 애플리케이션 소스를 이클립스를 통해 쉽게 디버깅할 수 있도록, 에뮬레이터에 내장된 것과 동일한 키로 서명하는 방법을 알아봤습니다. 그러나 굳이 내장된 것과 동일하게 서명하지 않고(즉 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에 설치되지 않습니다)
[안드로이드] 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 |
* 'Dalvik VM - DDMS - Eclipse' 사이의 연결관계에 대한 자세한 내용은 ekwang님의 글 참조 : http://ekwang.tistory.com/4
[안드로이드] 애플리케이션 프로세스에 직접 debugger 붙이기 (2) | 2010.04.13 |
---|---|
[안드로이드] 커스텀 디버그 서명없이 네이티브 애플리케이션 디버깅하기 (1) | 2010.04.12 |
[안드로이드] 이클립스에 native application 빌드환경 만들기 (2) | 2010.04.08 |
[안드로이드] 이클립스에서 네이티브 애플리케이션을 디버그 모드로 서명하기 (17) | 2010.04.08 |
[안드로이드] Native 애플리케이션과 User 애플리케이션 (0) | 2010.03.30 |
네이티브 애플리케이션 소스를 수정하여 컴파일, 테스트, 디버깅해야 할 경우가 있습니다. 주로 제조사에서 그런 작업을 합니다. 네이티브 애플리케이션 커스터마이징을 위해 제일 먼저 할 일은 당연히 이클립스에 네이티브 애플리케이션 프로젝트를 구성하는 것입니다. 이클립스 환경에서 네이티브 앱을 빌드하는 방법을 알아보죠.
1. 일단 안드로이드 소스 저장소(http://android.git.kernel.org/)에서 해당 네이티브 애플리케이션 소스를 다운받습니다. snapshot 링크를 클릭하면 압축파일로 한번에 쉽게 다운로드 받을 수 있습니다.
2. 압축을 풀고 이클립스에서 새로운 Android Project로 구성합니다. 생성 마법사에서 Android Project 선택 후 Create project from existing source 선택하여 소스 경로를 설정합니다.
android.jar 외에 어떤 jar 파일을 빌드패스에 추가할 지는 Android.mk 파일 등을 참조하여 판단하면 됩니다.
* 전체 네이티브 패키지(애플리케이션, 프로바이더 등)를 이클립스를 이용하여 한꺼번에 빌드하기 위한 세팅은 다음 링크를 참조합니다.
http://source.android.com/using-eclipse
http://blog.naver.com/jang2818?Redirect=Log&logNo=20078863663
[안드로이드] 커스텀 디버그 서명없이 네이티브 애플리케이션 디버깅하기 (1) | 2010.04.12 |
---|---|
[안드로이드] 이클립스에서 Debug As Android Application 실행시 벌어지는 일들 (0) | 2010.04.08 |
[안드로이드] 이클립스에서 네이티브 애플리케이션을 디버그 모드로 서명하기 (17) | 2010.04.08 |
[안드로이드] Native 애플리케이션과 User 애플리케이션 (0) | 2010.03.30 |
[안드로이드] 내부 SQLite3 데이터베이스 보기 (4) | 2010.03.26 |