文档章节

ndk的学习(1)

y
 yanglingui
发布于 2017/02/07 15:36
字数 856
阅读 62
收藏 0
点赞 0
评论 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
博文 123
码字总数 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 ⋅ 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

please define NDK_ROOT

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

萌神明明 ⋅ 2014/03/30 ⋅ 0

FFMPEG for android 编译

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

Sivin ⋅ 2016/12/15 ⋅ 0

程序员扪心自问:给你一份月薪40k的工作,你能胜任吗?

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

Android群英传 ⋅ 2017/11/21 ⋅ 0

NDK环境搭建和编译第一个程序

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

kelivin ⋅ 2012/11/24 ⋅ 1

Android NDK学习之隐藏敏感信息

由于Android应用被反编译后是可以看到里面信息的,而一些敏感信息,比如服务器的ip地址、加密的算法,我们是不希望让别人知道的。如何才能隐藏这些信息呢,就我目前了解,使用Android NDK,把...

带梦想一7飞 ⋅ 2013/10/14 ⋅ 0

NDK学习一: - 环境搭建

主要关键步骤: 1. 下载cygwin最新版本 , 到这里下载http://www.cygwin.com/ 以前搞了几次,不是少这个,就是少那个,那个时候不急。现在重新装,免得麻烦。 出来以后,请点击最上面全部选择...

木星青龙 ⋅ 2012/03/21 ⋅ 0

【jni 编程】—— NDK环境搭建

在《站在巨人的肩膀上,谈app的创新性》一文中 http://my.oschina.net/liusicong/blog/311971,我提到过构建app技术壁垒的必要性。在构建技术壁垒时,我们往往需要调用许多库函数,例如:图像...

刘小米 ⋅ 2014/09/10 ⋅ 0

Android NDK开发之旅29--云服务器Ubuntu下搭建NDK环境,并编译FFmpeg

前言 因为在Linux环境下编译FFmpeg生成库和头文件下比较方便,所以接下来主要操作在Linux环境下进行。但是对于Android NDK 开发新手来说,自己电脑配置Ubuntu Linux环境过程比较繁琐。而采用...

香沙小熊 ⋅ 2017/12/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

Spring JDBC使用方法

普通实现: 1、创建数据表customer。 可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。 2、创建Customer pojo。 Customer类的属性对应数据库的属性,除了为每...

霍淇滨 ⋅ 今天 ⋅ 0

Contos 7 安装Jenkins

Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 编译 测试 发布 有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动...

欧虞山 ⋅ 今天 ⋅ 0

revel

revel install go get github.com/revel/revelgo get github.com/revel/cmd create new app revel new git.oschina.net/zdglf/myapp run app revel run git.oschina.net/zdglf/myapp ot......

zdglf ⋅ 今天 ⋅ 0

49. Group Anagrams - LeetCode

Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List<String>> groupAnagrams(String[] strs) { Map<Strin......

yysue ⋅ 今天 ⋅ 0

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 今天 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 今天 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部