Android ndk开发swig编译jni接口

相信越来越多Android程序员需要用到Android ndk开发swig编译jni接口,因为这设计到底层编程,如果开发的项目是有硬件产品的话,那更要熟悉这方面的编程。我网上也看了很多关于这方面博客。总的来说,都有一定区别。那我介绍也是跟网上有一定的区别,首先说一下编译环境配置。Android开发编译环境就不用我多说了吧。我用ndk版本是这个android-ndk-r8d-windows,swig编译时这个swigwin-3.0.2。如果怕网上找不到这两个压缩包,就评论区留下邮箱吧。

1、加载ndk位置,首先说一下这个路径,一定不能有空格,或者中文。

window—-preferences——Android——NDK 如下图:

二、项目右键找到Android tool——add native suppot 按下去,出现下图:确定

三、现在项目的目录结构是这样的。如下图所示:

四、配置swig路径。以及输出目录。

点击如下图上方箭头所示,出现external tool configurations,点击这个。如图

在上图中左侧新建,输入名称。然后是swig的路径,每个人按照自已去弄。

working directory: 这个是一样 ${project_loc}

arguments:

-c++ -java -package com.example.jnidmeo -outdir src/com/example/jnidmeo jni/Unix.i

这里意思是编译成java存放的目录,以及需要编译c++文件的位置,根据自已项目包名填写。

apply同意,如果你还没写好c++,就不要点击run。写好要编译c++,在点击run。

五、jni目录下application.mk配置如下,如果没有这个文件,自已新建一个,写下配置.

APP_ABI := armeabi

APP_STL := stlport_static

六 Android.mk配置

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := JniDmeoLib //这个是生成库的名字LOCAL_SRC_FILES := Unix_wrap.cxx

include $(BUILD_SHARED_LIBRARY)

这上面意思自已去百度一下,篇幅过长,先不做解释

七 Unix.i文件配置如下:

%module JniDmeoLib

%include "std_string.i"

%{#include <src\Ctest.cpp>#include <src\CoutputChar.cpp>%}%include <src\Ctest.h>%include <src\CoutputChar.h>

八 此时目录如下图:

九 现在就回到那个按键点击 Run 返回刚才你配置那里Run,出现下图,不报错就是那个样子:

十、最后生成效果,以及目录找到那个JniDmeoLibJNI.class

打开,写上加载库

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

如下代码:加粗的地方就是需要写的,双引号是你的库名字。

/* —————————————————————————- * This file was automatically generated by SWIG (). * Version 3.0.2 * * Do not make changes to this file unless you know what you are doing–modify * the SWIG interface file instead. * —————————————————————————– */package com.example.jnidmeo;public class JniDmeoLibJNI {<span style="color:#000000;"><strong>//下面static要自已写上去,加载生成JniDmeoLib库."JniDmeoLib"是库名字static{System.loadLibrary("JniDmeoLib");}</strong></span> public final static native long new_CTest(); public final static native void delete_CTest(long jarg1); public final static native double CTest_getTest(long jarg1, CTest jarg1_, double jarg2, double jarg3); public final static native long new_CoutputChar(); public final static native void delete_CoutputChar(long jarg1); public final static native String CoutputChar_getfileName(long jarg1, CoutputChar jarg1_); public final static native void CoutputChar_setfileName(long jarg1, CoutputChar jarg1_, String jarg2);}

十一、选中你的项目,再点击project—–build project,出现图下:生成so库,以及存放的路径

它不同于旅游,那需要一个风景稍微漂亮的地方,

Android ndk开发swig编译jni接口

相关文章:

你感兴趣的文章:

标签云: