一、下载SWIG,并设置好环境变量


二、以HelloJni为例子

   导入ndk sample的HelloJni工程。

三、创建SWIG接口文件

在jni目录下新建文件Unix.i,输入SWIG代码:

%module Unix%{
#include <unistd.h>
%}typedef unsigned int uid_t;extern uid_t getuid(void);

在src目录下创建代理类的包,名为:com.apress.swig

四、在命令行下调用SWIG

在项目根目录下执行

swig -java -package com.apress.swig -outdir src/com/apress/swig jni/Unix.i

执行成功后会在src/com.apress.swig包下生成java jni代码,在jni目录下会有Unix_wrap.c文件。

五、将SWIG集成到Android构造过程中

在jni目录下创建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.


六 、加入调用代码

修改HelloJni.java:

 TextView  tv = new TextView(this);tv.setText( stringFromJNI() +" uid:"+Unix.getuid());setContentView(tv);

编译运行


代码下载 http://download.csdn.net/detail/hai836045106/7937337

Android 使用SWIG生成Jni代码相关推荐

  1. Android 使用SWIG生成Jni代码转

    http://blog.csdn.net/u010780612/article/details/51066819 感觉也就那样把,我没有编译成功,实用性暂时没看到多大优点...

  2. android studio 混淆jar,android studio如何生成混淆代码的jar

    释放双眼,带上耳机,听听看~! 今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android s ...

  3. android studio如何生成混淆代码的jar

    今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android studio导入后可以看所有的源码 ...

  4. Android Studio禁止混淆JNI代码

    1.在AS项目工程下: app/proguard-android.txt 或:app/proguard-rules.pro 禁止混淆JNI代码: # 设置所有 native 方法不被混淆 -keepc ...

  5. android studio 自动提示jni代码,如何将JNI(C/C++本机代码)添加到现有的Android Studio项目中...

    从现有项目中执行以下步骤: 1.修改build.gradle(模块应用程序)看起来像这样(很多变化!): apply plugin: 'com.android.model.application' m ...

  6. android 平台马甲举报,GitHub - qq549631030/AndroidJunkCode: Android马甲包生成垃圾代码插件...

    Android垃圾代码生成插件 此插件用于做马甲包时,减小马甲包与主包的代码相似度,避免被OPPO.VIVO等应用市场识别为马甲包. 使用方法 根目录的build.gradle中: buildscri ...

  7. 【Android】一键生成MVP代码-DevMvp快速开发框架

    序言 每个程序员看到一堆烂代码都有一颗重构的心.烂代码写起来嘴上 笑嘻嘻,心里mmp.特别是有代码洁癖的人.重构不易且行且珍惜,此框架将减少开发时间.如果你们的项目结构跟我的不一样,这也不用担心,你看 ...

  8. 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...

  9. UVC系列5-编写Android jni代码实现控制PTZ

    在Android kernel层完成定制之后,需要写app实现对摄像头的控制,主要通过jni代码实现. 在jni代码中主要定义这几个函数: jintArrayJava_com_chuck_androi ...

最新文章

  1. 懒加载 字典转模型 自定义cell
  2. Linux系统下如何安装软件包
  3. vue html5 picker,基于vue的picker组件
  4. 如何才能真正的提高自己,真正成为一名出色的架构师?
  5. 删过几十亿个账号,Facebook的人工智能是怎么培养出来的?
  6. Appium - 一个投巧的办法去验证页面是否存在某个元素
  7. javascript面向对象编程实现[定义(静态)属性方法--继承]
  8. WebClient上传文件至服务器和下载服务器文件至客户端
  9. echart 饼图标题title的详细参数配置
  10. https 非对称加密
  11. python 逻辑回归 复杂抽样_如何用Python进行抽样?
  12. 数字逻辑电路中逻辑门的符号_数字计算机中使用的逻辑门
  13. 英文版红帽linux设置屏保,Linux下屏保设置
  14. 地铁三号线 - 为什么哭的时候总是叫我带娃?
  15. 2021-12-01 WPF上位机 103-西门子S7协议之V区,DB区读数据方法流程解析
  16. 银联支付api相关文档
  17. linux学习相对路径与绝对路径
  18. Ubuntu20.04或18.04下PX4(pixhawk)源码编译环境配置教程,及构建代码各种错误解决办法
  19. Bootstrap动态轮播
  20. 计算机PPT必会,计算机常用工具软件完整PPT课件

热门文章

  1. 浅谈APP的分享功能,有时候社交裂变形式比内容更“重要”
  2. AngularJS学习之旅—AngularJS Http(九)
  3. Cadence Allegro PCB 铺铜(覆铜)Shape呈格点状填充而不是完整全铜显示问题–Allegro技巧...
  4. 用 DomIt! XML 处理工作
  5. 在利用计算机生成,计算机生成人像,从而使人脸的模糊变为现实
  6. [LeetCode] Length of Last Word - 最后一个单词的长度
  7. iOS GPUImage之视频采集GPUImageVideoCamera
  8. 人脸识别算法不可置疑?真相需要多重验证!
  9. 【机器视觉】 HDevelop语言基础(二)-变量和表达式
  10. 【STM32】 keil软件工具--Configuration详解(上)