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

相关推荐
步步为营DotNet1 小时前
深度解析CancellationToken:.NET中的优雅取消机制
java·前端·.net
百锦再9 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
JH30739 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
2501_9160088910 小时前
全面介绍Fiddler、Wireshark、HttpWatch、SmartSniff和firebug抓包工具功能与使用
android·ios·小程序·https·uni-app·iphone·webview
Coder_Boy_10 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
玉梅小洋10 小时前
Windows 10 Android 构建配置指南
android·windows
invicinble11 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟11 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖11 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
Libraeking12 小时前
视觉篇:Canvas 自定义绘图与高级动画的华丽圆舞曲
android·经验分享·android jetpack