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 新建文 ...
随机推荐
- ButterKnife官方使用例子
Introduction Annotate fields with @BindView and a view ID for Butter Knife to find and automatically ...
- SpringBoot入门笔记(二)、使用fastjson
1.添加fastjson配置 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastj ...
- 十四、文件和目录——文件时间和utime函数
14.1 文件时间 存在于 stat 结构体中 14.2 文件时间函数 14.2.1 介绍 utime(修改文件的存取时间和更改时间) 相关函数 utimes,stat #include <sy ...
- springboo05-redis
springboot中使用redis:(1).使用redis工具类手动操作缓存(2).使用cacheable注解到方法头,自动创建缓存数据 1.安装redis https://github.com/d ...
- js伪数组转数组
方法1: 遍历伪数组,在把值push进一个空数组中 方法2: 使用数组的slice方法,它返回的是数组,使用call或apply指向伪数组 var arr = [].slice.call(argume ...
- 博客里的第一篇随笔!QWQ
这里是一个信息蒟蒻,开始自己的博客之旅!!QWQQQQ
- Python基础1(2017-07-16)
先墨守常规写一个简单的hello world!这是所有语言学习的第一点. Python Hello world name="hello world!" print(name) 如上 ...
- mysql 架构 ~ MHA 总揽
一 简介:MHA相关二 版本 mha0.56 mha0.57 mha0.58三 切换流程 0 主库已不可达 阶段一 1 从集群选出新主,根据新主同步的binlog信息进行拷贝binl ...
- scrapy基础 之 爬虫入门:先用urllib2来跑几个爬虫
1,爬取糗事百科 概况:糗事百科是html网页,支持直接抓取html字符然后用正则过滤 爬取糗事百科需要同时发送代理信息,即user-agent import urllib2,re def pacho ...
- Ubuntu16.04安装最新版nodejs
原文链接:https://www.jianshu.com/p/2b24cd430a7d