본문 바로가기

개발 개발/Android

안드로이드의 부트 프로세스 출처 : http://maca.egloos.com/5383289 원문 : http://www.androidenea.com/2009/06/android-boot-process-from-power-on.html 모바일 플랫폼과 임베디드 시스템은 데스크탑 시스템과 비교해서 몇몇 다른점을 가지고 있다. 1. Power on and boot ROM code execution 전원이 인가되었을 때 CPU는 초기화가 완료되지 않은 상태이고, 내부 클럭 역시 초기화되지 않은 상태이다. 이 상태에서는 CPU 내부의 RAM만 사용가능한 상태이다. 전원 공급이 안정화되면 Boot ROM 코드가 시작이 된다. Boot ROM 코드는 아주 작은 코드로서 CPU ASIC에 내장 되어있다. A. Boot ROM은 ASIC의 특정 .. 더보기
envsetup.sh 사용법 / Android apk 부분 빌드 출처 : http://blog.naver.com/shlee7708/120131974681 소개 envsetup.sh는 Android build system에서 제공하는 shell script 함수 모음이다. 사용 준비 Shell 상에서 다음과 같이 실행해주면 envsetup.sh 내에 정의된 여러 함수들이 현재 실행 중인 shell 환경으로 로드된다. $ . $ANDROID_HOME/build/envsetup.sh 참고: envsetup.sh를 자주 사용하는 경우 위 내용을 .profile이나 .bashrc와 같은 설정 파일에 추가해주는 것도 좋을 것이다. 참고2: $ANDROID_HOME 환경 변수는 반드시 미리 정의되어 있어야 하고, 그 내용은 Android full source root path이다.. 더보기
LOCAL_MODULE_TAGS LOCAL_MODULE_TAGS := user development eng optional 현재 (ICS 4.0.3) 상기 4가지 모드가 있는데 optional 을 제외하고는 각 컴파일 모드에 들어가는 형태이다. optional은 진저서부터 생겨난 옵션인데, Android.mk에 다음과 같이 되어 있을 경우는 LOCAL_MODULE := module_name_xxx LOCAL_MODULE_TAGS := optional device.mk 에 해당 패키지 명을 써 주거나, generic.mk 등등의 파일에 있는 PRODUCT_PACKAGE에 적절하게 패키지 명을 써 주시면 된다. PRODUCT_PACKAGES 라고 명시되어 있는 부분입니다. 주로 build/core , build/target/product .. 더보기
CTS 정리 출처 : http://csjung.tistory.com/entry/CTS-%EC%A0%95%EB%A6%AC 정의 CTS(Compatiblity Test Suite)는 안드로이드 디바이스의 호환성을 테스트 하는 도구입니다. 안드로이드 표준 SDK에서 요구하는 API들이 존재하는지, 그리고 정상적으로 동작하는지 확인하는 것입니다. CTS를 하는 이유는 개발자가 표준 SDK의 개발 가이드에 따라서 만든 응용 프로그램들이, CTS 인증을 받은 안드로이드 호환 디바이스에서 정상적으로 동작함을 보장하기 위함입니다. 따라서 CTS의 통과는 안드로이드 마켓에 접속하기 위한 가장 기본적인 요건입니다.. 그리고 구글의 정책상 마켓 프로그램 뿐 아니라 GMS(Google Mobile Service)라고 불리우는 다양한 어플.. 더보기
임의로 Call stack(콜스택) 찍기 방법 1. Exception ex 와 같이 객체를 하나 만들고, ex.printStackTrace() 하면 해당 위치의 Call stack을 볼 수 있습니다. 방법 2. StringBuffer stacktrace = new StringBuffer();StackTraceElement[] stackTrace = new Exception().getStackTrace(); for(int x=0; x RefBase 소스에서 incStrong() -> AudioFlinger 소스에서 onFirstRef() 이렇게 호출된 것을 볼 수 있습니다. 더보기
PDK JNI 로그 log 나오게 하기 android_bluetooth_HeadsetBase.cpp 파일에서 로그좀 볼려는데 죽어도 안나온다. 결국 실제 조건을 확인하기 위해서 풀컴파일후 해당파일 터치후 컴파일 옵션에 임시파일 보존 속성 추가후 다시 컴파일 mydroid/build/core/config.mk 에 --save-temps 추가 COMMON_GLOBAL_CFLAGS:= -DANDROID -fmessage-length=0 -W --save-temps -Wall -Wno-unused -Winit-self -Wpointer-arith 원래 파일의 하기 부분 체크시 if (rc < 0) { if (errno == EBUSY) { LOGI("read() error %s (%d): repeating read()...", strerror(err.. 더보기
[안드로이드] 네이티브 어플리케이션 설치 출처: http://whitetiger0714.tistory.com/29 1. 네이티브 어플리케이션 설치 방법네이티브 애플리케이션(Native Application)이란? 내장 애플리케이션(Built-in Application) 또는 시스템 애플리케이션(System Application) 등으로 불림 주로 제조사에서 개발되어, 디바이스(or 에뮬레이터)에 내장된 상태로 제공됨 Contacts, Browser, Phone, Camera, Email, Gallery 등(전체 목록은 안드로이드 풀소스의 packages 디렉토리 참조) 디바이스의 /system/app에 설치됨 : ex) /system/app/Contacts.apk 보통 안드로이드 full 소스 빌드시 함께 빌드되며 이 과정에서 별도의 인증서로 .. 더보기
Android build system - makefile 기본 빌드 과정 Product설정파일을 통해 환경변수를 설정하여 선택적으로 빌드가능 PRODUCT_NAME : 제품명 PRODUCT_DEVICE : 디바이스명 PRODUCT_LOCALE : 지역정보 PRODUCT_PACKAGE_OVERLAY : 대체될 resource가 있는 Path PRODUCT_PROPERTY_OVERRIDES : 추가될 system property 항목이며 /system/build.prop에 저장됨. PRODUCT_PACKAGES : 기본적으로 설치될 app 목록 전체 과정을 간략히 설명하면, TARGET_BUILD_VARIANT에 따라서 System Property와 설치될 모듈을 결정합니다. 그 과정을 Makefile을 따라가면서 확인해 보겠습니다. 시작은 open_src폴더 아래 Makefil.. 더보기