说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android搭建NDK开发环境

HTML文档下载 WORD文档下载 PDF文档下载
Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。在此之前,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。原生SDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。

 

于Android的NDK的概念这里就不解释啦。网上到处都有。这里讲述一下,编程和调试环境的搭建。
 
一,软件下载
    Android SDK :
        http://dl.google.com/android/android-sdk_r08-windows.zip。(2011/02/22可用)
 
    Android NDK :
        只能从百度上找 android-ndk-1.5_r1-windows.zip 官方下载地址不知道。
 
    Cygwin :
        http://cygwin.com/install.html。(2011/02/22可用)
 
二,安装
    Android NDK :
        只要展开就可以啦。
 
    Cygwin :
        要选好 gcc, make vi 等基本开发工具。用下列命令查看版本信息,以确认是否正确安装。
            gcc -v
            make -v
 
三,用 Cygwin + NDK 编译 NDK 带的例子
    1,启动Cygwin控制台。
    2,编辑 Home 目录下 .bash_profile 文件,加入下面两行。

本文作者:yutiansky

于Android的NDK的概念这里就不解释啦。网上到处都有。

  • 什么是Android NDK
  • Android NDK概述

这里讲述一下,编程和调试环境的搭建。

 

一,软件下载

    Android SDK :

        http://dl.google.com/android/android-sdk_r08-windows.zip。(2011/02/22可用)

 

    Android NDK :

        只能从百度上找 android-ndk-1.5_r1-windows.zip 官方下载地址不知道。

 

    Cygwin :

        http://cygwin.com/install.html。(2011/02/22可用)

 

二,安装

    Android NDK :

        只要展开就可以啦。

 

    Cygwin :

        要选好 gcc, make vi 等基本开发工具。用下列命令查看版本信息,以确认是否正确安装。

            gcc -v

            make -v

 

三,用 Cygwin + NDK 编译 NDK 带的例子

    1,启动Cygwin控制台。

    2,编辑 Home 目录下 .bash_profile 文件,加入下面两行。

 

 

NDK=/cygdrive/D/01_Work/01_Android/android-ndk-r5  export NDK 
3,重新启动Cygwin控制台。
4,执行编译命令。
$ cd /cygdrive/d/01_Work/01_Android/android-ndk-r5/samples/hello-jni/TianYu@tianyu-pc /cygdrive/d/01_Work/01_Android/android-ndk-r5/samples/hello-jni$ $NDK/ndk-buildGdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserverGdbsetup       : libs/armeabi/gdb.setupInstall        : libhello-jni.so => libs/armeabi/libhello-jni.soTianYu@tianyu-pc /cygdrive/d/01_Work/01_Android/android-ndk-r5/samples/hello-jni
四,在Eclipse上搭建编译环境。
    有上述基础后,用创建 Eclipse 的外部 Builder 功能,就可以在生成 .so 文件啦。
    1,在 Properties of ProjectName 中加 New_Builder。
    2,配置如下:
        Main>Location : Cygwin的bash.exe
            D:\01_Work\Cygwin\env\bin\bash.exe
        Main>Working Directory : Cygwin的bin目录
            D:\01_Work\Cygwin\env\bin
        Main>Arguments : Cygwin下运行的命令
            --login -c "cd /cygdrive/D/01_Work/02_Kinect/WS/HelloNDK && $NDK/ndk-build"
        Build Options>Specify Resources : Project 的 jni 目录
 
五,实例
在这里用写个NDK的实例。
一,软件环境
    WinXP SP3
    Android SDK 2.2
    Android NDK r5
 
二,调用方的 APP
    非常简单的应用程序,就是简单的调用一下 JNI 的函数。
    HelloNDK.java
package net.dncsoft.android.sample;    import android.app.Activity;  import android.os.Bundle;    public class HelloNDK extends Activity {        /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);            NDKBoundary ndkBoundary = new NDKBoundary();          int i = ndkBoundary.ndk_add(1, 2);          i++;      }  }  
NDKBoundary.java
package net.dncsoft.android.sample;    public class NDKBoundary {        static {          System.loadLibrary("HelloNDKImpl");      }        public native int ndk_add(int a, int b);  } 
编译生成 .class 文件。直接运行的话肯定出错。呵呵,废话,lib 还没做呢。
 
