在Windows环境下,使用Android NDK开发实例

1、下载android-ndk-1.6_r1,解压放在d:/java目录下。(你也可以自己指定其他位置)

2、下载cygwin。

   建议先从网上下载到本地,然后再安装。选择从台湾的站点下载,比较近,速度会快一些。

   安装的时候,选择以下几个选项的最高版本进行安装。

  • autoconf2.1
  • automake1.10
  • binutils
  • gcc-core
  • gcc4-core
  • gdb
  • pcre
  • pcre-devel

3、运行cygwin。

    1)、在cygwin/home/你计算机名 文件夹下,找到.bash_profile,打开,在最后加入以下文字。关闭,重启。

    ANDROID_NDK_ROOT=/cygdrive/d/java/android-ndk-1.6_r1

    export ANDROID_NDK_ROOT

    2)、输入 cd $ANDROID_NDK_ROOT,进入根目录下。如果报错则找出问题修改。

    3)、输入 build/host-setup.sh。编译安装NDK本地环境。如果报错则找出问题修改。

    4)、输入 make APP=hello-jni,如果一切正常会提示编译成功。到这一步就说明你以上步骤都做好了,完成的很棒!


如果是android-ndk-r6,把工程目录放到$ANDROID_NDK_ROOT/sources/下,输入

../../ndk-build,即可编译。


4、新建一个Android工程jni-hello。

   具体如何建立android工程,请到百度或者google上搜。

   1)、新建一个类:jni_hello.java

package practice.jni_hello;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class jni_hello extends Activity {

    static {
        System.loadLibrary("jni-hello");
    }

    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String msg = sayHello();
        TextView tv = new TextView(this);
        tv.setText(msg);
        setContentView(tv);
    }
   
    public String sayHello() {
        return displayHelloWorld();
    }

    private native String displayHelloWorld();
}

 

  2)、在工程jni-hello根目录下,新建一个批处理c.bat。运行生成practice_jni_hello_jni_hello.h文件。

rem 具体JDK_PATH路径你可以根据自己的机器自行修改

set JDK_PATH=D:/java/jdk1.6.0_10
cd bin
%JDK_PATH%/bin/javah -jni practice.jni_hello.jni_hello
pause

 

4、自己新建一个jni-hello.c文件,放在你的ndk根目录下的apps/jni-hello/project/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 the License.
 * 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 in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
#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
Java_practice_jni_1hello_jni_1hello_displayHelloWorld( JNIEnv* env,
jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

 

5、进入cygwin,输入make APP=jni-hello。

   这样,在project/libs/armeabi就生成了libjni-hello.so文件。

 

6、把libs文件夹全部拷贝到android工程目录下去。运行Android工程,你就能看到结果了!


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值