windows下androidNDK的开发

这篇文章是我一年前写的,当时只是写的word文档,今天将其中的步骤按照该文档重新走了一遍,还是挺详细的,不会没有关系,只要认真参照教程,那么windows下androidNDK开发不是梦,好了,下面看教程。

android应用的ndk开发基础,即在android应用中用java文件调用c文件

1.首先需要安装windows下模拟linux环境的cygwin软件,如下:

1.下载setup.exe

到官网www.cygwin.com 在屏幕的中央是一个黑绿两色组成的 “C” 徽标,标题是“Install or update now.”。在该链接上点击,这将下载一个小程序 setup.exe(250KB)。这个安装程序将在您的机器上引导 Cygwin 环境的安装或更新过程。

2.运行setup.exe,进行安装,如下图:

图 1. Cygwin 环境的安装向导

点击 Next按钮。

选择下载位置

在这个页面上,选择"Install from Internet"。

图 2. 选择安装类型

一直点击 Next按钮,一直到出现下图界面:

选择一个下载站点。因为这些站点是义务的镜像,所以选择一个下载点有点风险(通常它们是可用的,但有时不可用)。通常,试试离你比较近的那个站点。(有一个http://mirrors.163.com最快)

点击 Next按钮。

选择包进行安装

在这个页面上,您将选择要安装的包。默认情况下,Cygwin 基本包将不安装 GCC,因此,您必须修改默认设置。

将鼠标移动到 Devel边的加号(+)上,然后点击它展开 Devel类。

这一步,我们选择需要下载安装的组件包,为了使我们安装的Cygwin能够编译程序,我们需要安装gcc编译器,默认情况下,gcc并不会被安装,我们需要选中它来安装。为了安装gcc,我们用鼠标点开组件列表中的“Devel”分支,在该分支下,有很多组件,我们必须的是:

binutils

gcc

gcc-mingw

gdb

make

鼠标点击组件前面的循环按钮,会出现组建的版本日期,我们选择最新的版本安装,下图是选中后的四类组件的截图:

binutils 组件

gcc 组件

gcc-mingw 组件

gdb组件

注意还有make组件

选完以后,我们选择下一步,进入安装过程,如下图所示,

一直到下载完成,就ok了!

3.测试是否安装成功

运行cygwin,输入make -v 和 gcc -v 如果能找的,则表示安装成功。

安装NDK

安装ndk很简单,只需要把下载的ndk文件解压缩到指定的目录即可。

配置NDk

修改Cygwin目录/home/username 下的.bash_profile文件,在文件末尾加入如下代码:

NDKROOT=/cygdrive/ndk文件的路径(如NDKROOT=/cygdrive/d/android/ndk)

export NDKROOT

(注意:NDKROOT名字可以自己,ndk文件路径是你 解压缩后ndk的路径,特别注意将斜杠换成反斜杠 和 去掉d:中的:(windows和linux路径区别问题))

2.打开eclipse,新建android工程hello-jni,在工程的根目录下新建jni文件夹

A.在HelloJni.java的关键代码如下

TextView  tv = new TextView(this);
 tv.setText( stringFromJNI() );
 setContentView(tv);
public native String  stringFromJNI();//这个是声明的本地方法
public native String  unimplementedStringFromJNI();
 //用静态快加载libhello-jni.so文件
static {
        System.loadLibrary("hello-jni");
}

B.开始,运行cmd,cd进入hello-jni工程的HelloJni.java的目录,javac HelloJni.java生成字节码

C.进入hello-jni工程的bin目录,运用javah生成  .h  文件

Javah  -classpath . -jni 包名.类名

3.将生成的  .h  文件的函数头文件,复制到新建的hello-jni.c文件里,注意在hello-jni.c文件里需要引入#include <jni.h>文件,hello-jni.c文件如下:

#include <string.h>
#include <jni.h>

/* This is a trivial JNI example where we use a native method
 * to return a new VM String. See the corresponding Java source
 * file located at:
 *
 *   apps/samples/hello-jni/project/src/com/example/hellojni/HelloJni.java
 */
Jstring
//这个是用javah生成的头
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
#if defined(__arm__)
  #if defined(__ARM_ARCH_7A__)
    #if defined(__ARM_NEON__)
      #define ABI "armeabi-v7a/NEON"
    #else
      #define ABI "armeabi-v7a"
    #endif
  #else
   #define ABI "armeabi"
  #endif
#elif defined(__i386__)
   #define ABI "x86"
#elif defined(__mips__)
   #define ABI "mips"
#else
   #define ABI "unknown"
#endif

    return (*env)->NewStringUTF(env, "Hello from JNI !  Compiled with ABI " ABI ".");
}

4.新建android.mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni

LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

简单说明一下

LOCAL_PATH := $(call my-dir)

LOCAL_PATH 表示此时位于工程目录的根目录中 (call my-dir)返回当前目录的地址

LOCAL_MODULE := NewJNI

LOCAL_MODULE 用来区分 Android.mk 中的每一个模块。文件名必须为一 不能有空格 这个

是你以后库文件生成的文件名 编译器会自动给你加上前缀 lib 和后缀.so.

LOCAL_SRC_FILES := com_demo_jni_Jni.c

include $(BUILD_SHARED_LIBRARY)

BUILD_SHARED_LIBRARY 的意思就是建立一个动态共享库库

2.,将写好的hello-jni.c文件和android.mk文件拷贝到jni文件夹下

3.右键工程,properties

点击builders----->new------->program

Location的参数是cygwin的安装路径下的bin文件夹下的bash.exe文件

Working Directory的参数是cygwin的安装路径下的bin文件夹路径

Arguments的参数是:

--login -c “cd/cygdrive/创建的工程的路径&&$NDK/ndk-build”

在这里我的创建的工程的路径是:f/codethree/hello-jni(注意f盘符没有:即不是f:)

$NDK是当时安装cygwin时在cygwin的安装路径下的C:\cygwin64\home\Administrator的.bash_profile文件配置的ndk的解压路径,如下:

NDK=/cygdrive/f/android/androidNDK/android-ndk-r9d-windows-x86_64/android-ndk-r9d

export NDK

注意在勾选Specify working set of relevant resources时指定资源选择你的工程的jni目录即可。

当以上步骤都正确配置无误,保存配置后应该就会自动编译jni目录下的C相关代码并输出相应的.so库文件到工程的libs目录下,libs目录会自动创建。也会自动创建obj目录

编译时控制台输出类似如下:

再运行工程,结果正确。

以后修改了C代码,保存后也会自动触发编译,省时省力。

若是用代码方式实现的编译生成的.so文件的方式,如下:

截图如下;

四、配置NDK路径设置

可以在cygwin中通过vim修改,也可以在windows安装目录中修改 home\<你的用户名>\.bash_profile 文件中最后添加环境变量

NDK=/cygdrive/e/Andriod/develop/android-ndk-r4

export NDK

其中NDK=/cygdrive/<你的盘符>/<android ndk 目录> ,"NDK"这个名字随便起,以后经常用不要太长。

重启cygwin,输入:

cd $NDK

可进入ndk对应目录说明设置OK。

五、编译演示工程

现在就可以编译相关NDK工程了(一些用c/c++写的程序),编译方法如下:

1、在cygwin命令行下,进入android项目工作目录:

cd $NDK

2、依次进入samples\hello-jni目录,(完整路径示例: E:\Andriod\develop\android-ndk-r4\samples\hello-jni)

3、运行

$NDK/ndk-build

注意:该命令$NDK和/ndk-build是连接到一起的,中间没有空格,实际使用时是打入完整的$NDK/ndk-build,不要只打ndk-build。

4、正常编译完成后会在你的项目libs/armeabi目录下生成对应的 .so文件。

至此,window下androidndk的开发环境搭建以及简单的开发案例就结束了。

时间: 2024-12-13 14:08:47

windows下androidNDK的开发的相关文章

Windows下Ionic Android开发环境搭建

转自 http://www.itwap.net/ArticleContent.aspx?id=26 来源: itwap.net 作者: 词略 时间: 2015-4-2 16:57:28 (一)Ionic简单介绍:   首先,Ionic是什么. Ionic是一款基于PhoneGap及AngularJS开发Hybrid/Web APP的前端框架,类似的其他框架有:Intel XDK等. 简单来说就是可以将你的Web应用打包发布成IOS/Android APP,并且提供了PhoneGap之外很多强大的

在windows下进行linux开发:利用Vagrant+virtualbox(ShowDoc与mp3dish的作者)

1,介绍Vagrant 我们做web开发的时候经常要安装各种本地测试环境,比如apache,php,mysql,redis等等.出于个人使用习惯,可能我们还是比较习惯用windows.虽然说在windows下搭建各种开发环境是可行的,各大开发环境都有windows版本.然而在windows下配置有时候会显得繁琐,并且还会导致开发环境(windows)和生产环境(lunix)不一致.能不能在windows下也像linux那样开发?也许你想到了,用虚拟机.用虚拟机装个linux系统就好了.装完lin

Windows下搭建PHP开发环境

Windows下搭建PHP开发环境 一.准备工作-所需软件 ·   Apache  \php\httpd-2.2.25-win32-x86-no_ssl.msi ·   PHP \php\php-5.3.1-Win32-VC6-x86.zip ·   Oracle client 10g\php\client 二.安装软件 安装Apache: 双击安装,与安装其他Windows软件没有什么区别,在填Server Infomation时,并没有特殊规定,只要输入的信息符合格式即可. 安装完成之后,在

Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵扯出更多让我困惑的问题. 为了将这些困惑一网打尽,我花了一下午加一晚上的时间查阅了大量资料,并做了一番实验后,终于把这些困惑全都搞得清清楚楚了. 说实话,之所以花了这么多时间,很大程度上是由于网上的资料几乎全都是支离破碎.以讹传讹的.既然我已经搞懂了,就花时间整理出来,即方便自己看,也便于大家阅读.相信通过这篇文章,可以解答很多在Windows下搭建PHP开发环境的朋友的

Go语言学习笔记(一) : 搭建Windows下的Go开发环境

最近突然对Go语言产生了兴趣,主要是因为在使用python的时候遇到了一些不爽的问题,然后发现了Go.Go是Google出的一个动态语言,语法和C++接近,性能也非常的好,而且还支持编译成exe发布,并且不依赖任何虚拟机(其实是打包在exe里面了),这种好语言怎么能够错过?所以便一时兴起,开始学习了起来.由于本人还处于异常小白的阶段,所以文章中可能不免有些错误,欢迎大家各种指正. 安装Go 前往Go语言的官方网站:http://golang.org/, 下载对应平台的安装包.如果是x86的系统可

windows下python web开发环境的搭建

windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi 不多说,装完后把C:\Python27加入到path环境变量里. 然后就溜溜python,看看version啦.OK,next step. 二. python web开发框架django安装 django是一个采用

在windows下进行linux开发:利用Vagrant+virtualbox

1,介绍Vagrant 我们做web开发的时候经常要安装各种本地测试环境,比如apache,php,mysql,redis等等.出于个人使用习惯,可能我们还是比较习惯用windows.虽然说在windows下搭建各种开发环境是可行的,各大开发环境都有windows版本.然而在windows下配置有时候会显得繁琐,并且还会导致开发环境(windows)和生产环境(lunix)不一致.能不能在windows下也像linux那样开发?也许你想到了,用虚拟机.用虚拟机装个linux系统就好了.装完lin

转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模式. 今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵扯出更多让我困惑的问题. 为了将这些困惑一网打尽,我花了一下午加一晚上的时间查阅了大量资料,并做了一番实验后,终于把这些困惑全都搞得清清楚楚了. 说实话,之所以花了这么

windows下cocos2dx3.0开发环境及Android编译环境搭建

cocos2dx更新到了3.x版本,自己一直没有换,现在开发组要求统一换版本,我就把搭建环境的过程记录下来. 一.Windowns下开发环境搭建 1.  所需工具 1)cocos2d-x-3.0rc0.zip   http://cn.cocos2d-x.org/download/  截止写博文时,最新版本为V3.2. 2)VS2012 http://www.baidu.com/s?wd=VS2012 3)Python  https://www.python.org/download/releas