1、编写java代码,指定lib和native方法。
package com.taven.myapplication;

package com.taven.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

static {
System.loadLibrary("jni-lib-1");
}

private native void sayHelloJni();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main);
}
}

2、新建jni文件夹,在jni文件夹中新建Android.mk文件

其中mk文件内容如下:
#指定编译的文件夹 指定当前文件目录
LOCAL_PATH := $(call my-dir)
#编译器会定义很多的临时变量,中间变量,最好清空所有的中间变量。
include $(CLEAR_VARS)
#编译器编译出来的模块名称
LOCAL_MODULE:= jni-lib-1
#编译器编译出来的源代码的名称
LOCAL_SRC_FILES:= jni-lib-1.c
#编译一个动态库,静态库
#静态库 文件名.a 包含所有的函数并且函数运行的依赖,体积大,包含所有的API
#动态库 文件名.so 包含函数,不包含函数运行的依赖,体积小,运行的时候,去操作系统寻找需要的API
include $(BUILD_SHARED_LIBRARY)

3、在app的build.gradle下添加mk文件路径

externalNativeBuild {
ndkBuild {
path file("src\\main\\jni\\Android.mk")
}
}

4、可以添加排除选项,指定生成指定平台so文件。

在app->build.gradle文件中的android节点下的defaultConfig中添加代码如下:
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}

5、重新生成一下项目(Rebuild),当鼠标置于native方法上时,就会出现生成jni代码提示。按下Alt+Enter,自动生成jni文件。

6、填写c代码

7、再次编译项目,生成的so库目录在app/build/intermedieates/ndkBuild/debug/obj/local/目录下;

8、运行即可。

最新文章

  1. js实现toggleClass
  2. Java暗箱操作之自动装箱与拆箱
  3. FileInputStream和BufferedInputStream的区别
  4. 【JAVA之泛型】
  5. Solr资料
  6. sql server 判断是否存在数据库,表,列,视图
  7. CodeForces 474.D Flowers
  8. 【零基础学习iOS开发】【02-C语言】11-函数的声明和定义
  9. C# 发送邮件整理,包括控制台程序、WPF、WebForm 及 ASP.NET MVC
  10. SQL语句打印四个方向的9 9 乘法表
  11. IOS 真机调试以及发布应用 1
  12. C#委托好处知多少
  13. use EXPORT和use EXPORT_OK
  14. js-面试题之字符串
  15. 关于WAMPserver配置httpd.conf无法修改根目录解决方法
  16. 弹性盒布局display:flex详解
  17. WPF 10天修炼 第十天- WPF数据绑定
  18. 洛谷P1115 最大字段和【线性dp】
  19. Arch Linux 软件包的查询及清理
  20. json数据交互

热门文章

  1. H5 移动调试全攻略
  2. excel导出简单示例(jxl jar包)
  3. Mac系统下安装Homebrew后无法使用brew命令
  4. Druid数据源配置入门
  5. git代码提交步骤
  6. CDQ分治&整体二分学习个人小结
  7. HTML5: HTML5 Web 存储
  8. spring mvc 程序
  9. Oracle Database的安装与卸载
  10. mac查看python安装路径