返回顶部
首页 > 资讯 > 移动开发 >Android 项目调用第三方库so动态库
  • 599
分享到

Android 项目调用第三方库so动态库

androidandroidstudio 2023-08-31 20:08:02 599人浏览 独家记忆
摘要

在Android NDK开发中,可以通过自己编写C/C++代码来构建so动态库进行调用之外,还可以把so动态库提供给第三方使用;接下来,我将介绍在新创建的Android 项目(或已存在的Android 项目)中如何调用第三方so动态库。 关

Android NDK开发中,可以通过自己编写C/C++代码来构建so动态库进行调用之外,还可以把so动态库提供给第三方使用;接下来,我将介绍在新创建的Android 项目(或已存在的Android 项目)中如何调用第三方so动态库。

关于如何进行NDK开发,实现JNI,以及编写c++与Java交互(Java调用本地函数)并编译出本地so动态库,请查看Android Studio 进行NDK开发,实现JNI,以及编写C++与Java交互(Java调用本地函数)并编译出本地so动态库_ErwinNakajima的博客-CSDN博客

注意:编译生成so动态库的Android 项目要与新创建的Android 项目(或已存在的Android项目)的包名保持一致,不然会调用失败。

1.首先使用Android Studio(使用Android Studio 4.2.2之后的稳定版本)创建一个Android 项目(或打开已存在的Android 项目),项目包名要与编译生成so动态库的Android 项目保持一致,需要在app下的build.gradle文件中的android下添加

