android 使用jni
2016-06-30 00:00
405 查看
摘要: jni 入门流程 及简单示例
1.编写接口java 文件
package com.liux.example.jnitest;
public class JniTest {
public native static void sayHello();
public native static String stringFromJNI();
}
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下为':')
3.编辑.c文件(hello-jni.c),内容如下:
#include <jni.h>
#include <android/log.h>
#define LOG_TAG "native-dev"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
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");
};
JNIEXPORT jstring Java_com_liux_example_jnitest_JniTest_stringFromJNI( JNIEnv* env,
jobject thiz ){
return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI .");
}
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)
5.编辑Application.mk,内容如下:
APP_ABI := all
6.生成.so
~/download/android-ndk-r10e/ndk-build
7.把生成的libs文件夹拷贝到app下
8.运行程序
代码见:https://github.com/dunyuling/JniTest
1.编写接口java 文件
package com.liux.example.jnitest;
public class JniTest {
public native static void sayHello();
public native static String stringFromJNI();
}
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下为':')
3.编辑.c文件(hello-jni.c),内容如下:
#include <jni.h>
#include <android/log.h>
#define LOG_TAG "native-dev"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
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");
};
JNIEXPORT jstring Java_com_liux_example_jnitest_JniTest_stringFromJNI( JNIEnv* env,
jobject thiz ){
return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI .");
}
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)
5.编辑Application.mk,内容如下:
APP_ABI := all
6.生成.so
~/download/android-ndk-r10e/ndk-build
7.把生成的libs文件夹拷贝到app下
8.运行程序
代码见:https://github.com/dunyuling/JniTest
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题