下面通过一个案例说明一下,利用工具jni快速开发步骤

1.新建一个Android工程,命名为"03_对int数组加1",如下:

2. 在MainActivity.java中对addIntArray方法进行声明,如下:

3. 生成com_himi_addarray_MainActivity.h头文件,如下:

com_himi_addarray_MainActivity.h如下已经成功生成:

4. 利用快速工具,如下:

(1)选中"03_对int数组加1"工程,如下:

点击Android Tools ----> Add Native Support,如下:

点击Eclipse中的  窗口--->首选项,如下:

(2)接下来我们再次如下界面:

这个时候我们看看工程,发现:

同时打开Android.mk,如下:

上面默认生成的.cpp(C++)代码,直接把扩展名.cpp改成.c(addarray.cpp修改扩展名,同时Android.mk中也要修改),如下:

(3)打开addarray.c,我们会发现头文件jni.h没有关联好,显示下划线,怎么办?

选中"03_对int数组加1"工程,右击"属性",然后是"C/C++ General " --->"Paths and Symbols",如下:

之后jni.h头文件的下划线警告就会消失了。

(4)打开addarray.c文件,开始编写其中的代码:

jni函数声明在头文件Java_com_himi_addarray_MainActivity.h中,如下:

将上面的jni函数声明复制到addarray.c文件中(去掉JNIEXPORT 和 JNICALL,同时括号里添加形参),如下:

(5)回到这个MainActivity,如下:

同时让程序可以在多个平台运行,如下:

(6)布署程序到模拟器上运行,如下:

2. 工具开发jni(详细步骤)

(1)创建工程

(2)创建native方法

(3)配置ndk路径

  windows-->preference-->android-->ndk 找到ndk目录 ,确定

(4)右键工程-->android tools -->add native support  输入动态库的文件名称,确定

(5)把生成的.cpp文件改成.c,并且在Android.mk中也要.cpp改成.c

(6)右键工程-->properties-->c/c++ general -->paths and sysmbols -->includes -->点击add按钮-->点击file system-->找到一个任何一个平台的include目录

如: I:\android-ndk-r9\platforms\android-9\arch-arm\usr\include

(7)c工程师实现功能,在jni方法中调用

(8)在源代码中加动态库:

static {

    System.loadLibrary(".so文件名");

(9)调用native方法

(10)运行。

3. 总而言之,JNI开发流程可以概括为下面的步骤:

(1)在java中声明native方法
(2)编译java源文件得到class文件,然后通过javah命令导出JNI头文件
(3)实现jni方法(java中native声明的方法),使用C、C++实现
(4)编译成so库并在java中调用

Android(java)学习笔记262:JNI之工具快速开发步骤的更多相关文章

  1. Android(java)学习笔记206:JNI之工具快速开发步骤

    下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...

  2. java学习笔记37(sql工具类:JDBCUtils)

    在之前的内容中,我们发现,当我们执行一条语句时,每新建一个方法,就要重新连接一次数据库,代码重复率很高,那么能不能把这些重复代码封装成一个类呢,我们学习方法时,就学习到方法就是为了提高代码的利用率,所 ...

  3. Java学习笔记49(DBUtils工具类二)

    上一篇文章是我们自己模拟的DBUtils工具类,其实有开发好的工具类 这里使用commons-dbutils-1.6.jar 事务的简单介绍: 在数据库中应用事务处理案例:转账案例 张三和李四都有有自 ...

  4. Java学习笔记48(DBUtils工具类一)

    上一篇的例子可以明显看出,在增删改查的时候,很多的代码都是重复的, 那么,是否可以将增删改查封装成一个类,方便使用者 package demo; /* * 实现JDBC的工具类 * 定义方法,直接返回 ...

  5. Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件

    [前面的话] 身体慢慢已经快好了,感觉真好,哈哈. 这篇文章要通过Hibernate对数据库进行操作,而Netbeans可以直接通过数据库逆向生成对应的映射文件.基础文章,选择性阅读. [步骤] 1. ...

  6. Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  7. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  8. Android 数字签名学习笔记

    Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...

  9. 20145316许心远《Java学习笔记(第8版)》课程总结

    20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...

随机推荐

  1. SQL数据库中把一个表中的数据复制到另一个表中

    1.如果是整个表复制表达如下: insert into table1 select  * from table2 2.如果是有选择性的复制数据表达如下: insert into table1(colu ...

  2. mysql的perror

    eg: 执行:perror 1064 返回:MySQL error code 1064 (ER_PARSE_ERROR): %s near '%-.80s' at line %d           ...

  3. 最新 xode shareSDK使用分享

    shareSDK使用分享 什么是shareSDK ShareSDK实现第三方登录.分享.关注等功能. 为什么使用        快速,方便 如何使用 (1)官方下载ShareSDK        参照 ...

  4. PHP MySQLi

    PHP MySQLi 简介 PHP MySQLi = PHP MySQL Improved! MySQLi 函数允许您访问 MySQL 数据库服务器. 注释:MySQLi 扩展被设计用于 MySQL ...

  5. web项目环境搭建(1):建立一个maven项目

    一.maven简介以及常用概念 1.Maven是一个项目管理和整合的工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使 ...

  6. CSS各种选择器

    一.选择器 1.元素选择器 li{}最常用.最基本 2.派生选择器 li strong { } 标签间用空格分隔.定义了li标签中的strong标签的样式,css1中上下文选择器.css2中派生选择器 ...

  7. 利用google浏览器开发者工具调试网页(详)

    前端程序员或者在校大学生正在开发网页,如果想要测试或者通过测试优化网页结构,该怎么办呢?这就需要用到一款工具,chrome浏览器的开发者工具?本文写给尚不熟悉这个开发者工具的同学们或者同行们,话不多说 ...

  8. Python实现类似switch...case功能

    最近在使用Python单元测试框架构思自动化测试,在不段的重构与修改中,发现了大量的if...else之类的语法,有没有什么好的方式使Python具有C/C#/JAVA等的switch功能呢? 在不断 ...

  9. Swift—使用try?和try!区别-备

    在使用try进行错误处理的时候,经常会看到try后面跟有问号(?)或感叹号(!),他们有什么区别呢? 1.使用try?  try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方 ...

  10. 转:virtualbox+ubuntu设置共享文件夹

    1.       进入系统,安装增强功能,安装完关闭系统. 2.       在E盘下创建一个共享文件夹 gongxiang. 3.       设置->数据空间->固定分配,选择共享文件 ...