NDK开发(手动配置)

1、如果是在windows环境下开发,首先需要安装cygwin。

2、下载android-ndk,我的当前版本是android-ndk-r9d-windows,然后要在cygwin配置NDK的环境变量:


1)、首先找到cygwin的安装目录,找到一个home\<你的用户名>\.bash_profile文件,我的是:d:\cygwin\home\Administrator\.bash_profile,(注意:我安装的时候我的home文件夹下面神马都没有,

解决的办法:首先打开环境变量,把里面的用户变量中的HOME变量删掉,
在d:\cygwin\home文件夹下建立名为Administrator的文件夹(是用户名),
然后把d:\cygwin\etc\skel\.bash_profile拷贝到该文件夹下)。


2)、打开.bash_profile文件,添加NDK=/cygdrive/<你的盘符>/<android ndk 目录> 例如:

NDK=/cygdrive/d/android-ndk-r5
export NDK

NDK这个名字是随便取的,为了方面以后使用方便,选个简短的名字,然后保存。


3)、打开cygwin,输入cd $NDK,如果输出上面配置的/cygdrive/d/android-ndk-r5信息,则表明环境变量设置成功了。

3、创建JNI头文件:


  public class TestJni {
    
    static {
        System.loadLibrary("testSdk");
    }
    
    public native int add(int a, int b);
}

  然后用命令行 javah -jni com.example.XXX.文件名,就会生成一个JNI的头文件。


4、在根目录下手动创建jni文件夹,将JNI头文件拷入其中,实现接口功能:


   LOCAL_PATH := $(call my-dir)

   include $(CLEAR_VARS)

   LOCAL_MODULE    := hello-jni
   LOCAL_SRC_FILES := hello-jni.c

   include $(BUILD_SHARED_LIBRARY)

 

LOCAL_PATH必须位于Android.mk文件的最开始。它是用来定位源文件的位置,$(call my-dir)的作用就是返回当前目录的路径。

 

include $(CLEAR_VARS)的作用是清除一些变量的值,但是LOCAL_PATH除外。

 

LOCAL_MODULE是用来指定当前待编译模块的名称,在示例中的模块名称为hello-jni

 

LOCAL_SRC_FILES是用来指定参与编译的源代码文件。这里只编译hell0-jin.c

 

include $(BUILD_SHARED_LIBRARY)是用来指示将当前模块编译为共享库,前缀为lib,后缀为.so。

还有另外一个BUILD_STATIC_LIBRARY,是用来指示将当前模块编译为静态库的,前缀为.a,后缀为.a。

 

这就是一个最简单的Android.mk的结构。可能还有另外一点需要介绍:

LOCAL_C_INCLUDES:=include 这个是用来指定在编译时即将使用的c头文件的位置,以当前目录为起点。


5、创建.mk,用cygwin进行编译:

   cd /cygdrive/XXXX(JNI的目录);

   $NDK/ndk-build(执行编译命令); 下图表示编译成功.so在lib目录下生成。



6.最后在java程序里直接调用native的接口函数即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值