文档章节

ndk的学习(1)

y
 yanglingui
发布于 2017/02/07 15:36
字数 856
阅读 63
收藏 0
ndk

    1.什么是ndk?

首先 我们要知道它的英文名字 Native Development Kit  (本地开发工具包) ,那它又是干甚的呢?

能够帮助我们快速开发c/c++的动态库,并能自动将 .so文件和java应用打包成apk

(背会这个恭喜你,你了解了她了)

    2.jni

谈到ndk就必须说jni ,ndk就是工具但是光有工具是不行的 我们得知道这个工具怎么使用 也就官方的话叫做规范 

jni就是一种规范,我不是重洋内外,但是我还是得说会说几句鸟语给中国人的感觉就是牛逼,jni的英文全名就是 Java Native InterfaceJava本地化接口

作用: Java调用C/C++的一套编码规范 他和ndk的关系就是ndk要基于他 点到为止 说出这句话的人 面试的人估计不敢再深问了 他怕自己也兜不住

    3.为什么要使用ndk呢

那么多人老板为什么要使用呢?你得知道自己的价值,

1>硬件和性能  :java代码是不可能直接调用硬件的 就和玩手动挡和自动挡的效果一样

2>安全性 : 代码的保护,由于apkjava层代码很容易被反编译,而C/C++库反汇难度较大

3>便于移植 :写了c和c++ 可以在android 和 ios 中都可以用 只要底层代码是c的

4>c和c++ 有很多的开源库 c是代码的爷爷啊多少人的汗水的凝结

    4.环境的搭建

       我这是windows的as的安装  对不起我没有mac的  as最好用2.2的 太低我也不会 仁王高出走

    1>下载ndk包

                                   http://http://pan.baidu.com/s/1jImIOyM

    2>安装 支持so库的开发环境

            

第一步:新建一个Android工程
				第二步:在AndroidStudio中配置NDK路径
				第三步:编译生成.class文件	
				第四步:定义本地方法
				第五步:生成jni目录以及对应的.h头文件
					两种方式(通过工具生成、通过命令生成)
					cd app/src/main/java
					javah -d ../jni com.example.lixinyu.myapplication2.MainActivity
				第六步:配置build.gradle文件
					注:类似于Eclipse中的.mk文件
				第七步:配置local.properties文件
					注:指定NDK目录(一般情况下工具自动配置)
				第八步:配置gradle.properties文件
					android.useDeprecatedNdk=true
					注:支持低版本,否则编译不通过
				第九步:定义实现文件(.c或者.cpp文件)
				第十步:测试

 

ndk路径的配置

 生成.class 文件   通过as的命令动态生成头文件(xx.c)

    

 

生成jni目录

配置buid.gradle

配置ndk 支持低版本

android.useDeprecatedNdk=true

  实现头文件

    1>创建c代码

    2>将下面的代码直接拷贝到ylg中

 

© 著作权归作者所有

共有 人打赏支持
y
粉丝 1
博文 130
码字总数 18154
作品 0
海淀
NDK学习笔记(一)

以Windows环境为例,以下工具在使用NDK开发Android应用程序时都会要用到: Java Development Kit on Windows Apache Ant on Windows Android SDK on Windows Cywin on Windows Android NDK ......

LeoXu
2016/01/01
74
0
please define NDK_ROOT

刚开始学习cocos2d-x,第一步必须是把环境变量配置好。关于sdk ndk的下载都挺简单,就不加整理了。依据网上找的一些资料,进行如下配置 1.设置环境变量, 即在终端窗口编辑 sudo vi ~/.bas...

萌神明明
2014/03/30
0
0
闲来无事,塔建了一下android ndk和简单的编译并安装运行apk

一、Android Ndk 下载地址 http://developer.android.com/tools/sdk/ndk/index.html#Installing 二、环境变量配质 1、创建环境变量名 ‘ANDROID_NDK’,变量名的值'D:androidandroid-ndk-r9'...

军歌
2013/08/28
0
0
FFMPEG for android 编译

标签(空格分隔): FFMPEG 最近在研究Android视频播放功能,网上有很多关于视频播放解码的库,但是作为程序员的我,还是希望能从源头出发,学习FFMPGE自然是势在必行了。 网上有关FFMPGE学习...

Sivin
2016/12/15
370
0
程序员扪心自问:给你一份月薪40k的工作,你能胜任吗?

  最近打算换工作,搜了搜招聘网上安卓工程师的岗位,好多岗位月薪30k-40k,搜狗、新浪、爱奇艺、美团、挖财等都在招人,看得我激动      你是不是也心动了?也想得到这样的offer?打开...

Android群英传
2017/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之 明确责任 观察者模式 状态模式 责任链模式

观察者模式是任务分发的一种模式。 如果认为我们设计的系统的各个模块(或子系统)的最终目的是完成共同任务,那么这个任务如何分配到多个模块的就是我们遇到的第一个问题。简单设计场合我们...

backbye
13分钟前
2
0
14-利用思维导图梳理JavaSE-大汇总

14-利用思维导图梳理JavaSE-Java基础知识大汇总 主要内容 1.对象入门 2.一切都是对象 3.程序流程控制 4.初始化和消除 5.权限访问控制 6.复用类 7.多态 8.接口与抽象类 9.内部类 10.容器 11.异...

飞鱼说编程
48分钟前
5
0
利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired

大家平时使用spring依赖注入,都是怎么写的? @Servicepublic class OrderService { @Autowired private UserService userService;} 是不是很熟悉的感觉?但是呢 如果你用...

HeyS1
55分钟前
23
0
IBATIS 写BLOB字段遇到的问题

1、 首先遇到的配置问题,通过设置typeHandler 来支持写入。接下来由此引出了事务的问题。 <typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support....

echo-neo
今天
1
0
37. Sudoku Solver

Description tags: backtrack,hash table difficulty: hard Write a program to solve a Sudoku puzzle by filling the empty cells.A sudoku solution must satisfy all of the following......

52iSilence7
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部