Android studio 를 사용 하여 작은 jni 프로그램 을 만 듭 니 다.
2.Android Studio 설정 ndk 경로 열기(또는 ndk 다운로드)
3.클래스 를 만 들 고 다음 그림 과 같은 native 방법 을 정의 합 니 다.
4.javac 명령 으로
HelloWorld.java
를 컴 파일 한 다음javah -jni
명령 으로 컴 파일 하여 jni 에 필요 한 헤더 파일 가 져 오기파일 이 있 는 위치 로 들 어가 javac 를 실행 합 니 다.
여기 서 주의해 야 할 것 은 다음 그림 디 렉 터 리 와 같은 명령
javah -jni
,명령javah -jni
패키지 이름 으로 뒤로 물 러 나 야 한 다 는 것 입 니 다.헤더 파일 을 가 져 오 는 데 많은 구덩이 가 있 습 니 다.오류 가 발생 하면
'com.zsy.hellojni.HelloWorld'
클래스 파일 을 찾 을 수 없습니다.이 명령javah -classpath . -jni
을 시험 해 볼 수 있 습 니 다.컴 파일 에 성공 하여 구 덩이 를 만 나 지 못 하면・・・\src\main\java
디 렉 터 리 아래 에서.h 파일 을 볼 수 있 습 니 다.5.다음 항목 에 jni 디 렉 터 리 를 만 들 고 방금 생 성 된.h 파일 을 이 디 렉 터 리 로 잘라 냅 니 다.
6.이.h 파일 의 내용 을 살 펴 보 겠 습 니 다.이 안 은 자바 의 개념 으로 볼 때 인터페이스 안의 추상 적 인 방법 에 해당 합 니 다.우 리 는.c 파일 을 만들어 서 이 방법 을 실현 하 는 동시에 우리 가 정의 한 native 방법 을 실현 해 야 합 니 다.
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_zsy_hellojni_HelloWord */
#ifndef _Included_com_zsy_hellojni_HelloWord
#define _Included_com_zsy_hellojni_HelloWord
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_zsy_hellojni_HelloWorld
* Method: helloWorld
* Signature: ()Ljava/lang/String;
* TODO:
*/
// Interface
JNIEXPORT jstring JNICALL Java_com_zsy_hellojni_HelloWorld_helloWorld
(JNIEnv * env, jclass);
/*
* Class: com_zsy_hellojni_HelloWorld
* Method: add
* Signature: (II)I
* TODO:
*/
JNIEXPORT jint JNICALL Java_com_zsy_hellojni_HelloWorld_add
(JNIEnv * env,jclass , jint , jint);
#ifdef __cplusplus
}
#endif
#endif
7.우 리 는 jni 디 렉 터 리 아래 hello 를 만 듭 니 다.jni.c 파일 로.h 파일 의 추상 적 인 방법 구현
// c , native , .h
// .h
#include <com_zsy_hellojni_HelloWord.h>
//
JNIEXPORT jstring JNICALL Java_com_zsy_hellojni_HelloWorld_helloWorld
(JNIEnv *env, jclass jobj) {
return (*env)->NewStringUTF(env,"HelloWorld jni ");
}
// a+b
JNIEXPORT jint JNICALL Java_com_zsy_hellojni_HelloWorld_add
(JNIEnv *env, jclass jobj, jint a, jint b){
return a+b;
}
8.다음은 build.gradle 에 ndk 설정 을 추가 합 니 다.
defaultConfig {
//...
ndk {
moduleName "Hello"// so
abiFilters "armeabi", "armeabi-v7a", "x86"//cpu
}
}
9.프로젝트 rebuild 를 한 후에 우 리 는./build 에서 생 성 된 so 파일 을 볼 수 있 습 니 다.10.이제 우 리 는 MainActivity 에서 그 두 개의 native 방법 을 호출 할 수 있다.
static {
// build.gradle moduleName
System.loadLibrary("hello");
}
TextView textView = (TextView) findViewById(R.id.tv);
String s = HelloWorld.helloWorld();
int add = HelloWorld.add(3, 66);
textView.setText(s+"
"+" : "+add);
여기까지.간단 한 jni 프로그램 하나 쓰 면 돼 요.
총결산
위 에서 말 한 것 은 안 드 로 이 드 스튜디오 를 이용 하여 작은 jni 프로그램 을 만 드 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.