Android 썸네일형 리스트형 Kernel build kernel build > cd ~/mydroid > git clone git://android.git.kernel.org/kernel/common.git kernel > cd kernel > git branch * android-2.6.27 > git clone git://android.git.kernel.org/kernel/common.git kernel > git branch android-2.6.27 * android-2.6.29 for ADM64 + Ubuntu 9.10 > dpkg --get-selections | grep -v deinstall (install package listing...) 더보기 Toast Message 사용하기 Android application에서 Toast Message를 사용하면 어플리케이션 상황과 관계없이 system UI를 살짝 그릴 수 있다. 별로 대단한 일은 아니지만... 굳이 팝업 같은걸 만들어서 관리하는것 보다 잠깐 잠깐 noti를 주기에는 충분한거 같다 static Class Toast의 함수를 호출 하면 간단하게 ~ 해결 파라미터를 보면 첫번째가 activity에서 갖고오는 appllicationContext, 두번째가 보여주고 싶은 문구 "String값", 3번째가 시간, LENGTH_LONG, LENGTH_SHORT 또는 직접 시간을 넣을 수도 있다. Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show(); Toast.. 더보기 희소식 언제 부턴가 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 .. 더보기 JNI java code JNITest.java public class JNITest { public native void jniTest(); public native int jniTest1(int a, String aa); public native String jniTest2(JNIClass b, int bb, int bbb); public class JNIClass{ int z; int ss; } } -> 빌드하여 class 파일을 생성한다. java JNITest -> JNITest.class가 생성된다. 이제 native에 필요한 header를 생성한다. javah -jni JNITest JNITest.h JNITest_JNIClass.h 파일이 생성된다. 이제 C 코드로 native를 api를 작성한다.. 더보기 이전 1 2 3 4 다음