본문 바로가기

Android

희소식 언제 부턴가 patch가 되면서 load library에 대한 이슈가 사라졌다. 따라서 so를 만들 때 -lxxx 등으로 system에 있는 library를 올릴 수 있다. 또한 init.rc 에 library path를 등록해서 특정 영역에 있는 library도 올릴 수 있게 되었다. 물론 이 동작을 하기 위해서는 system read only 영역을 새로 만들어야 하는 이슈는 산재하지만 ㅋ 그래도 이게 어디냐 아무튼 link table 따위를 만들어야 하거나 또는 dlopen, dlsym으로만 사용해야 했던 library를 build시 link 할 수 있게 되었다. 더보기
AVD 파일 경로에 한글 문제 Emulator -avd "avd-Name" 뭐 이런 명령을 쓸때 avd는 보통 C:\Documents and Settings\김정우\.android 이런 식의 경로에 위치한다. 여기서 김정우 라는 글자가 한글이여서 android에서 인식 못하는 문제가 발생한다. 이럴 경우 다음과 같이 c:\.android 폴더로 avd 파일을 이동시켜서 해결한다. 이동 시킨 avd의 상대 path 관리는 android에서 직접 하는거 같다. android move avd -n "생성한 avd명" -p "경로" 예) android move avd -n avd_test -p c:\.android 더보기
Parcelable을 이용한 Remote Service Binding Android에 어떤 service를 넣어두고 여기저기 각각의 Application에서 하나의 service를 필요할 때 끌어다 쓰는 것을 하고 싶었다. ... 대부분 나와있는 예제는 APK 안에 activity + service를 같이 포함해 놓고 동작시키는 예제들이 많았다. 꼭 뭔가 하고 싶은 것들은 없더라... 에효 그래서 여기 저기 뒤지다가 하나 만들어 보았음 1. aidl 파일을 하나 만들어야 한다. IRemoteService.aidl 파일을 하나 만들어 넣는다. package test.remoteService interface IRemoteService{ void test1(); } 2. ADT가 포함된 eclipse 에서는 java 파일을 build하기 전에 aidl 파일이 있으면 먼저 bu.. 더보기
Android interface definition language Android 는 aidl을 이용하여 service를 위한 IPC를 지원할 수 있다. 프로세스 간에 객체를 전달하려면, OS 수준 기본요소로 해체할 필요가 있다. (즉, data를 OS가 이해하는 prmitive로 분해한다는 의미) 커스텀 클래스 객체 전달 Parcelable 인터페이스를 구현 public class AIDLTest implements Parcelable{ ...... public void writeToParcel(Parcle out, int flags){ out.writeLong(date.getTime()); out.writeString... out.writeDouble } public static final Parcelable.Create CREATE = new Parcelable.C.. 더보기
Android dynamic link 현재 안드로이드에서 제공되는 JNI를 이용할 경우 생성된 .so 파일이 다른 so를 참조하고 있으면 문제가 된다. 간단하게 말하면 못 찾는다. 별의 별 test를 다 해 본 결과... 안된다는게 결론... data/data//lib 에 들어있는 .so는 system/lib에 있는 .so를 1개만 로딩 할 수 있다. Why ? 이유는 linker 문제인 것으로 판단된다. 어떤 똑똑한 사람이 이걸 정리해 놨길래 나도 해봤다. 하지만 실패하였다. 내 PC 의 사용자 이름이 한글로 되어있어서... google에서 배포한 sdk에 셋팅된 emulator는 ....................... 문제 없는데 내가 ubuntu에서 직접 생성한 img는 문제가 되는 구나 어쨌거나.. 영문으로 사용자 등록된 pc를 .. 더보기
shared object 사용하기 linux shared object 생성하기 arm-none-linux-gnueabi-gcc -l/usr/lib/jvm/java-6-sun/include -l/usr/lib/jvm/java-6-sun/include/linux -fpic -c test_nativeTest.c arm-none-linux-gnueabi-ld -T armelf_linux_eabi.xsc -shared -o test_nativeTest.so test_nativeTest.o java code에서 so를 호출한다. class a{ static{ system.load(/data/com_test_nativeTest.so); } } 생성한 so 를 adb push test_nativeTest /data/ 명령을 이용하여 emulator에 .. 더보기
javah javac로 만들어 놓은 class 중 jni 를 사용하기 위한 header를 추출하기 위한 방법이다. 일반적으로 package가 설정되지 않은 파일의 경우는 다음과 같이 실행된다. test.java javac test javah test 하지만 package가 있는 파일의 경우는 package 명을 붙여줘야 에러가 나지 않는다. src 의 package 구조가 다음과 같다면 src /a/testpkg/test.java javac /src/a/testpkg/*.java -d bin bin 폴더에 다음과 같은 구조로 파일이 생성된다. bin/aa/testpkg/test.class javah 를 실행하기 위해서는 bin 폴더로 이동한다. 다음과 같이 명령어를 내리면 test.h 파일이 생성된다. javah .. 더보기
What is Android? Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language. Android는 운영체제, 미들 웨어, key 어플리케이션을 포함한 모바일 장치를 위한 software stack이다. Android SDK는 tools, 어플리케이션 최초 개발에 필요한 API를 제공한다. Features Applicatio.. 더보기
Android platform build full source 획득 방법 http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=4 여기에 있는 내용 참조 ㅎㅎ 잘 정리되어있다 쭉~ 따라하자 빌드가 완료되면 3개의 img 파일이 생성된다. ~mydroid/out/target/product/generic/ramdisk.img ~mydroid/out/target/product/generic/system.img ~mydroid/out/target/product/generic/userdata.img 3개의 img 파일을 window에 android platform images가 설치된 곳으로 복사한다. 보통 다음과 같다 ->{android_sdk_folder}/platfo.. 더보기
Android 시작하기 SDK 다운로드 http://developer.android.com/sdk/1.5_r2/index.html 2009.06.03 다운로드 되고 있음 ㅋㅋ (현재) 다운로드 안되면 http://developer.android.com/sdk 압축 해제하고 tools의 경로를 환경변수 PATH 추가한다. (D:\android-sdk-windows-1.5_r2\tools) eclipse 설치 http://www.eclipse.org eclipse - adt 설치 android development tools eclipse 구동 상단 메뉴 - help ->software update 선택 팝업 화면 구동 Available Software 탭 선택 우측 add-site 버튼 클릭 http://dl-ssl.google.. 더보기