본문 바로가기

카테고리 없음

윈도우 안드로이드 스튜디오에서 빠르게 JNI 예제 수행하기

728x90

[문서]

-윈도우, 리눅스 JNI 예제에 이은 수행 일지!


[개념]


JNI 는 Java Native Interface의 약자로 Java 에서 다른 언어의 코드의 수행을 돕는 interface 이다.

이를 통해 안드로이드에서 c 나 c++ 코드를 실행시킬 수 있다.


[수행 목표]

Android 에서 JNI 수행  (C와 연동)

(-안드로이드 앱에서 특정 버튼을 누르면 JNI 를 통해 string을 반환하여 보이는 것이 구현 목표)


[수행 환경]

window 7 64 bit (intel i3 )

android-studio-bundle-141.2135290-windows (Android studio 1.3 버전)

android-ndk-r10e-windows-x86_64 (ndk : Native Development Kit)

jdk 1.8.0.51 설치

Gradle version 2.4

compile 'com.android.support:appcompat-v7:22.2.1'

compileSdkVersion 22
ㄴbuildToolsVersion "22.0.1"

SDK Platforms 

-Android 5.1 (Lollipop) API 22

SDK Tools 

- Android SDK Build Tools

- Android SDK Tools 24.3.3

- Android SDK Platform-Tools 22

- Android Support Repository, rev 16

- Android Support Library, rev 22.2.1 (얘는 중요-> support:appcompat, 이놈과 javah 와 관련  (*2))



[일지]

2015-08-17-10:~12:00 : javah 동작 성공

2015-08-17-16:00 : .mk  build.gradle 수정 시도 후 Sync 에러

2015-08-17-18:00 : APP_BUILD_SCRIPT 의 path 에러 잡음

2015-08-17-18:30 : env * struct 잡고 성공


[요약]

이건 빠르게 할 수 없음.ㅠㅠ

환경변수 설정 -> .java  ->.class -> jni 폴더  +  .h 생성 -> .c -> .mk  -> gradle



1단계 : 안드로이드 External Tools 설정 및 각종 환경 변수 확인. (jdk 관련된거 제외하고 기본 값으로 돌릴 것을 강력 추천)



2단계 : .java 파일 작성

(여기서 native method 선언)



3단계 : .class 파일 생성

(Make Project 또는 Clean Project 이후 Rebuild Project 를 수행하면 .class 파일이 생성된다.!)


4단계 : jni 폴더 생성 그리고  .h 파일 생성 

(javah 이용하여 자동 생성)


5단계 : .c 파일 작성 


6단계 : Android.mk, Application.mk  파일 작성


7단계 : build.gradle( Module : app) + local.properties 파일에서 내용 추가

이도 Davidlab.net 의 글을 참고. (*3)



이렇게 수정하고 sync 경고 뜬 거 OK 맞추고


 run 하면 끝!


[이슈]


(index *)External Tools 설정 : http://kanais2.tistory.com/m/post/171

(*3) .mk 작성 참고 : https://www.davidlab.net/ko/tech/using-the-android-ndk-with-android-studio-part1/

(*4) C 함수 struct 이슈 : http://www.phonesdevelopers.com/1772873/

NDK_PROJECT_PATH 이슈 : 임의로 NDK_PRJECT_PATH 를 환경 변수에 넣어 놓고 바꾸지 않은 상태에서 마지막 build 할때 일이었다. 이때  APP_BUILD_SCRIPT points to an unknown file 이런 에러 였고 해당 환경 변수 값을 지워도 계속 떴다.

지우고 리붓하니 해결됨.


(... 그리고 안드로이드 스튜디오 이용할 때 jni.h jni_md.h 이슈가 안난게 신기함)