Android NDK
2016-12-09 00:00
330 查看
Github
https://github.com/zhaohuiyuliang/androidJni
1.创建Android项目
2.编写java类JniUtils
3.生成.h文件
切换到AS的Terminal
cd到java目录下
执行javah命令
javah -jni encoding utf-8 包名.JniUtils
生成com_ndkdemo_JniUtils.h文件
4.创建.c文件
app目录下创建jni目录
创建hello-jni.c文件
5.创建Android.mk文件
jni目录下创建Android.mk文件
6.生成.so文件
cd到app目录
执行ndk-build脚本命令
ndk-build
obj目录可以删除,保留libs
7.配置app build.gradle
android节点下
8.调用.so接口
9.调试c
https://github.com/zhaohuiyuliang/androidJni
1.创建Android项目
2.编写java类JniUtils
public class JniUtils { static { System.loadLibrary("hello-jni"); } public native String getString(); }
3.生成.h文件
切换到AS的Terminal
cd到java目录下
执行javah命令
javah -jni encoding utf-8 包名.JniUtils
生成com_ndkdemo_JniUtils.h文件
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_ndkdemo_JniUtils */ #ifndef _Included_com_ndkdemo_JniUtils #define _Included_com_ndkdemo_JniUtils #ifdef __cplusplus extern "C" { #endif /* * Class: com_ndkdemo_JniUtils * Method: getString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_ndkdemo_JniUtils_getString (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
4.创建.c文件
app目录下创建jni目录
创建hello-jni.c文件
#include <jni.h> #include "android/log.h" JNIEXPORT jstring JNICALL Java_com_ndkdemo_JniUtils_getString (JNIEnv *env, jobject instance)){ return (*env)->NewStringUTF(env, "Hello-jni !"); }
5.创建Android.mk文件
jni目录下创建Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY)
6.生成.so文件
cd到app目录
执行ndk-build脚本命令
ndk-build
obj目录可以删除,保留libs
7.配置app build.gradle
android节点下
sourceSets { main { jniLibs.srcDir 'libs' jni.srcDirs = [] } }
8.调用.so接口
JniUtils jniUtils = new JniUtils(); mTextMessage.setText(jniUtils.getString());
9.调试c
相关文章推荐
- 使用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的冲突问题
- android:installLocation简析
- android searchView的关闭事件