## 官网资料 (重要)
1. Create a new project with C/C++ support (入门)
https://developer.android.com/studio/projects/add-native-code#new-project
2.Hello JNI Callback (全面可用的demo)
https://github.com/android/ndk-samples/tree/main/hello-jniCallback
2.1 概念
https://developer.android.com/ndk/guides/concepts
2.2 Native Activity
https://github.com/android/ndk-samples/tree/main/native-activity
3.JNI tips (概念原理&技巧)
https://developer.android.com/training/articles/perf-jni#local-and-global-references
___________________________________________________________________________________
学习资料:
0.JNI tips
https://developer.android.com/training/articles/perf-jni#local-and-global-references
1.Android 开发 之 JNI入门 - NDK从入门到精通:
http://blog.csdn.net/shulianghan/article/details/18964835
2.C++静态库与动态库
http://www.cnblogs.com/skynet/p/3372855.html
3.Java官方文档(JNI部分链接)
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/index.html
4.慕课网视频:http://www.imooc.com/video/8024
学习笔记:
1,JNI概念:java本地接口,Java Native Interface 他是一个协议,该协议用用来沟通Java代码的和外部的本地C/C++代码,通过该协议
Java代码可以调用外部的本地代码,外部的C/C++代码可以调用Java代码;
2.JNI作用:JNI是连接框架层(Framework ----c/c++)和应用框架层(Application Framework ----Java)的纽带。
3.NDK与JNI区别:
(1)NDK:NDK是Google开发的一套开发和编译工具集,主要用于Android的JNI开发
(2)JNI:JNI是一套编程接口,用来实现Java代码与本地的C/C++代码进行交互
4.开发NDK程序流程(详细可参见博客与视频开发第一个NDK程序)
(1)创建Android工程
(2)在Java源文件中申明native方法
(3)在jni目录下创建C文件
(4)编写Android.mk文件
(5)NDK编译生成动态库(生成.so文件)
(6)在Java源文件中加载动态库
(7)运行