본문 바로가기

프로그래밍/Android

(93)
Android system 폴더에 쓰기 system 폴더 변경을 위한 remount adb remount yaffs2 mtd@system rwi or mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
에뮬레이터에서 data,system 디렉토리 가져오기 * busybox 소스 다운로드 : http://busybox.net 이미 빌드된 안드로이드 바이너리 : http://benno.id.au/blog/2007/11/14/android-busybox 소스를 받은 경우 # tar xvf busybox-1.14.1.tar.bz2# cd busybox-1.14.1# make menuconfig 설정에서 리눅스 공유 라이브러리를 스태틱하게 링크해야함.. 당연한거지만 -_-;; setting > build option 에 build busybox as static binary 옵션을 선택 miscellaneous utilities > inotifyd 해제networking utilities > route 해제 빌드# make ARCH=arm CROSS_COMPILE..
JNI 기본사항 자바측 소스 구성 라이브러리 로드 : 네이티브 코드로 작성된 라이브러리를 동적으로 로드한다. 당연한 말이지만 네이티브 메쏘드를 호출하기전에 로드해야 한다. System.loadLibrary("native_library"); 객체 생성시 처리해도 되고, static 블럭을 사용해 로드되도록 할 수 있다. public class TestClass { static { System.loadLibrary("native_library"); } } native 메쏘드 선언 : 클래스의 멤버로 메쏘드를 선언한다. 이때, native 키워드를 통해 이 메쏘드는 외부 네이티브 코드에 연결됨을 알린다. public native void nativeMethodName(); C 측 소스 구성 일단 헤더 파일이 필요한데, 이건 ..
플랫폼 make/ 모듈 추가 방법 테스트 라이브러리를 플랫폼에 추가하기안드로이드는 config.mk 에서 각 프로젝트별 android.mk를 뒤져빌드하는 형태로 구성되어 있다~ 안드로이드 플랫폼내에 모듈이나 어플리케이션을 추가시키기 위해별도의 mk 및 타겟 플랫폼 빌드환경을 구성하기에는 작업해야 하는 일이많고, 안드로이드에 특화된 시뮬레이터, 서명 등의 문제가 발생할 여지가 있다.(실제로 발생하는지는 모르겠다... -_-;) 아무튼 기 구성된 make 프로세스에 포함시켜 빌드하는게가장 편한 방법이기에 해당내용을 정리해 본다. ex) helloworld 라는 공용라이브러리 추가하기 1. 테스트 라이브러리를 위한 폴더명 설정 "helloworld"2. /frameworks/base/helloworld 폴더 추가(다른위치에 추가해도 됨)3. ..
커널 빌드하기 1. 툴체인 : 타겟 플랫폼에 맞게 바이너리를 생성하는 크로스 컴파일러 툴 모음필요한 타겟에 맞게 툴체인을 설치한다.http://www.codesourcery.com 이곳에서 제품목록에서 Sourcery G++ 중에무료인 Lite Edition 을 선택한다. 프로세서와 타겟 플랫폼별로 다운로드 할 수 있다. 압축을 풀고, 해당 폴더를 export 시킨다.걍 매번 구찮으면 ~/.bashrc 에 등록해버린다. 2. 커널 소스 다운로드생성하려는 폴더 위치로 이동.$ cd ~/mysource 최신버전의 커널 소스의 저장소를 클론(복사) 한다.2010.1월 현재 2.6.27 버전이 클론된다.$ sudo git clone git://android.git.kernel.org/kernel/common.git kerne..
서비스1 - 로컬서비스 ● 로컬 서비스 - 액티비티와 큰 차이없으나 UI 없이 백그라운드로 수행되는 객체.명시적으로 서비스 클래스를 통해 구동하는 것을 로컬 서비스,묵시적으로 액션 및 인텐트 필터를 사용하는 서비스를 리모트 서비스라 한다. 리모트 서비스에 대해서는 다음에 다룰 예정 ... -_-;; 헉헉 서비스 구동 :startService(new Intent(SampleActivity.this, SampleService.class)); 서비스 중지 :stopService(new Intent(SampleActivity.this, SampleService.class)); ● 샘플 : 로컬 서비스를 구동해 상태바에 알림문자 및 아이콘 보이기서비스를 백그라운드로 구동하면 해당 상태를 알기가 어려운데, 이런경우 Notification..
LayoutInflater를 사용해 레이아웃 구성하기 기본구조.LayoutInflater는 일종의 xml 파서이다.layout 을 위해 xml에 기술된 데이터를 파싱해서 ViewGroup을 생성하는 역할을 한다.파싱된 ViewGroup으로 하위 뷰들을 findViewById() 등을 통해 접근할 수 있게 된다. 1. 일단 메인 레이아웃을 읽어온다.LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE );ViewGroup mainLayout = inflater.inflate( R.layout.main_layout ); 2. 덧붙일 레이아웃을 읽어온다.ViewGroup subTitleLayout = inflater.inflate( R.layout.sub_t..
액티비티 변경 에니메이션 안드로이드 2.0 (api level 5) 부터 액티비티가 보여지고, 없어질때 뷰처럼 에니메이션을설정할 수 있다. 새로 추가된 메쏘드로 간단히 구현할 수 있는데... 음 점점 코더로 만들어 버리는 안드로이드 -_-;;Activity.overridePendingTransition( ); 사용법도 간단.startActivity(); 를 하고overridePendingTransition ( R.anim.new_activie, R.anim.old_activity ); 에니메이션이 설정되지 않은 경우는 새 액티비티는 오른쪽에서 슬라이드-인 되고,기존 액티비티는 왼쪽으로 슬라이드-아웃된다. 에니메이션은 기존 방식과 동일하게 res/anim 폴더에 xml로 작성하던가 Animation 객체를 생성해 사용해도 된다.