三,生成接口定义 H 文件
    javah -o d:\HelloNDKImpl.h -classpath d:\WS\HelloNDK\bin net.dncsoft.android.sample.NDKBoundary
 
三,被调用的 LIB
    HelloNDKImpl.cpp
#include <HelloNDKImpl.h>    jint Java_net_dncsoft_android_sample_NDKBoundary_ndk_1add(JNIEnv* env,          jobject thiz, jint x, jint y) {      return x + y;  }
Android.mk
LOCAL_PATH:= $(call my-dir)    include $(CLEAR_VARS)    LOCAL_MODULE    := HelloNDKImpl  LOCAL_CFLAGS    := -Werror  LOCAL_SRC_FILES := HelloNDKImpl.cpp    include $(BUILD_SHARED_LIBRARY)  
用上一讲的方法能编译成 libHelloNDKImpl.so 文件。
 
四,运行看看
    用下面命令启动模拟器,导入 LIB
cd %AndroidRoot%\tools  start emulator -avd avdname -partition-size 512  adb remount  adb -s emulator-5554 push d:\libHelloNDKImpl.so /system/lib 
 第 2 行命令是防止 Out of Memory 错误。
    第 3 行命令是防止 Read-Only 错误。
 
    现在可以运行 APP 啦。
 

 

