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

相关推荐
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
alexhilton1 小时前
Room Fts4:全文搜索替代 SQL LIKE
android·kotlin·android jetpack
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天1 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源