android jni调用so库
今天,讲讲android studio 使用jni调用其他so库的使用。
首先说一下在网上查找资料时,对于调用第三方so库,有人说有两种方法:
1. 对于so库的API符合JNI格式(即使用javah指令生成的头文件中那种格式),可以在Java代码中声明它对应的native方法,直接调 用。
比如,jni方法名为: jstringJNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *,jobject); (即前缀 Java+包名+类名+方法名)
那么这个方法名就是在java中声明的native方法名:publicnative String stringFromJNI();
2. 对于so库的API不符合JNI格式,需要自己编写c/c++源文件,在该源文件实现自己的JNI格式native函数,在JNI函数中调用第三方so库的函数,再在java中调用自己实现的JNI格式的native方法。这种方法更加灵活。
一.首先需要配置NDK环境。
这个可以直接参考这篇博客http://blog.csdn.net/xiaoyu_93/article/details/52870395;
二.编写简单的jni程序,然后编写
Android.mk文件,Application.mk文件。
编写jni程序很简单,在网上自己找资料就可以。主要是在Android.mk里调用so库
Android.mk的代码:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := HW_H265dec_Andr //HW_H265dec_Andr是库的名称 LOCAL_SRC_FILES := libHW_H265dec_Andr.so LOCAL_EXPORT_C_INCLUDES := src/main/jni include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_SHARED_LIBRARIES := HW_H265dec_Andr LOCAL_MODULE := HWH265_API LOCAL_SRC_FILES =: HWH265_APIs.cpp //HWH265_APIs.cpp是C++文件的名称 include $(BUILD_SHARED_LIBRARY) TARGET_CPU_API := armeabi //表示编译平台只是移动平台 APP_ABI := armeabi
这个就是告诉HWH265_APIs.cpp引用了libHW_H265dec_Andr.so库。
接着在HWH265_APIs.cpp就可以调用库的代码。
Application.mk的代码很简单:
APP_STL:=gnustl_static APP_CPPFLAGS:=-frtti -fexceptions APP_ABI := armeabi #表示 编译目标 ABI(应用二进制接口)
这样就完成了jni导入so库。
android jni调用so库就讲完了、
就这么简单。
android jni调用so库相关推荐
- arch linux arm下载_linux系统下编译给android JNI调用的Gmssl库
编译给android JNI调用的Gmssl库的方法,网络上并不多.按照叶大强(CSDN账号:hkNaruto)写的<GmSSL Android NDK编译 (版本95c0dba>的帖子编 ...
- 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决 参考文章: (1)在Android中调用KSOAP2库访问webservice服务出现的服务端 ...
- android jni 调用 java_Android与JNI(二) ---- Java调用C++ 动态调用
目录: 1. 简介 2. JNI 组件的入口函数 3. 使用 registerNativeMethods 方法 4. 测试 5. JNI 帮助方法 6. 参考资料 1. 简介 Android与JNI( ...
- android JNI调用(Android Studio 3.0.1)(转)
最近回头复习了一下android 的jni调用,却发现按以前的方法调用失败,一怒之下就重新摸索,碰了几次壁,发现网上好多教程都不能成功调用,于是记录一下现在AS版本成功好用的调用方法. 这里设定你的n ...
- Android JNI 编译so库
环境 Android Studio 3.0 JDK 1.8 Gradle 4.1 Demo地址: https://github.com/seeways/NDKDemo C++编译so库 http:// ...
- Android中调用.so库操作步骤
参考:http://www.cnblogs.com/anyanran/archive/2010/11/22/ndk1.html http://www.cnblogs.com/sevenyuan/p/4 ...
- Android JNI调用概要
一.Java调C 编写Native方法. 使用javah命令生成.h头文件. 复制.h头文件到CPP工程中. 复制jni_md.h和jni.h到CPP工程中. 实现.h头文件中生成的. 生成dll文件 ...
- Android so库开发——Android Studio调用so库(二)
一.JNI规范so库调用 在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivit ...
- android jni 调用java_Android JNI开发系列(九)JNI调用Java的静态方法实例方法
JNI调用Java的静态方法&实例方法 package org.professor.jni.bean; import android.util.Log; /** * Created by pe ...
最新文章
- 四种JOIN简单实例
- Redis 之布隆过滤器与布谷鸟过滤器
- mysql 5.5 5.6差异,MySQL5.5和MySQL5.6授权区别
- HR问:“你能熬夜吗?”,你会如何回答?
- 《系统集成项目管理工程师》必背100个知识点-26项目范围管理
- linux增加电子档案空间,Linux 建立 SWAP 档案空间
- assm的结构_Oracle ASSM三级位图块结构
- 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.12 闪存盘简介...
- c# sizeof_C#程序演示sizeof()运算符的示例
- Hakase and Nano【博弈】
- 通过JCONSOLE监控TOMCAT的JVM使用情况
- js获取服务器控件DropDownList所选中的各项属性
- php一句话 专杀,PHP-DDOS脚本专杀工具1.0 官方版
- python图书馆系统借书验证登陆功能
- “如何写好一篇学术论文?”这大概是最详实的一则攻略了!
- 基于stm32f401的双按键可视化多模式选择模块
- python pandas按照行数切分文件
- Latex显示无限循环小数
- Ubuntu 安装rar文件解压工具
- 设置网站ico图标的两种方法
热门文章
- spring boot (3.自动配置@enableautoconfiguration)
- [Material Design] 教你做一个Material风格、动画的button(MaterialButton)
- poj 1064 Cable master
- 用 Microsoft Expression Design 制作图形资源
- SQL:给查询添加一个合计行
- 学习,编译ffmpeg tutorial
- step3 . day7数据结构之二叉顺序数的创建和二叉树的栈形式遍历
- shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。
- mysql中文显示问号
- 传智播客JavaWeb day11--事务的概念、事务的ACID、数据库锁机制、