상세 컨텐츠

본문 제목

[NDK] - HelloJNI 예제

컴퓨터 언어/NDK

by cepiloth 2018. 9. 4. 21:59

본문

728x90
반응형


  • Android Activity


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.example.hellojni;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
 
public class HelloJni extends Activity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_hello_jni);
  
  TextView tv = new TextView(this);
  
 
  // jni 를 이용해서 호출할 메소드  입력
  tv.setText(stringFromJNI());
  
  setContentView(tv);
 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.hello_jni, menu);
  return true;
 }
 
 public native String stringFromJNI();
 static {
 
  // jni/hello-jni.c 호출할 so 파일 명을 입력
  System.loadLibrary("hello-jni");
 }
 
}
 
cs


  • hello-jni.c 파일 


1
2
3
4
5
6
7
8
9
10
11
#include <string.h>
#include <jni.h>
 
// 아래와 같이 구현을 한다.
 
// 메소드 명은 com.example.hellojni 패키지 명에 . 을 _ 로 치환
jstring Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv* env, jobject thiz)
{
 return (*env)->NewStringUTF(env, "Hello From JNI !");
}
 
cs


예제)
com.example.hellojni -> Java_com_example_hellojni_HelloJni_stringFromJNI

 com.

Java_com_ 

 example.

example_ 

 hellojni

hellojni_ 

 HelloJni.java

HelloJni_ 

 

  • Android.mk 파일 구성


1
2
3
4
5
6
7
8
LOCAL_PATH  := $(call my-dir)
 
include $(CLEAR_VARS)
 
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
 
include $(BUILD_SHARED_LIBRARY)
cs


  • NDK Build


android 프로젝트명/jni 폴더로 이동

android.mk 작성한 내용을 바탕으로 빌드

ndk-build

build 후에 obj/local/armeabi 폴더에 가게 되면은

libhello-jni.so 가 생성된 것을 알 수 있다.

728x90
반응형

'컴퓨터 언어 > NDK' 카테고리의 다른 글

NDK - NDK 작성시 주의점  (0) 2018.09.04

관련글 더보기

댓글 영역