文档章节

ndk的学习(1)

y
 yanglingui
发布于 2017/02/07 15:36
字数 856
阅读 66
收藏 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
博文 132
码字总数 18615
作品 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
NDK环境搭建和编译第一个程序

看了网上很多文档,学习很多前人的经验,也遇到很多问题,整理分享一下。 环境搭建:(windos XP操作系统) 1.到Cygwin的官方网站下载Cygwin的安装程序,地址是: http://www.cygwin.com/setup...

kelivin
2012/11/24
1K
1
FFMPEG for android 编译

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

Sivin
2016/12/15
370
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
20
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
20
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
30
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
36
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部