Android 使用SWIG生成Jni代码
一、下载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代码相关推荐
- Android 使用SWIG生成Jni代码转
http://blog.csdn.net/u010780612/article/details/51066819 感觉也就那样把,我没有编译成功,实用性暂时没看到多大优点...
- android studio 混淆jar,android studio如何生成混淆代码的jar
释放双眼,带上耳机,听听看~! 今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android s ...
- android studio如何生成混淆代码的jar
今天,简单讲讲android里如何在生成jar包时,同时对jar包的代码进行混淆,避免别人看到核心代码. 之前,我对领导说我打包生成的SDK,别人使用android studio导入后可以看所有的源码 ...
- Android Studio禁止混淆JNI代码
1.在AS项目工程下: app/proguard-android.txt 或:app/proguard-rules.pro 禁止混淆JNI代码: # 设置所有 native 方法不被混淆 -keepc ...
- android studio 自动提示jni代码,如何将JNI(C/C++本机代码)添加到现有的Android Studio项目中...
从现有项目中执行以下步骤: 1.修改build.gradle(模块应用程序)看起来像这样(很多变化!): apply plugin: 'com.android.model.application' m ...
- android 平台马甲举报,GitHub - qq549631030/AndroidJunkCode: Android马甲包生成垃圾代码插件...
Android垃圾代码生成插件 此插件用于做马甲包时,减小马甲包与主包的代码相似度,避免被OPPO.VIVO等应用市场识别为马甲包. 使用方法 根目录的build.gradle中: buildscri ...
- 【Android】一键生成MVP代码-DevMvp快速开发框架
序言 每个程序员看到一堆烂代码都有一颗重构的心.烂代码写起来嘴上 笑嘻嘻,心里mmp.特别是有代码洁癖的人.重构不易且行且珍惜,此框架将减少开发时间.如果你们的项目结构跟我的不一样,这也不用担心,你看 ...
- 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解
学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...
- UVC系列5-编写Android jni代码实现控制PTZ
在Android kernel层完成定制之后,需要写app实现对摄像头的控制,主要通过jni代码实现. 在jni代码中主要定义这几个函数: jintArrayJava_com_chuck_androi ...
最新文章
- 懒加载 字典转模型 自定义cell
- Linux系统下如何安装软件包
- vue html5 picker,基于vue的picker组件
- 如何才能真正的提高自己,真正成为一名出色的架构师?
- 删过几十亿个账号,Facebook的人工智能是怎么培养出来的?
- Appium - 一个投巧的办法去验证页面是否存在某个元素
- javascript面向对象编程实现[定义(静态)属性方法--继承]
- WebClient上传文件至服务器和下载服务器文件至客户端
- echart 饼图标题title的详细参数配置
- https 非对称加密
- python 逻辑回归 复杂抽样_如何用Python进行抽样?
- 数字逻辑电路中逻辑门的符号_数字计算机中使用的逻辑门
- 英文版红帽linux设置屏保,Linux下屏保设置
- 地铁三号线 - 为什么哭的时候总是叫我带娃?
- 2021-12-01 WPF上位机 103-西门子S7协议之V区,DB区读数据方法流程解析
- 银联支付api相关文档
- linux学习相对路径与绝对路径
- Ubuntu20.04或18.04下PX4(pixhawk)源码编译环境配置教程,及构建代码各种错误解决办法
- Bootstrap动态轮播
- 计算机PPT必会,计算机常用工具软件完整PPT课件
热门文章
- 浅谈APP的分享功能,有时候社交裂变形式比内容更“重要”
- AngularJS学习之旅—AngularJS Http(九)
- Cadence Allegro PCB 铺铜(覆铜)Shape呈格点状填充而不是完整全铜显示问题–Allegro技巧...
- 用 DomIt! XML 处理工作
- 在利用计算机生成,计算机生成人像,从而使人脸的模糊变为现实
- [LeetCode] Length of Last Word - 最后一个单词的长度
- iOS GPUImage之视频采集GPUImageVideoCamera
- 人脸识别算法不可置疑?真相需要多重验证!
- 【机器视觉】 HDevelop语言基础(二)-变量和表达式
- 【STM32】 keil软件工具--Configuration详解(上)