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

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 啦。
 

 

用VB5直接控制Excel 97 用VBA编制Access的查询程序 用VB和RDO访问SQL Server 用VB开发多通道仪表数据采集程序 用VB实现关闭所有数据库对象 用VB实现类电子表格的数据录入 VB用代码创建数据库,表,字段 VB用类来编写数据库程序 优化OLE的调用频率-VB资料 语言选择引起的查询错误 -VB资料 远程数据库的访问-VB资料 运用ADO进行数据库表数据互导 -VB资料 在 VB5.0中编辑数据库和电子表格 在Access 2000中用ADO-VB资料 在Access数据库中实现密码管理的另一种方式 -VB资料 在VB6.0中使ACCESS数据库在网络使用中保持同步 在VB中更改SQL Server数据库结构 在VB中兼容非ACCESS数据库的技巧 在VB中引用dbf及索引文件 在VB中运行Microsoft Access报表的好方法 在VB中直接用ODBC API访问数据库 在数据库应用中, 经常要动态生成 Select 语句,典型的情况:-VB资料 在运行时修改DataEnvironment的连接字符串-VB资料 在抓取資料庫之資料前先計算資料總筆數 -VB资料 增加 MsFlexGrid 的编辑功能-VB资料 真正删除数据库的记录 -VB资料 用VB制作屏幕保护程序 VB多媒体程序设计 VB设计动画时钟 VB游戏写作技巧(1)秀图篇 VB游戏写作技巧(2)网络篇 快毕业了才心动~怎么办? 请问设a=3,b=4,c=5,则表达式!(a+b)+c-1&&b+c/2的值是多少? 我下载了tinyDB 2.8,需要注册怎么办? 高价寻求软件开发(5000.00元报酬) 网页填写提交表单时经常出现停顿,怎么回事? 111高价寻求软件开发(5000.00元报酬) 各位大虾,深圳那儿买书可以打折? putao请进 双服务器的网络连接问题,请进来看看。 pb7的exe连接sql server2000真难呀,我都弄了两周了!!!!!!!!!!还没解决!!!!??? 怎样响应鼠标在对话框上画图啊? 怎样访问局域网内的机器? asp+sql的查询! 有关MIDAS的问题,请看http://www.csdn.net/expert/topic/374/374719.shtm 紧急!!如何使用ADO创建数据库及表(zwjmouse) 哪位大侠能提供一个c语言写的俄罗斯方块的有注释的源程序(高分) 一段可以冒充QQ上线,下线的源代码,支持最新版0710B 有关于Delphi开发局域网数据库系统的书籍或者资料吗? 请问由mscomm发出的数据是什么格式,单片机怎么识别?》》》 求教??? 请问是否有快速建立二叉树的方法 请教确认提交页面部题 Cannot open "Javac.exe"--菜鸟问题 请问怎么样实现Date的加减呢?? 怎样得到下一天的日期 前段时间出差,最近有忙着考研,没时间上网,散分 确认页面问题。 AfxMessageBox话框标题问题 不是我重复,只是这个问题让我发疯,旦求解决这个问题,死而无怨 smtp认证发信的源代码 在DLL中如何知道自己父进程(ParentProcess)的路径和文件名? cview里的precreatewindow和cframewnd的precreatewindow应该调用那个? 如何在dw4中给已做好的FLASH动画加上超链接? 关于Jmail组件的问题! 袁飞请进! redhat linux下jbuilder安装问题!!!帮帮忙!! 怎样得到一天的起始时间,例如:今天是2001-11-1,则我希望得到:2001-11-1 00:00:00 求教CEditView 华硕P2B主板怎么装联想商博士6xxx的内猫,猫是好的,可插上后怎么也找不着,怎么办? CSDN的服务器太差劲了!老是结不了分的! 有没有第二种方法加入2000的域呢?(详见正文) 时钟的实现初始化问题?? 我今天买了一本,这本书如何? 那儿有perl for win32的开发资料下载的! 我想知道鼠标在COMBOBOX上移动时所处的选项,在LISTBOX上可以实现,在COMBOBOX上如何实现,它没有MOUSEMOVE事件。 请问怎样自动捕捉网格啊? 定义以下变量,并以赋确定的值:char w;int x;float y;double z;则表达式:w*x+z-y所求的值的数据类型是什么 为什么我的treeview 值都成了双份的呢??? 哪人在线观看的源代码?比如:CIH,I LOVE YOU 怎样自动捕捉网格啊? 本人就快作毕业设计了,想作个vc项目,大家给我点意见吧! 平方公里等于多少亩 1980个等于多少万个 王大爷卖了香蕉6千克和苹果8千克,共卖48元,每千克香蕉4.8元,每千克苹果的钱数是每千克香蕉的钱数的2分之1每千克香蕉和每千克苹果各多少元 1;一个圆的直径是6cm,求面积.2;一个圆环,内圆的半径是5cm,外圆的半径是7cm,求面积. 80%分之x等于多少 一个圆直径2米圆的周长是多少 将某质量的镁铝合金溶解在500ml盐酸中,向反应后的溶液中逐滴加入2mol/LNaOH溶液,产生沉淀质量与碱溶液的体积的关系如图所示.求:(1)盐酸的物质的量浓度(假设反应后溶液体积不变).(2 若将0.2mol金属钠.铝铁分别投入10mol 1mol/l的盐酸中,在标准状况下产生氢气的体积大小顺序是? 一个圆原来的直径是6厘米,现在这个圆的直径增加到10厘米,这个圆的周长增加到多少厘米? 镁铝合金1.02g完全溶于50ml4mol/L的盐酸溶液中,逐滴加入2mol/LNaOH溶液,当溶液中的沉淀达到最大值时,求此时加入氢氧化钠溶液的体积. 若将0.2mol金属钠.铝.铁分别投入10mL1mol/L 的盐酸中,在标准状况下产生氢气的体积是?答得仔细一些, 如果圆的直径增加3厘米,那么圆的周长增加( )厘米 将一定质量的镁铝合金溶解于500mL盐酸中(社体积变化忽略不计),从所得的溶液中将一定量的镁铝合金溶解在500ml盐酸中,然后取出10mL溶液,用1mol/L的NaOH 溶液滴定,滴定时产生的沉淀的质量(y 若将0.2mol钠、镁、铝分别投入到10mL 1mol/L 的盐酸中,在标准状况下,产生氢气体积的大小顺序是?答案是钠大于镁等于铝,求过程 2500千克≡( )克 食品店运来水果360千克,卖出的比它的一半还多40千克,剩下几千克. 若将0.2mol钠,镁,铝分别投入10ml1molL的盐酸中,在标况下所生成的氢气体积按大小顺 (求值)根号3-tan15度/1+根号3tan15度(要过程) 1平方厘米等于多少平方米?一立方厘米等于多少立方?用科学计数法表示.最快的给满意 钠 铁 铝三种金属各0.2MOL分别与含0.1MOLHCL的盐酸反应 放出的氢气的量是? 根号3tan15+1/根号3-tan15的值是我知道了,先把根号3化为tan60°,得到的式子就是tan(60°-15°)化简式的倒数。tan(60°-15°)=1,故答案为它的倒数还为1。 0.8平方厘米等于多少平方米,不要科学计数法,直接写的数 0.3分钟等于多少秒?回答的好采纳! 将物质的量均为amol的钠和铝同时放入mg水中(足量),所得溶液密度为pg/cm 则此溶液物质的量浓度 0.7的-7次等于多少平方米,用科学计数法 一小时等于几分钟.第一个采纳. 将总物质的量为nmol的钠和铝(其中钠的物质的量分数x),投入到一定量的水中充分反,金属没有剩余,共收集到标准状况下的气体VL.下列关系式中正确的是?A:x=V/11.2n) B:0<x≤0.5C:V=33.6n(1-x)D 如何用科学计数法表示50302?平方米和平方厘米的进律是多少? 一个圆的半径丶直径丶周长之和是55.68厘米,这个圆的面积是( ). 将一定质量的镁,铝合金投入100mL一定物质的量的HCl,向所得的溶液加入浓度为5mol/L的NaOH到过量,产生沉淀的ggg将一定质量的镁,铝合金投入100mL一定物质的量的HCl,向所得的溶液加入浓度为5mol/L的 30毫升等于多少平方米 用科学记数法 质量相等的钠,镁,铝分别和同体积,同浓度的稀硫酸反应,金属过量,生成的氢气是()A钠最多 B镁最多 C铝最多 D一样多(提示:2Na+2H2O=2NaOH+H2)又是质量相等,又是金属过量怎么理解? 100mL 0.5mol/L的硫酸铝溶液中加入60mLNaOH溶液,充分搅拌后,共得到沉淀3.9g.求NaOH溶液的物质的量浓度100mL 0.5mol/L的硫酸铝溶液中加入60mLNaOH溶液,充分搅拌后,共得到沉淀3.9g.求NaOH溶液的物质的量浓 圆的半径是2.5cm,直径是5cm,他的周长与面积是多少? 两个烧杯中均有100ml1mol/L的硫酸,分别向两个烧杯中加入Xg镁和Yg铝,充分反应后烧杯内剩余物质的质量相同,试确定下列情况X与Y的取值范围及两者的数量关系:(1)两种金属均有剩余(2)两种 一个圆的周长和直径的总长度是248.4厘米,这个圆的半径是多少? 已只一个圆的半径是5CM 算出它的直径.周长和面积 在等质量的稀硫酸中分别投入镁、铝、铁的粉末完全反应后,溶液的质量仍相等,则投入金属质量关系是:A:Mg>Al>FeB:Al>Mg>FeC:Fe>Mg>Al为什么? 1.直径为10厘米的圆,它的周长是多少厘米?(精确到0.01厘米) 2.圆的周长是314厘米,它的半径是多少?3.大圆形花坛的直径为15米,在它的圆周上隔了30厘米种上一棵冬青树,一共种了几棵?4.压路机的轮 高二数学--设A向量=(-sin15,cos15)则向量A与向量OX的夹角是多少?您好,我是一名学生,我想问问这题的解题步骤,因为我看不明白您是怎么算的, 在Rt三角形ABC中 ∠C=90°∠B=15°求tan15°就这些条件 要用三角函数哦!主要是过程、、答案知道的 一个圆的周长和直径的总长度是248.4厘米,这个圆的半径是多少? 设向量a=(sin15°,cos15°),b=(cos15°,.sin15°),则ab夹角为谢谢了, 已知Rt△ABC中,∠B=30°,∠C=90°,在此图基础上添加适当的辅助线,求tan15°的值. 一个圆的周长和直径总长度是248.4厘米,这个圆的半径是多少?说明解题思路,在明天早上7点之前回答, 正方形已知长是1.5cm求周长和面积.长方形已知长是8cm宽是5cm求周长和面积. 速度求解30°Rt△ABC中的tan15°如图,在Rt△ABC中,∠C=90°,∠ABC=30°,BD是△ABC的角平分线,求tan15°的值.(提示:过点D作DE⊥AB,垂足为点E)我自己画的,即使是倒人胃口,也求给个答案!(越详细越好,但 (1+根号3)tan15°-根号3,给出计算过程,好的立刻采纳 一个半圆的周长为5cm他的半径是多少 50000平方厘米等于多少平方米 已知RT△ABC中,∠B=30°,∠C=90°,在此图的基础上添加适当的辅助线,求tan15°的值就是一个直角三角形 一个角30°一个叫60° 己知半径是4.5cm求圆的周长和面积 将30ml0.5摩尔/ml氢氧化钠溶液加水稀释到500ml,稀释后溶液中氢氧化钠的物质的量浓度为?这是高中必修一化学书上的一到练习题. 王大爷卖了香蕉6千克和苹果8千克,共卖了48元,3千克香蕉的钱数和四千克苹果的钱数相等,每千克香蕉和每千克苹果各多少元? 一种最简真分数,他们的分子与分母的乘积都是220这样的分数有多少个?从小到大排列最大的是多少?答案有木有- - 将30mL 0.5mol/L氢氧化钠溶液加水稀释到500mL,稀释后溶液中氢氧化钠的物质量浓度为多少? 王大爷买了5千克香蕉和8千克苹果,共花了66元,已知每千克香蕉比苹果便宜2.4元每千克香蕉和每千克苹果各多少元 有10.2g镁和铝的混合粉末溶于4mol/L的盐酸500ml中.若加入2mol/L,的氢氧化钠溶液,要使产生的沉淀的质量最大,则需加入的氢氧化钠溶液的体积为/A:100ml B:500ml C:1000ml D:1500ml 将30mol 0.5mol/L NaOH溶液剂加水稀释到500ml,稀释后溶液中NaOH的物质的量浓度为多少? 王大爷卖了香蕉和苹果14千克,共卖48元,每千克香蕉4.8元,每千克苹果2.4元,卖出的香蕉和苹果各多少元?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn