Android libs,jniLibs库基本使用

Android libs,jniLibs库基本使用

libs,jniLibs用来存放各种.so库文件。在Android Studio中,默认匹配main下的jniLibs目录。

如果没有jniLibs目录需要自己手动创建,并且库的名称也不能随便更改。

在这里插入图片描述
在这里插入图片描述

使用libs下so库文件

在AndroidStudio中,想用libs下的so库,必须手动去指定库的位置。

在Module:app下的build.gradle中android{}节点加入以下配置。

    sourceSets {
        main{
            jniLibs.srcDirs = ['libs'];
        }
    }

使用jniLibs下so库文件

这种方式最简单,不需要额外的任何配置,把所有的.so库放在jniLibs目录即可使用

特别注意

要么把所有的.so库全部放在libs目录下,要么全部放在jniLibs目录下。

在第三方提供的so库中,大多都是成套的为了适配不同的cpu厂商。

在拷贝库的时候也会成套的拷贝进项目,如果要通过so库来减少安装包的大小,可以通过

动态选择需要添加的.so库

在Module:app下的build.gradle中defaultConfig里面加上配置

ndk {
            //选择要添加的对应cpu类型的.so库。
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
            // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

这样就可以指定加载库。

### 如何下载并使用 jnilibs 文件 #### 获取 `.so` 文件 `.so` 文件通常由第三方提供者发布,可以通过以下几种方式获取: - **官方渠道**:许多开源项目会在其GitHub仓或官方网站上提供预编译好的二进制文件。 - **Maven 或 Gradle 依赖管理工具**:一些流行的JNI可以直接通过配置build.gradle来引入。 对于特定平台架构的支持,如 `armeabi`, `armeabi-v7a` 等版本的 `.so` 文件应确保与目标设备匹配[^1]。 #### 添加到 Android 工程结构中 按照标准做法,在Android工程里应该有一个名为 `jniLibs` 的特殊文件夹用于放置这些原生共享对象(`.so`)。此路径一般位于app模块下的 `src/main/` 目录下: ``` your_project/ ├── app/ │ ├── build.gradle │ └── src/ │ └── main/ │ ├── java/ │ ├── res/ │ └── jniLibs/ │ ├── arm64-v8a/ │ │ └── libexample.so │ ├── armeabi-v7a/ │ │ └── libexample.so ... ``` 每种CPU架构对应各自的子目录存放相应构架编译后的`.so`文件[^3]。 #### 配置Gradle同步资源 为了让构建系统识别新加入的本地,需确认项目的 `build.gradle` 中已包含如下设置: ```groovy android { ... sourceSets.main{ jniLibs.srcDirs = ['src/main/jniLibs'] } } ``` 这一步骤告知AS在打包APK时将指定位置中的所有`.so`文件作为应用的一部分处理[^2]。 #### 调用 Native 方法 最后,在Java/Kotlin端定义native函数声明并与实际C/C++实现关联起来。例如: ```java public class MyMathUtils { static { System.loadLibrary("MyMathUtils"); // 加载 so } public native int getSum(int a, int b); } ``` 上述代码片段展示了如何声明一个可以调用底层C/C++逻辑的方法,并通过静态初始化块加载所需的动态链接[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值