环境

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中添加(注意是添加原来的不变)

defaultConfig {

 

    ndk {

  moduleName "hello_jni"

    }

    sourceSets.main {

     jni.srcDirs = []

     jniLibs.srcDir "src/main/libs"

          }

 

Gradle scripts gradle.properties 增加

android.useDeprecatedNdk=true

6. 点击File->Setting->Tools->External Tools 点击“+”,添加如下以下三项(非必须,也可以用命令行实现)

(1)javah

(2) ndk-build

(3)ndk-build-clean

7.jni 文件夹上右键  NDK->java.h,可以看到控制台编译 ,有了菜单以后都会比较方便

同时jni文件夹下生成了文件 com_jcdh_jcli_myndk_MyJNIDemo.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!");
}

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!

DEMO 下载:

http://download.csdn.net/detail/q610098308/9509832

最新文章

  1. php面向对象学习
  2. WPF学习开发客户端软件-任务助手(已上传源码)
  3. ora-01031:insufficient privileges解决方法 - 转
  4. online training
  5. android MotionEvent中getX()和getRawX()的区别
  6. 第二百七十八天 how can I 坚持
  7. 创建maven项目出现的问题
  8. [Redux] Reducer Composition with combineReducers()
  9. 极化SAR图像基础知识(1)
  10. c++(选择排序)
  11. 最详细的div边距合并的问题和解决方法
  12. vue-cli按需加载,懒加载组件
  13. Lua完全自学手册(图文教程)
  14. Chapter 6 链表(上):如何实现LRU缓存淘汰算法?
  15. ubuntu 外接显示器
  16. mysql 开发进阶篇系列 5 SQL 优化(表优化)
  17. HDFS集群优化篇
  18. Spring AOP 之编译期织入、装载期织入、运行时织入(转)
  19. SCI投稿过程总结、投稿状态解析、拒稿后对策及接受后期相关问答
  20. c++虚函数&重写

热门文章

  1. Mybatis根据表自动生成相关代码
  2. 集合ArrayList
  3. BackTrack5-r3安装前需要的准备及说明
  4. Turing Tree_线段树&树状数组
  5. NullReferenceException UnityEngine.Transform.get_localPosition
  6. VoxelGrid体素滤波器对点云进行下采样
  7. squid常用调试命令
  8. aptitude解决Ubuntu各种依赖问题
  9. latch: cache buffers chains故障处理总结(转载)
  10. Updatepanel 注册javascript 方法