JNI 开发基础篇:Android开发中os文件的探索
正题:
android开发中,时长会遇到os文件的使用,那么os文件到底是什么?在这篇文章中会进行说明。
.os文件在android中意味着C语言书写的方法,经android提供的ndk进行编译,从而供android方法调用,实现业务需求。
由于android使用的是java语言,无法直接调用C语言函数。同理,C也无法直接使用java语言。但是C可以操作驱动,硬件等。所以android支持C语言操作。但又无法直接调用。便有了我们见到的os文件了。
那么os文件在android开发中可以 说是很重要的。如果只满足与FrameWork层业务的开发,那么os文件对于你来讲真的不重要,但是如果你想要开发NFC,BlueTooth等于终端硬件有关的东西,就必须知道os文件,以及如何开发和使用它们。
android JNI 开发配置
说到正题,那么如何开发并生成os文件,在接下来我将自己的实践内容进行整理。希望能对大家有所帮助。
先介绍两个 名词 JNI,JDK
JNI:Java Native Interface :
java与C语言调用的协议
1
NDK:Native Develop kit
谷歌提供的工具包,来支持JNI
1
工欲善其事,必先利其器。我们现配置自己开发JNI 的开发换将
step1:androidstudio —->setting—->android sdk
下载ndk,勾选图中的2的选择框。我的这个是已经下载好了,只是不是最新版本。这个下载速度就要看你自己网络了。
下载好的ndk,androidstudio会将其解压在你androidstudio的sdk目录下:如图:
如果你使用上述的方法下载ndk比较慢的话,可以在下面的网址中进行下载:
https://dl.google.com/android/repository/android-ndk-r16-windows-x86_64.zip
http://www.androiddevtools.cn
http://developer.android.com/intl/zh-cn/ndk/downloads/index.html
使用这种方式下载的ndk,那么你就需要自己解药ndk,放在你计算机中的磁盘下。不过建议跟你的sdk放在一起
step2:windows环境path下添加ndk本地路径
step3:cmd下测试是否安装成功。运行:ndk-build
step4:restart Androidstudio
step5: 重启后,在工程中local.properties文件下查看
ndk.dir=E\:\\AndroidStudioSDK\\Android\\sdk\\ndk-bundle
sdk.dir=E\:\\AndroidStudioSDK\\Android\\sdk
1
2
如果没有ndk的信息,你需要自己进行配置一下
ndk.dir=E\:\\你计算机中ndk的本地路径(注意要使用转义字符)
1
step6: 在工程中gradle.properties中添加
android.useDeprecatedNdk=true
1
作用为兼容来版本ndk
1
至此,我们的开发环境安装OK,那么后面会继续整理关于Android 中如何在java中调用C文件。
JNI 开发基础篇:Android开发中os文件的探索的更多相关文章
- iOS开发——基础篇——iOS开发 Xcode8中遇到的问题及改动
iOS开发 Xcode8中遇到的问题及改动 新版本发布总会有很多坑,也会有很多改动. 一个一个填吧... 一.遇到的问题 1.权限以及相关设置 iOS10系统下调用系统相册.相机功能,或者苹果健康 ...
- Android应用开发基础篇(1)-----Button
Android应用开发基础篇(1)-----Button 一.概述 Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用 新建一个工程, ...
- 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!
[COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-1 ...
- iOS开发UI篇—iOS开发中三种简单的动画设置
iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...
- 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》
一.课程笔记 1.1 软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...
- PHP实现微信公众平台开发—基础篇
PHP实现微信公众平台开发—基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流 ...
- Linux 网络协议栈开发基础篇—— 网桥br0
一.桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口"连接"起来.其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去.以使得网口之间的报文能够互相转发. 交换机 ...
- iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明
ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n 新建项目 cmd + n 新建文 ...
随机推荐
- 简单回射程序之处理accept返回EINTR错误的服务器程序版本
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <errno.h> ...
- js apply使用
js中apply方法的使用 1.对象的继承,一般的做法是复制:Object.extend prototype.js的实现方式是: Object.extend = function(destinati ...
- 用Kersa搭建神经网络【MNIST手写数据集】
MNIST手写数据集的识别算得上是深度学习的”hello world“了,所以想要入门必须得掌握.新手入门可以考虑使用Keras框架达到快速实现的目的. 完整代码如下: # 1. 导入库和模块 fro ...
- TensorFlow从入门到理解
一.<莫烦Python>学习笔记: TensorFlow从入门到理解(一):搭建开发环境[基于Ubuntu18.04] TensorFlow从入门到理解(二):你的第一个神经网络 Tens ...
- python 之 configparser 模块
[root@linag python]# vim config.py import configparser config = configparser.ConfigParser() config[' ...
- Leetcode#709. To Lower Case(转换成小写字母)
题目描述 实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串. 示例 1: 输入: "Hello" ...
- table 如何不越过父级div
设置table 被限制在外围div的方法: 设置样式: table { table-layout: fixed; /*fiexed 列宽由表格宽度和列宽度设定. 默认.列宽度由单元格内容设定.*/ w ...
- 清除redis缓存
redis-cli -p 6379(指定进入端口号为6379的redis数据库)1.清空当前redis数据库缓存flushdb 2.清空整个redis缓存flushall
- 海洋cms v6.53 v6.54版本漏洞复现
海洋cms v6.53 v6.54版本漏洞复现 参考链接: 今天发现freebuf上一篇海洋cms的漏洞,来复现一下. http://www.freebuf.com/vuls/150042.html ...
- pythonの信号量
#!/usr/bin/env python import threading,time def run(n): # 申请锁 semaphore.acquire() time.sleep(1) prin ...