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
    └── ...

相关推荐
小强库计算机毕业设计8 分钟前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质18 分钟前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军20 分钟前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐27 分钟前
maven部分构建参数讲解
java·maven
ZC跨境爬虫33 分钟前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
小孔龙1 小时前
GraphicBuffer 跨进程共享
android
kisbad1 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript
憧憬成为java架构高手的小白1 小时前
langchain4j框架学习
java
行业研究员2 小时前
Android内置GPS与腾讯地图定位技术对比分析
android·android定位·腾讯地图定位
0x532 小时前
Java网络编程(四)
java·网络