Android(java)学习笔记200:JNI之NDK的概念
1.交叉编译
(1)概念
在一个平台(硬件)和os(软件)环境下,编译出另一种平台和os下可以运行的二进制代码。
e.g:
电脑端 手机端
win7---intel >>> 编译 >>>> arm/mips/x86---Android(Linux2.6.6)运行的二进制代码
电脑端编写编译出可以在手机端运行的二进制代码。
(2)交叉编译工具
NDK : native developer kit (本地开发工具包)
备注:
cdt(Eclipse插件):c开发工具(只是把c语法显示高亮)
2. NDK工具
(1)解压一个NDK(android-ndk-r9-windows-x86_64.zip)工具包压缩文件,得到如下结果:
build : 编译的文件
docs : 开发帮助文档
platform : 平台(Android平台 ARM/MIPS/Intel Atom)
prebuilt : 预编译的文件
samples : 开发实例(参考)
sources :工具的源文件
test :测试平台
toolchains :工具链(很多工具,链接调用组成工具链)
••••••ndk-build.cmd ••••••: (ndk开发工具)最重要
(2)NDK作用:
NDK发布之前,Android不支持进行C开发。NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出"哪些文件需要编译"、"编译特性要求"等),就可以创建出so。NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
另外:
使用NDK,我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
使用NDK,我们可以将需要保密的应用逻辑使用C开发。毕竟,Java包都是可以反编译的。
最新文章
- swift 如何在IOS应用图标上添加消息数
- Autofac - 装配
- HTTPS----安全超文本传输协议
- track message forwards, avoiding request loops, and identifying the protocol capabilities of all senders along the request/response chain
- 关于Spring
- codeforces 540B.School Marks 解题报告
- AEAI ESB V3.5.4开源发布,应用集成平台
- OC语言-04-OC语言-核心语法
- Blitz Templates介绍
- 【WPF】 打开本地的文件或者文件夹
- [Angular Directive] Assign a Structual Directive a Dynamic Context in Angular 2
- cctype学习
- Python机器学习—导入各种数据的N种办法
- [SCOI 2010]字符串
- JSP(7)—EL和JSTL
- vs2015重新安装后,项目属性中的目标框架中没有framework4.6.1
- linux内核完全剖析——基于0.12内核-笔记(1)-CPU 数据通信
- VMware Coding Challenge: Possible Scores &;&; Summary: static
- 百度 ueditor 1.2.0 注意事项 ,上传文件问题
- 笔记:iOS随机数与随机数据集
热门文章
- Hadoop Hive概念学习系列之hive里的索引(十三)
- Linux文件锁【转】
- 《Visual C++ 2010入门教程》系列六:VC2010常见调试技术
- 第十八周 Leetcode 72. Edit Distance(HARD) O(N^2)DP
- zoj 3865
- python urllib从远程服务器下载文件到本地
- ChartCtrl源码剖析之——CChartGrid类
- Jmeter压测Thrift服务接口
- Codeforces Round #382 (Div. 2) (模拟|数学)
- bzoj 2229: [Zjoi2011]最小割【Gomory–Hu tree最小割树】