windows下android ndk开发入门
2012-03-30 11:57
260 查看
一、 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,测试安装是否成功:
点击快捷方式打开控制台,如果是域用户,按照提示makepasswd和makegroup即可。
输入gcc –v
以及make-v,出现版本信息表示安装成功
输入命令检查
出现以上版本信息则表明make和gcc
已经安装成功。
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里即可看到对应结果
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,测试安装是否成功:
点击快捷方式打开控制台,如果是域用户,按照提示makepasswd和makegroup即可。
输入gcc –v
以及make-v,出现版本信息表示安装成功
输入命令检查
出现以上版本信息则表明make和gcc
已经安装成功。
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里即可看到对应结果
相关文章推荐
- windows phone开发-windows azure mobile service使用入门
- Kinect for windows 开发入门 一:基本概念
- Kinect for Windows SDK开发入门(五):景深数据处理 下
- [译]Kinect for Windows SDK开发入门(十):手势识别 上:基本概念
- Windows IOT 开发入门(准备工作)
- Kinect for Windows SDK开发入门(十二):语音识别 上
- Kinect for Windows SDK开发入门(一):开发环境配置
- lae界面开发工具入门之介绍十四--《介绍lae在windows平台上如何打包编译》
- Android NDK开发入门——实例讲解
- [译]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上
- [译]Kinect for Windows SDK开发入门(十五):进阶指引 下
- Kinect for Windows SDK开发入门(一):开发环境配置
- [译]Kinect for Windows SDK开发入门(十四):进阶指引 上
- Ruby入门:windows下Ruby开发环境搭建
- Android Ndk开发入门(实现静态注册,动态注册)
- Qt入门-使用QT+VS2008开发windows应用程序
- Kinect for Windows SDK开发入门(一):开发环境配置
- Windows内核驱动开发入门学习资料
- Kinect for Windows SDK开发入门(一):开发环境配置
- Kinect for Windows SDK开发入门(九):骨骼追踪进阶 下