sourceSets {        main {            jniLibs.srcDirs = ['libs']        }    }
然后在android下的defaultConfig下添加
ndk {            //选择要添加的对应 cpu 类型的 .so 库。            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'//            abiFilters 'armeabi-v7a', 'arm64-v8a'            // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'        }

最后把第三方so文件复制到libs目录下(如下图一),我这里有三种so文件,分别是armeabi、armeabi-v7a、arm64-v8a(具体根据提供方来,一般有armeabi-v7a、arm64-v8a这两种就可以了)。

2.Android Studio 配置NDK(使用Android Studio 4.2.2之后的稳定版本)

(1) 步骤一:点击红圈处(这是Mac配置流程,windows对应的按钮是Settings)

(2)步骤二:下载下图一中第3步红圈中的一个NDK和一个CMake,下载成功后如下图一所示(建议下载前先配置Android Studio 国内镜像代理,详见:Android Studio 国内镜像代理设置(如果设置之后还是远程仓库下载失败,请仔细阅读其内容就可以解决了)_android studio 镜像_ErwinNakajima的博客-CSDN博客)。

3.在项目中的创建JavaGetData文件,文件内容

package com.phone.library_common;import android.content.Context;public class JavaGetData {    static {        System.loadLibrary("return-data");        System.loadLibrary("native-lib");    }    public static native String nativeAesKey(Context context, boolean isRelease);    public static native String nativeDatabaseEncrypTKEy(Context context, boolean isRelease);    public static native String nativeGetString(Context context, boolean isRelease);}

我这里把System.loadLibrary调用直接写在了JavaGetData类的代码块,就不用单独写一个static方法进行调用了。

注意:两个System.loadLibrary方法的参数不是libnative-lib.so和native-lib.so,而是

libnative-lib和native-lib(记得要把so文件名的.so去掉,然后再作为参数传入System.loadLibrary方法)。

4.在用到的地方进行调用native方法即可

val aesKey =            JavaGetData.nativeAesKey(this@MainActivity, false)        val databaseEncryptKey =            JavaGetData.nativeDatabaseEncryptKey(this@MainActivity, false)        val getString =            JavaGetData.nativeGetString(this@MainActivity, false)        LogManager.i(TAG, "aesKey*****$aesKey")        LogManager.i(TAG, "databaseEncryptKey*****$databaseEncryptKey")        LogManager.i(TAG, "getString*****$getString")

如对此有疑问,请联系qq1164688204。

推荐Android开源项目

项目功能介绍:原本是RxJava2 和Retrofit2 项目,现已更新使用Kotlin+RxJava2+Retrofit2+MVP架构+组件化和
Kotlin+Retrofit2+协程+MVVM架构+组件化, 添加自动管理token 功能,添加RxJava2 生命周期管理,集成极光推送、阿里云Oss对象存储和高德地图定位功能。

项目地址:https://gitee.com/urasaki/RxJava2AndRetrofit2

来源地址:https://blog.csdn.net/NakajimaFN/article/details/130996742

--结束END--

本文标题: Android 项目调用第三方库so动态库

本文链接: https://lsjlt.com/news/386798.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android 项目调用第三方库so动态库
    在Android NDK开发中,可以通过自己编写C/C++代码来构建so动态库进行调用之外,还可以把so动态库提供给第三方使用;接下来,我将介绍在新创建的Android 项目(或已存在的Android 项目)中如何调用第三方so动态库。 关...
    99+
    2023-08-31
    android android studio
  • android 调用JNI SO动态库的方法
    总结一下: android 调用JNI 分为静态调用与动态调用(不论动态还是静态前提都是NDK环境已经配置好的前提下) 一、静态主要就是将c(.c)或者c++(cpp)的源文件直接加...
    99+
    2024-04-02
  • android调用JNI SO动态库的方法是什么
    这篇文章主要介绍“android调用JNI SO动态库的方法是什么”,在日常操作中,相信很多人在android调用JNI SO动态库的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”android调用...
    99+
    2023-06-25
  • Android so库开发——Android Studio调用so库(二)
    一、JNI规范so库调用         在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivity中的调用方法使用。 b...
    99+
    2023-09-25
    android studio android
  • Android基础——动态加载so库
    Android中动态加载so 原因:如果把so文件直接放在libs目录下,在android程序启动的时候会默认加载libs目录下的所有so库,但这些so库可能会在某些地方存在冲突,使用动态加载so库,就可以通过一些条件判断是否要加载这个so...
    99+
    2023-08-17
    android java android studio
  • github项目中如何引用第三方库
    本文小编为大家详细介绍“github项目中如何引用第三方库”,内容详细,步骤清晰,细节处理妥当,希望这篇“github项目中如何引用第三方库”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Github是全球最大的开...
    99+
    2023-07-05
  • 如何在Android Studio项目中导入第三方类库
    本篇文章给大家分享的是有关如何在Android Studio项目中导入第三方类库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第三方类库源码将一网友的XMPP代码从ADT转到A...
    99+
    2023-05-31
    studio android 第三
  • python如何调用第三方库
    Python调用第三方库通常需要以下几个步骤:1. 安装第三方库:使用pip工具安装第三方库,比如`pip install requ...
    99+
    2023-10-11
    python
  • C#--调用Python(包含第三方库)
    1. C# 调用 Python 常见的方法有4种 参考链接 1.1 Pythonnet (推荐) 可以很好的支持第三方库。 推荐这个,经本人验证这个很好用。 后文 2. 详细使用。 1.2 IronP...
    99+
    2023-09-29
    c# python
  • Angular项目中引入第三方UI库的方法
    这篇文章给大家分享的是有关Angular项目中引入第三方UI库的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。环境:Angular CLI: 11.0.6Angular: 11.0.7Node: 12.18....
    99+
    2023-06-15
  • C++项目工程(包含opencv库以及项目的依赖库移植)编译成android可以使用的so库并在Android studio上调用so库进行使用(血泪操作总结)
    目录结构 概述预先准备编译操作so的函数导出并在android进行调用 概述   最近负责一个android项目需要使用到之前公司师兄编写的c++算法库,一开始并不知道c++项目可以移...
    99+
    2023-09-16
    android studio c++ 算法
  • Android Studio添加第三方库的注意事项
    前言 很多人开始安卓入门的学习,都会选择Google官方的Android Studio作为开发工具,由于他跟之前的Eclipse不太一样,所以出的问题也比较多。主要是导入的问题...
    99+
    2022-06-06
    Android Studio studio Android
  • Android Studio引用第三方库的方式
    title: 大小端详解 date: 2023-06-06 21:01:24 comments: true #是否可评论 toc: true #是否显示文章目录 categories: #分类 - gradle - android stu...
    99+
    2023-08-21
    android studio android ide
  • C++调用动态库两种方式和Python调用C++动态库
    创建动态库动态库是在程序运行时加载的库文件,并不占用程序本身大小。选择动态库项目:新建.h和.cpp文件:# cat.h #pragma once extern "C" _declspec(dllexport) int sum(int a,...
    99+
    2023-05-14
    Python C++ 动态库
  • linux加载动态库.so的3种方法
            昨天同事联系我,他部署新版本的MS软件提示找不到动态库。但是他能找到这个动态库文件,但不知道如何加载。这样的问题对于我来说是个再简单不过的问题,但对于一个新手,可能就是个打破头都不知道如何解决的问题。所以我想对这个简单问题,...
    99+
    2023-08-31
    linux 运维 服务器
  • 【Android Studio】第三方库 图表(MPAndroidChart)使用
    1、添加依赖 项目目录->app->build.gradle dependencies {implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'} 项目目录->app->sett...
    99+
    2023-08-19
    android studio android ide
  • C++调用动态库和Python调用C++动态库的方法是什么
    这篇文章主要介绍“C++调用动态库和Python调用C++动态库的方法是什么”,在日常操作中,相信很多人在C++调用动态库和Python调用C++动态库的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-05
  • C#调用动态库
    一、引言 “为什么我们需要掌握互操作技术的呢?” 对于这个问题的解释就是——掌握了.NET平台下的互操作性技术可以帮助我们在.NET中...
    99+
    2024-04-02
  • Android 第三方库lottie、mmkv的使用详解
    Android端使用方法  首先,需要在当前项目的build.gradle下添加依赖代码: implementation 'com.airbnb.android:lot...
    99+
    2024-04-02
  • Python的第三方调试库pysnooper​​如何使用
    本篇内容主要讲解“Python的第三方调试库pysnooper如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的第三方调试库pysnooper如何使用”吧!一、背景我们在进行代...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作