JNI Header 만들기.
javah로 jni 헤더를 만들 때
$프로젝트폴더 javah -classpath 프로젝트폴더\bin\classes 패키지명.클래스이름
하면 만들어지는데
Bitmap을 return 하는 native 함수를 만들려고하니까
Class android.graphics.Bitmap could not be found. 라고 뜨면서 안됨.
그래서 명령어에
javah -classpath 프로젝트폴더\bin\classes;sdk폴더\platform\android-버전\android.jar; 패키지명.클래스이름
하니까 빌드됨.
배치파일 만듬 (cmd에서 계속 명령어치기 귀찮아서..)
메모장으로 복사해서 만들어도 되고 이걸 다운받아서 써도된다.
@echo off
title JNI Header Maker
REM 배치파일 실행되는 폴더경로
set curPath=%cd%
REM 안드로이드 버전
set aVersion=14
REM sdk 설치된 경로 (사용자에따라 바꿔줘야함)
set sdkPath=C:\Users\nfs\android-sdks\platforms\android-%aVersion%\android.jar
REM native method들 선언된 클래스의 패키지명
:INPUT_PACKAGE
set /p packageName=패키지명 입력(ex : com.example.TEST) :
if %packageName% == "" goto INPUT_PACKAGE
REM native method들 선언된 클래스의 클래스명
:INPUT_CLASS
set /p className=클래스명 입력 :
if %className% == "" goto INPUT_CLASS
:EXEC
echo %packageName%.%className%
@echo on
javah -classpath %curPath%\bin\classes;%sdkPath%; %packageName%.%className%
@echo off
pause
sdkPath와 aVersion만 각자 환경에 맞게 바꾸고
배치파일을 프로젝트 root폴더에 넣고 실행하면 된다. (아마도)
(여기 sdkPath가 있는 이유는 Android 헤더파일을 쓸려고 안 쓰면 없어도될듯)
AndroidBitmap_getInfo 가 undefine 됐다고 뜨면.
Android.mk 에
LOCAL_LDLIBS := -llog -ljnigraphics -landroid 추가.
'Java/Android' 카테고리의 다른 글
NDK stl porting (0) | 2015.07.23 |
---|---|
UnsatisfiedError : couldn't load from loader dalvik.system.pathloader (0) | 2015.07.07 |
jni 참조용. (0) | 2015.06.26 |
JAVA 이클립스에서 프로젝트 파일 jar 로 만들기 (0) | 2014.11.27 |