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

相关推荐
一笑的小酒馆3 小时前
AndroidKMP之网络请求
android
魏 无羡4 小时前
webclient
java·webclient
神仙别闹4 小时前
基于 C++ 实现两个有序链表序列的交集
java·c++·链表
swordbob5 小时前
ReentrantLock 与 AQS 完整学习手册
java·开发语言
aqi006 小时前
鸿蒙版本的JSBridge兼容与安卓配套的H5啦
android·华为·harmonyos·鸿蒙·移动应用
m0_587383006 小时前
全民健身解决方案软件开发实战:从架构设计到落地指南
java·spring boot·spring·架构·需求分析
白山编程大哥6 小时前
Java OutputStreamWriter 详解:从字符到字节的桥梁
java·开发语言·python
事圆则缓7 小时前
MVVM 的理解与设计
android·android jetpack
一技安身7 小时前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
七夜zippoe8 小时前
为什么 2026 年每个 Java 团队都该懂 AI Agent
java·开发语言·人工智能