Android下使用NDK 笔记

1.建立android工程,如JNITest,在包com.android.test下建立类JNIactiviy,JNIuseSo.

2.在JNIuseSo中声明native方法,如public native String getCString();

3.进入工程目录的bin目录中,使用命令javah -classpath ./classes -jni com.android.test.JNIuseSo

    则在bin目录下生成com_android_test_JNIuseSo.h头文件。

注意:此步骤可能报错误:提示找不到类android.app.Activity.解决方法是:换成命令

javah -classpath $ANDROID_PLATFORM/android.jar:./classes -jni com.android.test.JNIuseSo

其中ANDROID_PLATFORM定义了你安装android_sdk中的platform中的使用到的对应android版本的系统库。

我的是ANDROID_PLATFORM=/home/zhenglei/Install/android-sdk-linux/platforms/android-15

定义在~/.bashrc文件中。
4.在工程到根目录下创建一个文件夹用来保存要实现的C/C++工程,如jni.

5.把刚刚生成的头文件放到jni下,并且在jni文件夹中建立一个C/C++文件,如a.c等实现生成到头文件中声明的函数。

6.在jni文件夹下写一个Android.mk文件,配置了编译的一些要求,如:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := JnitestSo
LOCAL_SRC_FILES := a.c
include $(BUILD_SHARED_LIBRARY)

7.cd到android工程目录或jni目录下,执行命令$NDK/ndk-build将在android工程下的libs/armeabi下生成.so库或者.a库,

依据Android.mk的配置而定。如生成库libjni_test.so

8.生成.so库之后,就可以在java代码中调用.so库中到native函数了,

如在JNIactiviy中调用首先要进行库到加载:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值