You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jniLibs.srcDirs与jni.srcDirs的配置区别是什么?

区别解析:jni.srcDirs vs jniLibs.srcDirs

刚好对这两个Gradle配置很熟悉,给你掰扯清楚它们的核心区别:

  • sourceSets { main { jni.srcDirs = ["libs"] } }
    这个配置是用来指定JNI原生源码(C/C++代码)的存放目录。默认情况下,Android项目会去src/main/jni目录找需要编译的JNI源码,你把它改成["libs"]后,Gradle就会到libs目录下读取C/C++代码,然后调用NDK把这些源码编译成对应架构的.so库,最后打包进APK。简单说,这是给需要自己编译JNI代码的场景用的。

  • sourceSets { main { jniLibs.srcDirs = ["libs"] } }
    这个配置则是指定已经编译好的JNI库(.so二进制文件)的存放目录。这些.so文件是已经编译完成的成品,Gradle不会再对它们进行编译操作,只会在构建APK的时候,把这些库复制到APK的lib/[架构名]目录下。默认的预编译库目录是src/main/jniLibs,改成libs后,就会从这个目录读取现成的.so文件。这个是给直接使用第三方预编译JNI库的场景用的。

一句话总结

  • 自己写C/C++要编译?用jni.srcDirs指定源码位置;
  • 拿现成的.so库直接用?用jniLibs.srcDirs指定预编译库位置。

内容的提问来源于stack exchange,提问作者Khemraj Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:14:59