注意:此文是我博客看到的,地址http://blog.csdn.net/q610098308/article/details/51313341
后面我加入了我的实践时应注意的地方,欢迎一起学习! 为蓝色部分:
环境
windows 8 (注:其实 Linux 开发可能更方便)
Android Studio 2.1;
一 . 下载 安装android-ndk开发包
地址:链接:http://pan.baidu.com/s/1c1GSiy8 密码:h7gr;
下载完成后最好解决到一个根目录,中间不要有空格,中文;
二.
1、新建项目MyJNIDemo,选择空Activity就可以;
2. 新建 com.jcdh.jcli.MyJNI 类
public class MyJNI {
static {
System.loadLibrary("hello_jni");
}
public native String getDataFromJni();
}
3、工程app New->Folder->JNI Folder;
4. MainActivity 实现:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView show = (TextView)findViewById(R.id.show);
MyJNI myJni = new MyJNI();
show.setText(myJni.getDataFromJni());
}}
5.Gradle scripts gradle ->build-gradle 在defaultConfig中添加(注意是添加,原来的不变) 注意:是project 下的 内层的build.gradle 中
defaultConfig {
ndk {
moduleName "hello_jni"
}
sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir "src/main/libs"
}
Gradle scripts gradle.properties 增加 注意:gradle.properties里面 ,添加如下:
android.useDeprecatedNdk=true
6. 点击File->Setting->Tools->External Tools 点击“+”,添加如下以下三项(非必须,也可以用命令行实现) 注意:两个$中间的内容是 点击 Insert macro... 找到的,后面是手写的
(1)javah
(2) ndk-build 注意: Working directory中 和图上保持一样
(3)ndk-build-clean 注意:program:也是你的NDK的路径
7.jni 文件夹上右键 NDK->Java.h,可以看到控制台编译 ,有了菜单以后都会比较方便
同时jni文件夹下生成了文件 com_jcdh_jcli_myndk_MyJNIDemo.h
注意:第7步我的是 右击我们创建的MyJNI这个类,——External Tools——javah 就会生成 .h文件,如图
8.jni目录下新建hello_jni.cpp文件 注意:复制如下代码,但前面不能有空格
#include "com_jcdh_jcli_myjnidemo_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_jcdh_jcli_myjnidemo_MainActivity_getDataFromJni
(JNIEnv * env, jobject obj)
{
return env->NewStringUTF("hello world!");
}
注意:
1: #include "com_jcdh_jcli_myjnidemo_MainActivity.h"中,是自己刚生成的 .h的名字
2:JNIEXPORT jstring JNICALL Java_com_jcdh_jcli_myjnidemo_MainActivity_getDataFromJni 是我们生成的 .h文件中的,去 .h文件中复制
3:return env->NewStringUTF("hello world!"); 中的 hello world 就是我们今天要显示的内容,我们在改 hello world 的内容后,
需要我们把 生成的 libs 和obj 和 .h删除掉,然后点击 MyJNI右击 重新生成 .h , 如第7步
9.jni目录下分别新建Android.mk与Application.mk
Android.mk 中
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello_jni
LOCAL_SRC_FILES := hello_jni.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk 中
APP_MODULES := hello_jni
APP_ABI := all
注意:以上不能有空格
10. 右键jni文件夹,ndk->ndk-build,编译
成功后,运行即可在手机上输出 hello world!
注意:我的是 jni——>External Tools——>ndkBuild
然后运行Demo ,就会显示 hello world!
DEMO 下载: