windows下android ndk开发入门

原创 2012年03月30日 11:57:44

一、 Android NDK r5安装

1 cygwin的安装和简单配置

首先到http://www.cygwin.com下载setup.exe ,接着建立安装目录,如X:/cygwin(我用的是E:/cygwin ) ,将setup.exe放到此目录。

启动安装:


BEGIN-> 点击setup.exe


Next->Install from Internet(选择在线安装方式)

Next->Install from Internet(选择在线安装方式)


Next->填写Root Directory,如X:/cygwin(选择安装路径)


Next->填写Local Package Directory,如X:/cygwin/ftp(选择下载文件存放的目录)


Next->Direct Connection(选择网络连接方式)


Next->选一个较快的ftp(选择下载镜像站点)


Next->(开始下载安装)

到了关键步骤,点击All旁边的旋转状图标,将Default切换至Install全部安装;


选择创建快捷方式。->END

最后启动Cygwin,测试安装是否成功:

点击快捷方式打开控制台,如果是域用户,按照提示makepasswdmakegroup即可。

输入gcc –v 以及make-v,出现版本信息表示安装成功

输入命令检查


出现以上版本信息则表明makegcc 已经安装成功。

2 Android NDK r4 Windows

首先到官网下载Android NDK r4 Windows

android-ndk-r4直接解压就行了,我将其放在了D:\cygwin\program\android-ndk-r4

cygwin安装目录下打开文件home/<你的用户名>/.bash_profile文件中最后添加环境变量

NDK=/cygdrive/<ndk所在路径>

export NDK

我的是:

NDK=/cygdrive/D/cygwin/program/android-ndk-r4

export NDK

 

其中"NDK"这个名字随便起,因为后面要用经常使用,建议不要太长。

重启cygwin,输入cd$NDK进入对应目录,就成功了。

注意:添加时用UltraEdit打开添加,如果是中文OS 使用记事本或者写字板打开编辑后,重新启动Cygwin 会报错。可以按照下图方式转换:


二、JNI实例

 

1安装成功后编译NDK中的一个例子命令行:


编译完成后在E:/Android_NDK/android-ndk-r5/samples/hello-gl2文件夹中会生成一个文件夹libs,里面有一个子文件夹armeabi,里面生成libgl2jni.so文件

2一个简单的JNI例子

下面用一个简单的例子介绍怎么生成一个.so文件以及在Android项目中怎么调用.so文件。

①  首先,用Eclipse建立一个ANDROID的工程,命名为JNITest,建议一个jni调用的类封装native method

package jni.sam.you;

 

public class MyJNI

{

    public native int numPlus(int a,int b);

static{

System.loadLibrary("hellojni"); }

}

打开windows命令行窗口,cd命令到eclipse工程目录下bin目录,我的是E:\androidworkspace\JNITest\bin

键入javah -jni jni.sam.you.MyJNI 来编译eclipse生成的.class文件

可以生成jni_sam_you_MyJNI.h这个文件的主要作用就是生成函数名,把这个函数名拷出来这个文件就可以删了。

jni_sam_you_MyJNI.h

/* DO NOT EDIT THIS FILE - it is machinegenerated */

#include <jni.h>

/* Header for class jni_sam_you_MyJNI */

 

#ifndef _Included_jni_sam_you_MyJNI

#define _Included_jni_sam_you_MyJNI

#ifdef __cplusplus

extern "C" {

#endif

/*

 *Class:     jni_sam_you_MyJNI

 *Method:    numPlus

 *Signature: (II)I

 */

JNIEXPORT jint JNICALLJava_jni_sam_you_MyJNI_numPlus

 (JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus

}

#endif

#endif

然后将这个函数名拷贝出来实现他的函数体

jni_sam_you_MyJNI.c

/* DO NOT EDIT THIS FILE - it is machinegenerated */

#include <jni.h>

/*

 *Class:     jni_sam_you_MyJNI

 *Method:    numPlus

 *Signature: (II)I

 */

JNIEXPORT jint JNICALLJava_jni_sam_you_MyJNI_numPlus

 (JNIEnv *env, jobject jj, jint a, jint b)

{

        returna+b;

}

注意:参数名一定要补全,不然编译不通过


然后写在android工程jni目录下写Android.mk文件,同时把.c源文件拷贝到jni文件夹下

# Copyright (C) 2009 The Android Open Source Project

#

# Licensed under the Apache License, Version 2.0 (the"License");

# you may not use this file except in compliance with theLicense.

# You may obtain a copy of the License at

#

#      http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to inwriting, software

# distributed under the License is distributed on an"AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, eitherexpress or implied.

# See the License for the specific language governingpermissions and

# limitations under the License.

#

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    :=hellojni

LOCAL_SRC_FILES := jni_sam_you_MyJNI.c

include $(BUILD_SHARED_LIBRARY)

之后在cygwin下到eclipse工程目录的jni文件夹下,(注: cd .. 可以返回上级目录,cd e:可以到e盘),输入命令:$NDK/ndk-build


出现上面内容说明编译成功,返回eclipse右击工程名字选择刷新,得到的结构目录如下:


在主activity里调用native  method

package jni.sam.you;

 

import android.app.Activity;

import android.os.Bundle;

 

public class Main extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

   

    static

   {

        System.loadLibrary("hellojni");

    }

   

    @Override

    protected void onResume() {

    super.onResume();

    System.out.println("###########");

    System.out.println(newMyJNI().numPlus(2, 3));

   

}

}

从logcat里即可看到对应结果






















版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android NDK开发入门

  • 2011-11-15 16:51
  • 900KB
  • 下载

android ndk开发入门

  • 2013-09-25 11:46
  • 169KB
  • 下载

Android NDK:①开发环境的搭建(Windows下Eclipse无cygwin)

如题:Android NDK:①开发环境的搭建(Windows下Eclipse无cygwin)

Windows平台下使用Android NDK进行开发

作者:温尚书,华清远见嵌入式学院讲师。 Android系统中的应用程序都是用Java开发的。Android NDK使我们能够在android上使用C/C++开发的原生代码。有两个理由使用NDK: 一...

windows下用ADT进行android NDK开发的详细教程(从环境搭建、配置到编译全过程)

近期在学习android NDK开发,它比开发一般的android工程更加繁琐,特别是和C/C++代码交叉编译的过程。本文是windows下用ADT进行android NDK开发的详细教程,包括了从环...

Android NDK开发(windows)

开发环境搭建 首先需要下载Android NDK  https://developer.android.com/tools/sdk/ndk/index.html 将下载文件解压缩到本地某目...

Windows 7 64下android NDK开发环境的搭建与配置

a..前期准备 1.操作系统的xuanze

android ndk开发环境搭建(windows环境下)

这里讲解的是android ndk在windows下开发环境搭建的过程 1.下载ndk和cygwin    ndk的下载地址:http://dl.google.com/android/ndk/an...

windows 下搭建android NDK开发环境

windows 下搭建android NDK开发环境   参考自: http://ygc87.blog.163.com/blog/static/23960652011755171688/ htt...

Android NDK开发环境搭建(Windows7平台) .

步骤一:下载并安装NDK 首先,前往从网站http://developer.android.com/sdk/ndk/index.html 获取Windows 平台的最新的Android NDK 套件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)