印度初创公司Little Eye Labs证实已被Facebook收购 雅虎收购Aviate:重在提升用户体验 SDN领域硝烟再起,Oracle将Corente收入囊中 Hadoop科普文——常见的45个问题解答 CES 2014:奥迪下一代汽车将采用NVIDIA的芯片! Cocos 3.0 Beta发布:更易用、更友好 开拓新兴市场?诺基亚或推Android手机,UI界面遭泄露 预测2014大数据值得关注的8个发展方向 霸主地位再临挑战?Salesforce CEO,我们不只有Oracle LBS应用新星、“司机好助手”微车借力移动互联网,志在打造车主的个人移动门户 新一代IDE Light Table开源:让编程工作更简单 图片应用也能高大上,看Cooliris如何玩转无人机 拥抱Spark,机遇无限——Spark Summit 2013精彩回顾 1月10日:改变世界的iPhone七岁了,你是传奇! 同洲电子推出首款手机操作系统960OS 免费授权使用 如何在Windows 8.1的IE11中打开同步选项卡? 25年老对手评价微软:换CEO可行,但是太迟了 【PPT集萃】十位一线专家分享Spark现状与未来(三) 万元奖品等你拿!2014创客118新年大Party! Firefox OS的2013回顾和2014展望 Strom8 CEO:搞好手游开发,合伙人很重要 2013年Q4全球PC出货量同比下滑6.9% 已连续下滑七个季度 一周消息树:2013年十大产品、图书、公司盘点 专访Wunderlist主设计师Jan Martin:永远不要盲目跟风流行趋势 研发周报:超实用的JavaScript技巧及最佳实践 2013最吃香的技能:Java称霸、Android势头正猛 移动周报:最火原型设计工具盘点 “京东电商云”起航,零售企业及品牌商是重点 教育乃立国之本:教育类开源项目大汇集 Hugo Barra首度谈离开谷歌后在中国工作的感受 对中国赞不绝口 母婴行业最早试水者 优谈宝宝借助轻应用全面布局移动产品线 创建不了C#Web项目,急!!!(刚学C#) [求助] 用fopen函数读不出URL文件? 怎么判断listview是否有一个item被选中? 请说一下硬盘容量和内存容量的关系! ▄▅▆▇█ 水园的大背景离不开吵架 █▇▆▅▄ 请教mm有个问题! linux下的编程问题 以Oracle为例说明如何通过ODBC将数据库中的指定表导出到MDB数据库。(原创) 关于一种特殊按钮 SQL语句小问题!!在线等待! 想学ColdFusion 请看我的转载的贴子 Troj_Hacline.A是什么病毒? 关于XML的问题,150分赠送,急 dll问题。很简单。 感慨!!!(潜水一年,吐个泡,顺便发表一点意见) 帮个忙 怎么在Installshield中创建对话框,并操作ACCESS数据库? 连续给分:邮件服务器防病毒问题! 我想编译一个像API一样的dll 启动rose就出错,高手来看,100分 关于打印的一个问题 急!!!请提供一段设置Session的全部代码,谢谢!! 请问,从第二帧开始播放的代码的什么??? 老师要求编写五子棋的程序可是我实在想不出该怎么设定估价函数啊帮帮忙啊? 感觉压力比较大,活不下去,想跳楼自杀的进来侃侃 一个关于php提交表单的问题。 各位大侠,要命问题! 怎么在Installshield中创建对话框,并操作ACCESS数据库? win2000server的管理员密码让人改了,怎么办呀! 太气愤了,帮帮我? 用BDE连接MS SQL SERVER,为什么运行后出现未知用户名或密码的错误? datagrid中能不能进行统计 如何编写“outlook”风格的界面 如何实现flash截图?我研究了好久也不明白,希高手指点!(在线等待) 程序调用的DLL 在delphi中,用ADO如何实现将SQL中多表导出到一个Access中? 无聊啊无聊 想考软工???? Socket奇怪的问题! foxpro中如何实现按一按钮启动word和excel,并且直接弹出打开文件对话框? 关于分级权限管理(300分) 紧急求救!!!!!!!! 客户端web服务是否需要别的控件支持 帮帮我,朋友们请进.... Datareport问题! [cclq]竞选斑主,附我的方针! 用VB编写自己的服务器端组件 DAO问题,CDaoRecordset::addnew()和CDaoQueryDef::Execute插入一条记录,哪个更快? 谁能解释一下这个比较模糊的问题?关于地图窗口HWND。 闲人免进!如何增加信誉分! 如何改变Mem控件中插入符的形状? 人非生而知之者后一句是什么? 一水一浮生是什么意思 改善的英语怎么讲?要四个空 人非生而知之者的下一句是什么 怎样区分初次分配与再分配请举几个例子 如图所示,三条直线AB,CD,EF相交于点O,角AOF=3角FOB,角AOC=90°,求角DOF 怎样计算 木片夹住木块的弹力?我觉得这里的弹力和摩擦力的方向根本是不一样的啊? 三角形的斜边怎么算周长 动能和势能是怎么计算的 人非生而知之者 下一句 重结晶,蒸发浓缩冷却结晶,蒸发结晶.三个有什么区别吗?主要是第一个和后两个区别我想问下 怎么算电势能 人非生而知之者,孰能无惑?怎么改成陈诉句 用三这个字组词 两个字的比如 三秒 三夏 越多越好 、不要瞎说哟 两种溶液混合,体积会增大吗,一般体积增大还是减小,请举例 阴影长方形的面积是多少 三角形的斜边计算在直角三角形中.已知一个角是度数和一个直边,如何求出斜边. 原核生物启动子的结构特点及功能 人非生而知之者,孰能无惑?出自谁? 初次分配与再分配的具体内容是什么?区别是? 两种溶液混合,体积会比体积和增大吗,一般体积和增大还是减小,请举例 人非生而知之者,岂能无师?出自那篇文章的一句话 初次分配与社会再分配的区别 什么是强启动子? 怎么样分辨塑胶与橡胶 如图,已知EF/FC=DF/BE,AE/DE=3/2,AD=BC,BF=15cm,求DF的长?希望在8点10分前给我答案,我急用,快 怎么理解初次分配和再分配? 是否存在一个平移,它把点(1,2)移到(3,4)且把点(0,1)移到(-1,0)? 我叫mt怎么装easy助手?非越狱的iphone 什么叫做初次分配与再分配 是否存在一个平移,它把点(0,-1)移至(1,0),且把点(-1,3)移至(0,4)? 我叫mt辅助easy助手1111111111 请问什么是初次分配和再分配? 怎样区别初次分配和再分配我看了概念还是不清楚有什么简便方法吗不要复制一大段 猛将气体有毒么? 如图,直线AB CD EF相较于点O,已知;∠AOF=3教FOB,∠AOC=100°,求∠EOC的度数 初次分配与再分配区别 米和占这两个字,同加上一个什么字,使两个字都能组成一个新字 我叫mt辅助easy助手, 再分配和初次分配怎么区分? 坐、对两个字分别加偏旁组成新字,每个字必须组出两个新字 华为版的我叫mt属于哪个版本,我想用easy助手,可是不知道载哪个 燃烧匙中的红鳞可以换成硫或木炭?燃烧匙中的红鳞越多水位上升越高为什么错?题目是怎样的 做空气中氧气含量测定的试验装置如下图 大概你么你想象的那种 下列有关说法正确的是A作用红 门 小 日 口 从 生 大 十任选两个字组成新字不能重复组成四个新字 等腰梯形、长方形、平行四边形中哪个不是对称图形? IOS 4.3.1跟IOS 5有什么区别? 甲:我说出两个字. 乙:我就能把它组成一个新字,并且能说出新字的意思.甲:上下不正 乙:歪——不正斜甲:小土飞扬 乙:__________甲:人被拘禁 乙::__________甲:水中捕鱼 乙:__________甲:门里藏日 人类行为是宇宙的必然过程吗? 4.3.5版的iphone4,ios如何升级? 把一个圆任意朝不同方向对折,每条折痕都一定通过圆心,对折后,两边完全重合吗? 有没有亲在恒善堂买过冰山雪菊?那里的冰山雪菊质量如何? 如何将IOS 5.0降级到IOS 4.3.3. ab平行cd,bc平行ad,de⊥be,df=ef,甲从b出发,沿着bc→ce→ef的方向运动,如果两人的速度是相同的 初次分配和再分配按什么划分的 为什么爱得很深,而最后也恨得更深? 2013年9月如何将ios 4.3.3的iphone4升级到5.1.1我有备份SHSH5.1.1, 宇宙中存在比 光速 快的 质量/势能 》c ,有发现存在吗? 为什么嫩江不是松花江源头要算长白山为源头 直线AB,CD,EF,相交于O点,∠AOE=3∠FOB,∠AOC=90°,求∠EOC的度数是这幅图 在太空中,一般选择无穷远处为零势能点所以,物体在太空中的势能为:Ep=-GMm/r这是怎么推出来的?设无穷远处为零时能点是什么意思? 浙江发布一批高校干部任免信息中国全国政协副主席杜青林访问保加利亚视频:10岁男孩午夜被切断右手 扔进10岁杭州男孩被母亲男友砍去右手丢进少女黄鳝血放入下体冒充处女 敲诈嫖客21岁丽水姑娘惨遭男友碎尸 锯下人头18岁女子和男友吵架约见网友 被掐死伦敦股市股指23日下跌中国西藏文化周在德国柏林开幕 俞正声欧元区国家政府债务水平继续上升巴黎股市CAC40股指23日下跌乔治小王子洗礼袍仿1841年维多利亚法美总统同意合作调查电话监听事件瑞士战机坠毁人员伤亡未知 警方调查事俄罗斯总理访问安徽后回国瑞士战机坠毁人员伤亡未知 警方调查事乔治小王子洗礼袍仿1841年维多利亚新加坡中小企业对天津服务业投资增长迅俄罗斯总理梅德韦杰夫访问安徽后回国世界审计组织明确未来四大发展方向长沙警方回应《新快报》记者被刑拘:捏南京长江路更名“十朝都会路”如何?开学季?考试季?“黑电世界”焕发盎然绿色生机形形色色治病“处方”“爸妈,我想让您张嘴笑”小学教材“瘦身”引入第三方评估杭州拟立法禁止子女“啃老”好家风好家训选登去小城享“寿”养老宁波城乡居民将实施大病保险闷与狂师生围坐谈心 引导孩子追梦李世石战胜古力立于不败夏秋之交宜多酸少辣百合婚介爱情秘笈 开诚布公谈结婚雅培入选500强在华贡献榜最佳企业本报信息刘绪源推出《少年人文读本》始于“足”下上海荧屏再现沪语情景喜剧难波靖直:屠村,大队长要求一只猫也不
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