http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=20
< Dalvik JNI 를 이용한 cpp 함수 추가 및 SDK 에서 이용하기 >
1) JNI 는 native code ( c or cpp ) 를 java VM 에서 사용하기 위한 규격이며 Dalvik VM 도 지원하고 있습니다.
2) 첨부된 NexusGipump.java 파일을 mydroid/frameworks/base/graphics/java/android/graphics 디렉토리에 추가
3) 첨부된 NexusGipump.cpp 파일을 mydroid/frameworks/base/core/jni/android/graphics 디렉토리에 추가
4) mydroid/frameworks/base/core/jni/Android.mk 파일을 열어, 아래 라인을 적당한 곳에 추가
android/graphics/NexusGipump.cpp
5) mydroid/frameworks/base/core/jni/AndroidRuntime.cpp 파일을 열어, 아래 라인을 82줄 이후 적당한 곳에 추가
extern int register_android_graphics_NexusGipump(JNIEnv* env);
6) mydroid/frameworks/base/core/jni/AndroidRuntime.cpp 파일을 열어, 아래 라인을 1006줄 이후 적당한 곳에 추가
REG_JNI(register_android_graphics_NexusGipump),
7) make update-api 명령 실행 : 새로이 추가된 java class 를 android platform 에 등록
8) make 명령 실행 : android platform 컴파일 ( 이때 JDK 1.6 계열을 사용하셔야 됨 )
9) make sdk 명령 실행 : android SDK 컴파일 ( 이때 JDK 1.5.0 으로 바꿔 사용하셔야 됨 )
10) mydroid/out/host/linux-x86/sdk/android-sdk_eng.nexus_linux-x86/android.jar 파일을
기존 SDK 영역인 PC 의 android/android-sdk-windows-1.0_r1 디렉토리로 overwrite ( 물론 먼저 backup 하시고요 )
11) mydroid/out/target/product/generic 디렉토리의 ramdisk.img, system.img, userdata.img 파일을
기존 SDK 영역인 PC 의 android/android-sdk-windows-1.0_r1/tools/lib/images 디렉토리로 overwrite ( backup 필요 )
12) eclipse 를 열어 간단한 android java project 를 만들고 아래와 같이 테스트
NexusGipump ng_instance = new NexusGipump();
ng_instance.clear_screen(0xf800);
* 보통 JNI 는 새로운 하드웨어 기능을 추가하고 이를 contents 에서 사용하고자 할때 많이 활용되는 기술입니다.
< Dalvik JNI 를 이용한 cpp 함수 추가 및 SDK 에서 이용하기 >
1) JNI 는 native code ( c or cpp ) 를 java VM 에서 사용하기 위한 규격이며 Dalvik VM 도 지원하고 있습니다.
2) 첨부된 NexusGipump.java 파일을 mydroid/frameworks/base/graphics/java/android/graphics 디렉토리에 추가
3) 첨부된 NexusGipump.cpp 파일을 mydroid/frameworks/base/core/jni/android/graphics 디렉토리에 추가
4) mydroid/frameworks/base/core/jni/Android.mk 파일을 열어, 아래 라인을 적당한 곳에 추가
android/graphics/NexusGipump.cpp
5) mydroid/frameworks/base/core/jni/AndroidRuntime.cpp 파일을 열어, 아래 라인을 82줄 이후 적당한 곳에 추가
extern int register_android_graphics_NexusGipump(JNIEnv* env);
6) mydroid/frameworks/base/core/jni/AndroidRuntime.cpp 파일을 열어, 아래 라인을 1006줄 이후 적당한 곳에 추가
REG_JNI(register_android_graphics_NexusGipump),
7) make update-api 명령 실행 : 새로이 추가된 java class 를 android platform 에 등록
8) make 명령 실행 : android platform 컴파일 ( 이때 JDK 1.6 계열을 사용하셔야 됨 )
9) make sdk 명령 실행 : android SDK 컴파일 ( 이때 JDK 1.5.0 으로 바꿔 사용하셔야 됨 )
10) mydroid/out/host/linux-x86/sdk/android-sdk_eng.nexus_linux-x86/android.jar 파일을
기존 SDK 영역인 PC 의 android/android-sdk-windows-1.0_r1 디렉토리로 overwrite ( 물론 먼저 backup 하시고요 )
11) mydroid/out/target/product/generic 디렉토리의 ramdisk.img, system.img, userdata.img 파일을
기존 SDK 영역인 PC 의 android/android-sdk-windows-1.0_r1/tools/lib/images 디렉토리로 overwrite ( backup 필요 )
12) eclipse 를 열어 간단한 android java project 를 만들고 아래와 같이 테스트
NexusGipump ng_instance = new NexusGipump();
ng_instance.clear_screen(0xf800);
* 보통 JNI 는 새로운 하드웨어 기능을 추가하고 이를 contents 에서 사용하고자 할때 많이 활용되는 기술입니다.