Android 开发 - Android JNI 开发关键要点

Android JNI 开发关键要点

  1. 子模块配置了 abiFilters,主模块也需要相应的配置
groovy 复制代码
android {
	...

    defaultConfig {
		...

        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
    }

	...
}
  1. 现代的 ABI 配置以支持现代的 Android 设备
groovy 复制代码
android {
	...

    defaultConfig {
		...

        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
        }
    }

	...
}
  1. 确保目录结构正确,libs 目录包含所有必要的 JNI 库文件

    ├── libs/
    │ ├── armeabi/
    │ │ └── XXX.so
    │ ├── armeabi-v7a/
    │ │ └── XXX.so
    │ ├── x86/
    │ │ └── XXX.so
    │ └── mips/
    │ └── XXX.so

  2. 对于传统的 Android 库模块配置,.so 文件通常应该放在 libs 目录中,同时配置 sourceSets

groovy 复制代码
android {
	...
	
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}
  1. .so 文件放在 jniLibs 目录中,是 Android 官方推荐的标准做法

    ├── src/
    │ └── main/
    │ └── jniLibs/
    │ ├── armeabi/
    │ │ ├── XXX.so
    │ │ └── (其他.so文件)
    │ ├── armeabi-v7a/
    │ │ ├── XXX.so
    │ │ └── (其他.so文件)
    │ ├── x86/
    │ │ ├── XXX.so
    │ │ └── (其他.so文件)
    │ └── mips/
    │ ├── XXX.so
    │ └── (其他.so文件)
    ├── build.gradle
    └── ...

相关推荐
Mr.45675 分钟前
Spring Boot 集成 PostgreSQL 表级备份与恢复实战
java·spring boot·后端·postgresql
架构师沉默25 分钟前
为什么一个视频能让全国人民同时秒开?
java·后端·架构
生命不息战斗不止(王子晗)33 分钟前
mysql基础语法面试题
java·数据库·mysql
umeelove3536 分钟前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
redaijufeng39 分钟前
Node.js(v16.13.2版本)安装及环境配置教程
java
黄林晴1 小时前
Compose Multiplatform 1.10 发布:里程碑式更新!
android
齐齐大魔王1 小时前
linux-线程编程
java·linux·服务器
流星白龙1 小时前
【MySQL】19.MySQL用户管理
android·mysql·adb
匆忙拥挤repeat1 小时前
Android Compose 可组合项的生命周期、副作用API
android
我真会写代码1 小时前
Redis核心特性详解:事务、发布订阅与数据删除淘汰策略
java·数据库·redis