正题:
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文件的探索的更多相关文章

  1. iOS开发——基础篇——iOS开发 Xcode8中遇到的问题及改动

      iOS开发 Xcode8中遇到的问题及改动 新版本发布总会有很多坑,也会有很多改动. 一个一个填吧... 一.遇到的问题 1.权限以及相关设置 iOS10系统下调用系统相册.相机功能,或者苹果健康 ...

  2. Android应用开发基础篇(1)-----Button

    Android应用开发基础篇(1)-----Button   一.概述        Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用      新建一个工程, ...

  3. 【COCOS2DX-LUA 脚本开发之一】在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途!

    [COCOS2DX-LUA 脚本开发之一]在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途! 分类: [Cocos2dx Lua 脚本开发 ] 2012-04-1 ...

  4. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  5. 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》

    一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...

  6. PHP实现微信公众平台开发—基础篇

    PHP实现微信公众平台开发—基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流 ...

  7. Linux 网络协议栈开发基础篇—— 网桥br0

    一.桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口"连接"起来.其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去.以使得网口之间的报文能够互相转发. 交换机 ...

  8. iOS开发UI篇—在UIImageView中添加按钮以及Tag的参数说明

    ios开发UI篇—在ImageView中添加按钮以及Tag的参数说明 一.tag参数 一个视图通常都只有一个父视图,多个子视图,在开发中可以通过使用子视图的tag来取出对应的子视图.方法为Viewwi ...

  9. iOS开发UI篇—IOS开发中Xcode的一些使用技巧

    iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文 ...

随机推荐

  1. 使用模拟Table解决span重叠问题

    <div id="test"> <div > <span>adfafadsfadfa</span> <span style=& ...

  2. 【51nod 1191】消灭兔子

    Description 有N只兔子,每只有一个血量B[i],需要用箭杀死免子.有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 <= i <= M).假设 ...

  3. 复习java web之jsp入门_El表达式_JSTL标签库

    JSP 技术掌握:JSP语法 + EL + JSTL 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP ...

  4. Java SE之正则表达式五:切割

    /** * * @author Zen Johnny * @date 2018年4月29日 下午3:53:55 * */ package demo.regex; /* 正则表达式:切割 */ publ ...

  5. ELK平台搭建(上)

    一.目的 为指导在Centos6.8系统下搭建标准ELK平台的工作. 二.定义 Elasticsearch Logstash Kibana结合Redis协同工作. 三.适用范围 适用于运营维护组运维工 ...

  6. Vi编辑器中全局替换

    1 例如下图 %s/hello/java/g #(等同于 :g/hello/s//java/g) 替换每一行中所有 hello 为 java 2 操作截图 替换所有的exec-avro-agent-L ...

  7. vue 学习笔记—Es6

    // 第一部分 /* console.log(a+'c'); var a = 1; console.log(b+'c'); let b =1; */ // 上述代码 left定义报错 原因: /* v ...

  8. CF1098B/CF1099E Nice table

    题目地址:CF1098B/CF1099E Nice table 显然,a nice table需要满足如下条件: 要么,每行都由两个字符交替组成,相邻两行的字符均不相同 要么,每列都由两个字符交替组成 ...

  9. 【转】python模块分析之unittest测试(五)

    [转]python模块分析之unittest测试(五) 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块分析之typing(三) p ...

  10. python3-元类

    原文出处:http://www.cnblogs.com/linhaifeng/articles/8029564.html exec的使用 #可以把exec命令的执行当成是一个函数的执行,会将执行期间产 ...