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

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

 

推荐十款超赞的Google Chrome扩展插件 在团队中进行单元测试/TDD的12条经验 小米游戏中心6月数据报告:页游转手游怎么搞? 司机请专心:安全是车载APP要解决的大问题 Windows 8之父Steven Sinofsky:跨平台开发会为什么越来越难? 一些达成共识的JavaScript编码风格约定 语义技术——微软、谷歌和Facebook的必争之地 初创公司PlumGrid:前思科工程师的“逆袭之战” Firefox OS智能手机继续扩张 德国市场今日开售 如果让莎士比亚、海明威编写JavaScript代码 开源的数据可视化JavaScript图表库:ECharts 已迭代1.3亿年的分布式系统——Anternet 软硬整合:14个可改变世界的Kickstarter项目 是时候放弃MySQL的五大理由 比特币钱包Coinbase推出即时交易功能,无需银行转账手续 回收不活跃邮箱续:雅虎高管称能保证前用户信息和数据安全 移动周报:IT民工携娇妻转战传统行业,黄太吉的移动互联网营销 独立游戏开发的传奇!LIMBO开发商Playdead公司CEO专访 Firefox OS模拟器4.0正式发布 支持模拟触摸事件 莫轻言已成功部署大数据,也许你离达标还相去甚远! 基于Java的四大开源测试工具 Firefox OS:称霸移动市场?我们的计划更长远! 支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现 传苹果为iWatch招兵买马 以确保明年发布新产品 降价高达1200元的Surface RT,并不值得你购买 Daux.io:开源的项目文档生成器 避免代码注释的五大理由 安徽农信:30人,13轮测试,完成日均270万笔交易的综合业务系统架构调整 研究员带来5D光存储技术:容量达360TB,寿命高于百万年 LSI闪存加速或助力互联网IDC自我设计与建设 怎样让用户从100涨到200万?硅谷创业教父如是说 我想听网络广播, 怎样做呢? 一个小问题 ????? 回答“一个动态创建孔件时的错误,请大家指点”贴后请到这里面领分(共700分)(七) 计算机知识大赛 我的问题很简单,可是我不会! 回答“一个动态创建孔件时的错误,请大家指点”贴后请到这里面领分(共700分)(八) 这样的游戏一个值多少钱?请报价。 高手快进!小弟有一事不明!!告急! 取ADO的recordset对象的recordcount属性总是 -1,如何解决? 这样的网络游戏一个值多少钱?请报价。 软件发布:《加密樵夫》 软件发布:《加密樵夫》 谁有Dreamweaver4.0的注册码,我晕,555555555…~~~~~~~~~ 我曾在本论坛看到一篇“用纯ASP代码实现图片上传并存入数据库中”的文章,可是怎样实现一个页面上传多幅图片呢,高手能否帮忙看一下? 如何检测一个超链接是不是死链接 软件发布:加密专家系统 只要点一下,妹妹我就以身相许 谁有Dreamweaver4.0的注册码,我晕,555555555…~~~~~~~~~11 请问只要是线程就有消息队列,还是此线程产生window后才有消息队列?在控制台程序中,在消息循环中,当受到一wm_timer消息时,此消息将发送给那一window procedure? 软件发布:三维几何画板 CSDN有徐州的朋友吗 请教高手一个关于图像格式的问题 高手清帮忙:如何获得一个控件的电子签名认证?急,急,急! 觅有时间有经验用MAPINFO开发GIS的高手? IE 能不能同时浏览2种以上不同设置的网页? 初级asp问题 询问-----上海在哪里有软件考试报名? 怎样用SDK的方法改变文本框的前景色和背景色?(内空) 能推荐几个有关COM、ActiveX技术的网站吗?每个10分不够再加。 请问ljhua,ASP网页怎样调用*.bat文件,是服务器上的还是客户机上的bat? ****************** 先散掉点分,省得走的时候累赘 ****************** UNICODE和WinMain 一个空战游戏,附源程序! 创建WebSnap应用程序(一) 请教一个http错误号 vs.net安装(2) 请教高手,怎样使用信使服务向局域网内的其他用户发通知? 使用过DeviceIoControl的高手请进: 不知用过jbuilder5的朋友有何感想 如何用程序中断拔号连接? DLL调用 搞什么鬼?不给超过三次? ADOTable如何查询数据? 软件发布:小精灵 vcguy,come on! 我在用resin做标签库时遇到问题,请大家帮忙。 没有源代码的情况下,由*.DLL该如何生成相应的*.LIB文件? 那位先生对 Oracle Spatial比较感兴趣~~~~~~~~~~~~ 如何在电子邮件中加入JAVA语句,重谢!!! 我不知道~ 竟猜: 成精的狐狸不是狐狸mm就是狐狸jj。那HolyFire 是狐狸jj还是狐狸mm呢?? 已知a等于2加根号3分之1,b等于2减根号3分之1 求a的平方加b的平方加5ab减3a减3b万分紧急= = 已知线段AB上有两点C,D,且AC:CB=4:3,AD:DB=2:5,若CD=4cm,求线段AB的长. 在括号里填上符合条件的最小自然数( )÷( )=19······6 初一数学: (a-b)*(b-a)的3次方,等于多少 几个数学题(初一水平)1.用平面截长方体,截面的形状不可能是( )A.三角形 C.梯形 D.七边形2.八边形有_个角构成,从八边形的某个顶点出发,分别连接这个顶点与其余各顶点,可以把这个八边形分割 8[ ]8[ ]8[ ]8=2括号里填多少 方程组2x-y=3,4x-2y=5有解吗?根据此方程组的特征,若二元一次方程组ma-3b=9,2a-b=1无解,求m的值 2分之1+4分之1+8分之1+16分之1+...+256分之1请写出规律和解题思路~ ( )+( )=( )( )-()=( )( ) 把这几个数字填到括号里去 初一数学题二元一次方程组养牛场原有30只大牛和15只小牛,1天约用饲料675KG:一周后又购进12只大牛和5只小牛,这是1天约用饲料940KG.饲料员李大叔估计每只大牛1天约需饲料18~20KG,每只小牛1天 1减2分之1减4分之1减8分之1减16分之1…减256分之1= 在括号内填上合适的数字(不能重复)1/( )+1/( )+1/( )+1/( )+1/( )+1/( )+1/( )+1/( )=1 1 +2*3*4*5*6*7*8*9*10*11*12*13*14*15*46*78*95*82*51**258*369*741*500*1000等于几?知道是多少么 太多 计算器按不出来 一个车间共有86名工人,已知每人每天可以做甲零件5个或乙零件4个或丙零件3个,而3个甲零件、2个乙零件、1个丙零件才能配成一套,问怎样分工才能使作出的三种零件恰好配成套? 1又2分之1+2又4分之1+3又8分之1一直加到7又128分1等于多少啊?急急急!现在快! 1/1×3+1/3×5+1/5×7+.+1/49×51=多少? 初一数学二元一次方程组题 就一道!就一道!请大家别嫌分少!需要一定的过程甲骑自行车从某城出发2小时后,乙步行从同路追赶了3小时后两人相距16km,此时乙继续前进追赶,甲在原地休息了8/3小 1又2分之1+2又4分之1+3又8分之1一直加到6又64分1等于多少啊? 7+2(x+7)=3\17等于? 初一数学二元一次方程组题有两个学生参加四次测验,他们的平均分数不同,但都是低于90分的整数,他们又参加了第五次测验,测验后,他们的平均分数都提高到90分,问在第五次测验前,这两个学 1又2分之1+2又4分之1+3又8分之1一直加到10又1024分之1等于多少啊? 7+2x=二分之十七,x等于多少? 如图:∠DAB=30度,∠B=60度,AB⊥AC.1.∠DAB+∠B等于多少度?2.AD与BC平行吗?AB与CD平行吗? 8分之3和9分之4,哪个大? 83减去x的2倍等于17,求x 初一数学题,快、急~ 如果设AB为有理数,A-B一定等于B-A吗?如果不是,你能举出几个反例吗? 1.8分之3,12分之3和12分之2 2. 17分之5,16分之9和17分之9 小到?1.8分之3,12分之3和12分之2 2. 17分之5,16分之9和17分之9 小到大排列.%D£.14分之4,9分之4和9分之7 小到大排 x平方加y的平方减六x加八y加25等于零求x的y次方? 设a※b=(1/a-1/b)+ab,求[1※(-2)]※4 在比例12:7=48:18中,如果第二项增加他的七分之二,那么第三项必须减少他的[]才能组成比例 已知二x加y等于七x加二y等于八x减y等于几 其中A等于4分之3B等于负3分之2 X-二分之五乘以X=二十五分之十八方程题,我不会打分数 75等于9出以几等于几比40等于18比几 若a减3b等于负二则6减3a加9b的值为多少? -18-25=? 数学题解答:笑脸+月亮等于26,月亮-笑脸等于18,笑脸是多少,月亮是多少?请快点,我很急,谢谢! 用公式法解关于x的方程:x^2-2ax-b^2+a^2=0 数学题(填括号)~!谢谢3:4=24分之( )=( )%=( ) 小数 已知2a减3b等于3,则2减2a加3b等于多少 用公式法解关于x的方程x2-2ax-a2=0(a大于0)注意是公式法!完整、 括号里填什么41、 28 、 27 、 83、( )、65A、36B、30C、45D、54 一个多项式减去负2a减1等于6乘a的平方加3乘a减9,则这个多项式是?我现在急需,回答号的追加!我现在急需,回答好的追加!! 用公式法求关于x的方程x^2+2ax=b^2-a^2 1/12=1/() 1/()括号里填什么自然数 十分之九减一百分之九十六等于几 在正方形的城堡里,16个卫兵沿着城墙站岗,小队长将他们分配成如图9-18所示,每边各5人,这时中队长来了,他不满意这种分配方式,于是下令将每边改为6人.中队长走后,将军来了,他认为中队长 1/12=1/()+1/() 括号里要填不同的自然数 回答下列问题 1.由等式3a加五等于3b减5,能不能得到a等于b?为什么? (1) 一个六位数,左端的数(十万位数)是1,如果把左端的数1移到右端( 为个位数).那么可能新的六位数等于原来的六位数的3倍.求原来的六位数.(2) 郑阿姨有一回用一筐橘子招待远道而 三个连续自然数的和是27,这三个数的最小公倍数是( ). 已知a+b=5,ab=3,那a和b分别等于多少?3a-5ab+3b-4的值是多少? 1.甲.乙两人在长400m的环形跑道上从同一地点开始跑步,甲比乙跑得快,若同向跑,则他们每隔3分20秒相遇一次.求甲、乙的速度.2.一支队伍长450m,以1.5m/s的速度前进,通信员从队尾到队头送信,送到 七个连续的自然数 最大的两个数的和比最小的数大1998 那么中间的那个数是?要用方程和等差数列来解 已知3a的平方-4的平方=5 2a平方+3b的平方=10 求-15a平方+3b的平方等于 已知A=5x²-mx+n,B=-3y²+2x-1,若A+B中不含有一次项和常数项,求m²-2mn+n²的值 已知:2^a·27^b·37^c=1998其中a.b.c为自然数,求(a-b-c)^1998的值 已知a等于2加根号3分之1,b等于2减根号3分之1求a的平方加b的平方加5ab减3a减3b 已知线段a、b、c,求作△ABC,使AB=b,BC=a+c,AC=c. 七个连续自然数的和,最大的两个数的和比最小的数大1998那么中间的那个数的和是多少?要求出中间那个数算式怎么列?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn