flatdir android什么作用,各种 Android 常用 dir 在 gradle 中的配置方式

小背景

为了保持项目结构的清晰,大多数时候对于三方 SDK 会将其 aar、jar、so 等单独用一个 module 装起来,可用传递依赖的方式去配置 jar,但 so 与 aar 则需要另外配置。

另外,还有 额外的res、纯 java 目录等。

混淆文件proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'other/proguard-rules.pro'

.aar

对于 aar,需要修改的是 flatDir,一般放在 app/build.gradle 统筹全局,这也是无法传递依赖的折中解决办法。

由于 aar 一般是远程依赖,这里也是使用相当于添加一个仓库的效果,所以在 repositories 的节点下。

来自 flatDir 方法注释:996518a37fafadcdecf2f9b2fdf1e576.png来自 flatDir 方法注释

.so

对于 so,则需要修改 jniLibs,可以用+=的方式去拼接,也可以按官方的这种写法android {...

sourceSets {main{jniLibs.srcDirs 'imported-lib/src/', 'more-imported-libs/src/'

}

}}

java、manifest、aidl、res、assets 源代码目录sourceSets {main{manifest.srcFile '/src/main/AndroidManifest.xml'

java.srcDirs = ['/src/main/java', 'other/src/main/java']

aidl.srcDirs = ['/src/main/aidl', 'other/src/main/aidl']

res.srcDirs = ['/src/main/res']

assets.srcDirs = ['/src/main/assets']

}

}

这里为什么有个 main 呢,主要还是因为 flavor,main 只是一个基础的 flavor。

透露个小姿势,这里都是用的xxx.srcDirs直接指定一个数组,但实际上,也可以使用拼接的方式。但往往看到的都是:java.srcDirs += 'other/src/main/java'

java.srcDirs += ['/src/main/java', 'other/src/main/java']

其实这里可以还可以这样做,并不需要+=,为什么?看看这个就知道了Gradle building java projectsjava{srcDir 'other/src/main/java'

}

关于 Android 相关配置的官方文档:

include、exclude

其实没什么 include,因为指定 srcDirs 就是指定包含编译的内容了。但是 exclude 是有的:Gradle Doc SourceSetsourceSets {

main {

java {

exclude 'some/unwanted/package/**'

}

}

}

无意中看到一个不错的 example:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值