位置: 编程技术 - 正文

Android jni开发资料--NDK环境搭建(安卓开发)

编辑:rootadmin

推荐整理分享Android jni开发资料--NDK环境搭建(安卓开发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android开发项目,android开发平台,安卓项目开发,android开发者平台,android开发平台,安卓开发jd,安卓开发,android开发平台,内容如对您有帮助,希望把文章链接给更多的朋友!

谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK。而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了。只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在执行Cygwin,然后传递ndk-build作为参数,这样就能让Eclipse自动编译NDK了。那么我们现在开始吧:

一、关于NDK的一点解释:

NDK全称:Native Development Kit。 NDK提供了一系列的工具,帮助开发者快速开发C(或C&#;&#;)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

二、NDK坏境搭建:

注意事项:目前已经出了NDK-r9b了,由于作者写这篇日志的时候 当时下载的还是NDK-r8c,所以仍以NDK-r8c为例来讲解。

操作类&#;,从ndk-7后,谷歌已经改良了ndk的操作,不需用使用cygwin来交叉编译了,这大大的提高了我们的开发速度。

(1)下载安装NDK-r8c。

下载地址: (b)在弹出的【Choose configuration type】对话框,选择【Program】,点击【OK】: (c)在弹出的【Edit Configuration】对话框中,配置选项卡【Main】。 在“Name“中输入新builders的名称(这个名字可以任意取)。

在“Location”中输入nkd-build.cmd的路径(这个是下载完ndk8后解压后的路径,这个建议放在根目录下面,路径不能有空&#;和中文)。根据各自的ndk路径设置,也可以点击“Browser File System…”来选取这个路径。 在“Working Diretcoty”中输入TestNdk位置(也可以点击“Browse Workspace”来选取TestNdk目录)。如图1

图1

(d)继续在这个【Edit Configuration】对话框中,配置选项卡【Refresh】。如图2 勾选“Refresh resources upon completion”, 勾选“The entire workspace”, 勾选“Recuresively include sub-folders”。

图2

(e)继续在【Edit Configuration】对话框中,配置选项卡【Build options】。 勾选“After a “Clean””,(勾选这个操作后,如果你想编译ndk的时候,只需要clean一下项目 就开始交叉编译) 勾选“During manual builds”, 勾选“During auto builds”, 勾选“Specify working set of relevant resources”。如图3

图3

点击“Specify Resources…”勾选TestNdk工程中新建的“jni“目录,点击”finish“。 点击“OK“,完成配置。 如图4

图4

到此,恭喜你,编译环境以及成功搭建完毕!

那么搭建完了,当然要玩一玩了,好了,下面我们来跑一个demo测试一把,让你了解一下ndk的开发流程

Android jni开发资料--NDK环境搭建(安卓开发)

三、NDK程序demo的开发(下面是重点,请仔细查看)

1.在TestNdk工程中新建一个JniClient.class(为了调用C/C&#;&#;代码),其内容如下:

2.生成 .h 的c&#;&#;头文件

(1)用cmd命令定位到JniClient.class 所在目录,输入“javac JniClient.java“后回车,生成JniClinet.class文件(如果是用的Eclipse建的工程,在TestNdkbinclassescomndktest目录下就已经有JniClinet.class文件了)。

(2)将JniClinet.class拷贝到TestNdkbinclassescomndktest目录,将cmd命令定位到TestNdkbinclasses目录,输入”javah com.ndk.test.JniClient“后回车,在TestNdkbinclasses目录下就生成了C&#;&#;头文件com_ndk_test_JniClient.h

com_ndk_test_JniClient.h的文件内容如下:

3.在jni目录下新建一个Android.mk文件,其内容如下(关于mk文件需要注意,很重要,还有c和c&#;&#;文件的mk文件还不一样,此处是调用c语言的mk文件,至于其他的怎么调用,这个自己去百度吧,在此就不多说了)

4. 将刚刚手动生成的com_ndk_test_JniClient.h拷贝到TestNdk工程的jni目录下,

然后新建一个com_ndk_test_JniClient.c文件完成头文件中函数的实现,其内容如下(本来想写两个方法的,现在只讲解第一个方法,返回一个字符串“HelloWorld from JNI ”,另一个方法是一个a&#;b的运算,方法写到这里,感兴趣的可以自己去研究):

com_ndk_test_JniClient.c

此刻,当编辑com_ndk_test_JniClient.c并保存后,project下的—clean 一下工程,就可以看到TestNkd工程下的obj/local/armeabi目录下将自动生成libTestNdk.so库。

5.在TestNdkActivity.java中完成对JniClient.java中函数的调用(首先静态加载动态链接so库):

6.运行TestNdk工程,在控制台中可以看到界面输出来自com_ndk_test_JniClient.c 文件中的“HelloWorld from JNI ! "了。

NDK实例到此完成。

后续更复杂的操作就需要深入的学习NDK/JNI了,

比如C/C&#;&#;与Java的数据类型转换,以及Android.mk文件的编写&#;式等。

如果有什么问题,欢迎沟通交流!非常感谢您对andye的关注!关于.h文件怎么生成,可以看我另一篇日志,虽然是用cygwin写的,有点旧,但是里面有关于怎么生成.h的截图,供参考,地址为:

近期有朋友需求,忘记上传一份demo了,那么我重新整理了一份demo,各位朋友可以下载学习:

百度网盘下载地址:

demo图片如下:

andriod+nfc 文章译自:AdvancedNFC本文档介绍了高级NFC,如与各种标签技术协作,NFC标签写入和前台调度,它允许应用程序在前台处理的intent,即使当其他应用程序过

使用Jsoup 抓取页面的数据 需要使用的是jsoup-1.7.3.jar包,如果需要看文档可以到官网:

QQ登录 AndroidManifest.xml?xmlversion="1.0"encoding="utf-8"?manifestxmlns:android="

标签: 安卓开发

本文链接地址:https://www.jiuchutong.com/biancheng/376579.html 转载请保留说明!

上一篇:Android AsyncTaskLoader需要注意的问题

下一篇:andriod+nfc

  • 一般纳税人销售货物税率
  • 增值税纳税申报表模板
  • 小微企业企业所得税税率变化
  • 建筑业预缴企业所得税
  • 信用减值损失与坏账准备关系
  • 个体户每月开票超3万
  • 私立医院申报程序
  • 为什么生产车间地板是绿色的
  • 科目汇总表会计核算形式
  • 价外补贴需要交增值税吗
  • 应付账款收不回,可否转营业外收入
  • 如何减少资产负债表上的资本公积
  • 实收资本重复交的印花税可以申请退税吗?
  • 工程款发票遗失怎么处理
  • 当期损益包括营业外收支吗
  • 一般纳税人所得税率是多少
  • 旧房转让如何缴纳土地增值税
  • 天猫店不开发票会被扣多少分
  • 现金福利需要发票吗
  • 母公司吸收合并全资子公司
  • 个人交汽车购置税流程
  • 支付董事会成员津贴计入什么科目
  • 租房合同开发票的金额要和合同一致吗
  • 年增收节支总额与新增利税的关系
  • 如何彻底删除QQ频道私信
  • 企业给学校捐款的申请怎么写
  • wordpress portfolio
  • linux命令行使用鼠标
  • php fetchall
  • 小规模年底税金怎么做账
  • 委托银行收款的会计分录怎么写
  • php7安装教程详解
  • 电子承兑可以提前贴现吗
  • vuex model
  • php获取当前定位
  • php实现购物车功能源代码
  • 设备维修产生的人工费怎么开发票
  • php 文件系统
  • chrome 浏览器插件开发
  • vue3当中如何监听新增的属性
  • 应收账款科目有哪些类别
  • php的默认网站目录是
  • 员工个人所得税申报方式选哪个
  • 管理人员工资结构图
  • 购买商品或服务的人称为
  • 保险公司给员工奖励是违法的吗
  • 库存暂估入账的会计分录
  • 股权转让产生的个人所得税
  • 本年利润会计处理流程
  • 所得税汇算清缴调整后要账务处理吗
  • 发票盖错章怎么擦掉
  • 其它应付款是否可以抵扣
  • 银行多扣了钱法律是怎么判
  • 增值税一般纳税人企业对同属于增值税
  • 专项应付款的账务处理营业外收入
  • 农产品加计扣除怎么计算
  • 多打的投资款怎么入账
  • 出库未开发票
  • 财务会计制度及核算软件备案怎么填写
  • 个体工商户和小规模纳税人的区别
  • 系统多交税款放在哪里
  • 记账凭证分为哪几类,应具备哪些主要内容
  • win10商店是什么
  • Win10 Mobile 10572快速配置更新推送 Win10 Mobile 10572升级体验
  • Mac苹果系统怎么转换中文
  • XP下HTTP的403.9错误-禁止访问:连接的用户过多 重启iis可以解决
  • macbook qq截图存在哪
  • win10周年版
  • 搭建android开发环境实验原理
  • 原生js怎么获取input值
  • 学习软件
  • OpenGL图元管理
  • javascript运用
  • 原生js实现ajax步骤
  • JavaScript中的变量名不区分大小写
  • 安卓开源组件
  • 电话费的税费计入什么科目
  • 带酒回国需要申报吗
  • 个人所得税代扣代缴手续费退库申请
  • 外贸公司委托加工的账务怎么处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设