今天,讲讲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库相关推荐

  1. arch linux arm下载_linux系统下编译给android JNI调用的Gmssl库

    编译给android JNI调用的Gmssl库的方法,网络上并不多.按照叶大强(CSDN账号:hkNaruto)写的<GmSSL Android NDK编译 (版本95c0dba>的帖子编 ...

  2. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决

    在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决 参考文章: (1)在Android中调用KSOAP2库访问webservice服务出现的服务端 ...

  3. android jni 调用 java_Android与JNI(二) ---- Java调用C++ 动态调用

    目录: 1. 简介 2. JNI 组件的入口函数 3. 使用 registerNativeMethods 方法 4. 测试 5. JNI 帮助方法 6. 参考资料 1. 简介 Android与JNI( ...

  4. android JNI调用(Android Studio 3.0.1)(转)

    最近回头复习了一下android 的jni调用,却发现按以前的方法调用失败,一怒之下就重新摸索,碰了几次壁,发现网上好多教程都不能成功调用,于是记录一下现在AS版本成功好用的调用方法. 这里设定你的n ...

  5. Android JNI 编译so库

    环境 Android Studio 3.0 JDK 1.8 Gradle 4.1 Demo地址: https://github.com/seeways/NDKDemo C++编译so库 http:// ...

  6. Android中调用.so库操作步骤

    参考:http://www.cnblogs.com/anyanran/archive/2010/11/22/ndk1.html http://www.cnblogs.com/sevenyuan/p/4 ...

  7. Android JNI调用概要

    一.Java调C 编写Native方法. 使用javah命令生成.h头文件. 复制.h头文件到CPP工程中. 复制jni_md.h和jni.h到CPP工程中. 实现.h头文件中生成的. 生成dll文件 ...

  8. Android so库开发——Android Studio调用so库(二)

    一.JNI规范so库调用 在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivit ...

  9. android jni 调用java_Android JNI开发系列(九)JNI调用Java的静态方法实例方法

    JNI调用Java的静态方法&实例方法 package org.professor.jni.bean; import android.util.Log; /** * Created by pe ...

最新文章

  1. 四种JOIN简单实例
  2. Redis 之布隆过滤器与布谷鸟过滤器
  3. mysql 5.5 5.6差异,MySQL5.5和MySQL5.6授权区别
  4. HR问:“你能熬夜吗?”,你会如何回答?
  5. 《系统集成项目管理工程师》必背100个知识点-26项目范围管理
  6. linux增加电子档案空间,Linux 建立 SWAP 档案空间
  7. assm的结构_Oracle ASSM三级位图块结构
  8. 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.12 闪存盘简介...
  9. c# sizeof_C#程序演示sizeof()运算符的示例
  10. Hakase and Nano【博弈】
  11. 通过JCONSOLE监控TOMCAT的JVM使用情况
  12. js获取服务器控件DropDownList所选中的各项属性
  13. php一句话 专杀,PHP-DDOS脚本专杀工具1.0 官方版
  14. python图书馆系统借书验证登陆功能
  15. “如何写好一篇学术论文?”这大概是最详实的一则攻略了!
  16. 基于stm32f401的双按键可视化多模式选择模块
  17. python pandas按照行数切分文件
  18. Latex显示无限循环小数
  19. Ubuntu 安装rar文件解压工具
  20. 设置网站ico图标的两种方法

热门文章

  1. spring boot (3.自动配置@enableautoconfiguration)
  2. [Material Design] 教你做一个Material风格、动画的button(MaterialButton)
  3. poj 1064 Cable master
  4. 用 Microsoft Expression Design 制作图形资源
  5. SQL:给查询添加一个合计行
  6. 学习,编译ffmpeg tutorial
  7. step3 . day7数据结构之二叉顺序数的创建和二叉树的栈形式遍历
  8. shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。
  9. mysql中文显示问号
  10. 传智播客JavaWeb day11--事务的概念、事务的ACID、数据库锁机制、