Ubuntu下android NDK开发,实例演示

一.NDK开发环境搭建

1、  下载Linux平台的NDK包,以android-ndk-r6b-linux-x86.tar.bz为例,下载地址为http://dl.google.com/android/ndk/android-ndk-r6b-linux-x86.tar.bz2

2、  将压缩包解压到HOME目录中,将解压后的路径加入到环境变量中,如在.bashrc文件末尾加入如下两行:

export ANDROID_NDK_ROOT=~/android-ndk-r6b

export PATH=${PATH}:${ANDROID_NDK_ROOT};执行命令:

source .bashrc

3.验证是否完成

$cd android-ndk-r6b/samples/hello-jni/jni  $ndk-build    

显示如下,表示成功

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Install        : libhello-jni.so => libs/armeabi/libhello-jni.so

 

二.NDK开发步骤

先列个步骤,再一步步实现

1、java建立函数接口 native

2、javac编译生成class

3、javah生成对应头文件

4、新建一个c文件实现接口函数

5、编辑mk文件,进行编译产生.so

6、在android项目中调用函数


1.建立你要实现的函数声明native,不要实现

package cn.buct.yangbo.helloworld;

public class JniTest {
    public native int add(int x,int y);
}

 

2.javac产生个class

 

3.在src目录下javah cn.buct.yangbo.helloworld.JniTest

 

4.在项目的根目录下建一个文件夹jni,把生成的.h文件放进去,新建一个c,随便起个名字,我的叫mylib.c 实现如下

#include <jni.h>
#include "cn_buct_yangbo_helloworld_JniTest.h"

JNIEXPORT jint JNICALL Java_cn_buct_yangbo_helloworld_JniTest_add (JNIEnv *env, jobject obj, jint x, jint y) {
            return x+y;}

 

5.建立一个mk文件,如下

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := mylib

LOCAL_SRC_FILES := mylib.c
include $(BUILD_SHARED_LIBRARY)

在jni目录下ndk-build,会生成.so文件

 

6.在android项目中调用

package cn.buct.yangbo.helloworld;

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

public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tv = (TextView) findViewById(R.id.tv);
        JniTest jniTest = new JniTest();
        int x = 200;
        int y = 200;
        tv.setText(x + "+"+ y + "=" + jniTest.add(x, y));


    }
   
    static {
     System.loadLibrary("mylib");
    }
}

 

在屏幕上显示200+200=400

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值