Android 使用SWIG生成Jni代码
生活随笔
收集整理的這篇文章主要介紹了
Android 使用SWIG生成Jni代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、下載SWIG,并設置好環(huán)境變量
二、以HelloJni為例子
三、創(chuàng)建SWIG接口文件
在jni目錄下新建文件Unix.i,輸入SWIG代碼:
%module Unix%{ #include <unistd.h> %}typedef unsigned int uid_t;extern uid_t getuid(void);在src目錄下創(chuàng)建代理類的包,名為:com.apress.swig
四、在命令行下調(diào)用SWIG
在項目根目錄下執(zhí)行
swig -java -package com.apress.swig -outdir src/com/apress/swig jni/Unix.i
執(zhí)行成功后會在src/com.apress.swig包下生成java jni代碼,在jni目錄下會有Unix_wrap.c文件。
五、將SWIG集成到Android構(gòu)造過程中
在jni目錄下創(chuàng)建my-swig-generate.mk文件:
ifndef MY_SWIG_PACKAGE$(error MY_SWIG_PACKAGE is not defined.) endifMY_SWIG_OUTDIR:=$(NDK_PROJECT_PATH)/src/$(subst .,/,$(MY_SWIG_PACKAGE)) ifndef MY_SWIG_TYPEMY_SWIG_TYPE:=C endif#ifeq($(MY_SWIG_TYPE),cxx) # MY_SWIG_MODE:=c++ #else # MY_SWIG_MODE:= #endifLOCAL_SRC_FILES+=$(foreach MY_SWIG_INTERFACE,\$(MY_SWIG_INTERFACES),\$(basename $(MY_SWIG_INTERFACE))_wrap.$(MY_SWIG_TYPE))#LOCAL_CPP_EXTENSION+=.cxx%_warp.$(MY_SWIG_TYPE) : %.i \$(call host-mkdir,$(MY_SWIG_OUTDIR)) \swig -java \$(MY_SWIG_MODE) \-package $(MY-SWIG_PACKAGE) \-outdir $(MY_SWIG_OUTDIR) \$<修改jni目錄下的Android.mk:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.cMY_SWIG_PACKAGE:=com.apress.swig MY_SWIG_INTERFACES:=Unix.i MY_SWIG_TYPE:=c include $(LOCAL_PATH)/my-swig-generate.mkinclude $(BUILD_SHARED_LIBRARY)編譯ndk.
六 、加入調(diào)用代碼
修改HelloJni.java:
TextView tv = new TextView(this);tv.setText( stringFromJNI() +" uid:"+Unix.getuid());setContentView(tv);編譯運行
代碼下載 http://download.csdn.net/detail/hai836045106/7937337
總結(jié)
以上是生活随笔為你收集整理的Android 使用SWIG生成Jni代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android NDK调试定位错误
- 下一篇: Android代码片段:设备信息