android 使用jni

1.編寫接口java 文件
package com.liux.example.jnitest;
public class JniTest {
    public native static void sayHello();
    public native static String  stringFromJNI();
}java

2. 根據該文件生成相應的.h文件(com_liux_example_jnitest_JniTest.h),命令以下:
javah -cp app/build/intermediates/classes/debug/  -d jni com.liux.example.jnitest.JniTest
注意:
若是是用得Activity做爲含有native方法的接口類:須要包含相應的支持包:
javah -cp ~/Android/Sdk/extras/android/support/v7/appcompat/libs/android-support-v7-appcompat.jar:
  ~/Android/Sdk/extras/android/support/v4/android-support-v4.jar:~/Android/Sdk/platforms/android-23/android.jar:
  ~/android_workspace/JniTest/app/build/intermediates/classes/debug/  -d jni com.liux.example.jnitest.HelloJni
(windows分割方式爲';',linux下爲':')  
  linux

3.編輯.c文件(hello-jni.c),內容以下:
#include <jni.h>
#include <android/log.h>android

#define  LOG_TAG    "native-dev"
#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)git

JNIEXPORT void JNICALL Java_com_liux_example_jnitest_JniTest_sayHello
  (JNIEnv* env, jobject obj) {
  __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "Need to print : %d %s",1, "hello-jni");
  };github


JNIEXPORT jstring Java_com_liux_example_jnitest_JniTest_stringFromJNI( JNIEnv* env,
                                                  jobject thiz ){windows


    return (*env)->NewStringUTF(env, "Hello from JNI !  Compiled with ABI .");
}app

4.編輯Android.mk,內容以下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
LOCAL_LDLIBS    := -lm -llog
include $(BUILD_SHARED_LIBRARY)ui

5.編輯Application.mk,內容以下:
APP_ABI := allspa

6.生成.so
 ~/download/android-ndk-r10e/ndk-builddebug

7.把生成的libs文件夾拷貝到app下
8.運行程序

代碼見:https://github.com/dunyuling/JniTest

相關文章
相關標籤/搜索