android - Android项目如何使用/合并多个AndroidManifest.xml
问题描述
我想将我的项目拆分为多个sourceSets,所以我想使用多个AndroidManifest.xml 来声明当前sourceSets 的组件,util build apk 合并主AndroidManifest.xml,但是只支持一个主AndroidManifest.xml 设置,所以我该怎么做它?
为什么我要使用多个源集?因为如果使用多个模块,它的编译速度会很慢。
这是我的项目设置
def moduleDirs = project.projectDir.listFiles()
.findAll {
def name = it.name
// filter all inner's module
it.isDirectory() && msExtension.modulePrefix.any { name.startsWith(it) }
}
Set<File> manifestSet = new HashSet<>()
Set<String> modules = new HashSet<>()
def sourceSetConf = { AndroidSourceSet sourceSet ->
moduleDirs.each {
def moduleName = it.name
def dir = sourceSet.name
sourceSet.assets.srcDirs "${moduleName}/src/${dir}/assets"
sourceSet.java.srcDirs "${moduleName}/src/${dir}/java"
sourceSet.res.srcDirs "${moduleName}/src/${dir}/res"
sourceSet.aidl.srcDirs "${moduleName}/src/${dir}/aidl"
// each AndroidManifest.xml
def manifestFile = project.file("${moduleName}/AndroidManifest.xml")
if (manifestFile != null && manifestFile.exists()) {
manifestSet.add(manifestFile)
}
modules.add(moduleName)
}
}
// for default main sources
sourceSetConf(android.sourceSets.main)
// for buildType sources
android.buildTypes.each {
def buildType = it.name
android.sourceSets.getByName(buildType) {
sourceSetConf(it)
}
}
// for flavor sources
android.productFlavors.each {
def flavor = it.name
android.sourceSets.getByName(flavor) {
sourceSetConf(it)
}
}
我从 gradle 中看到了多个模块合并的一些代码,但仍然不知道如何
ManifestMerger2
ProcessManifest
解决方案
通过 Android Studio 使用多个模块。创建模块之间的依赖关系。要ModuleA
依赖于,ModuleB
请将以下内容放入build.gradle
:ModuleA
dependencies {
// ...
compile project(':ModuleB')
// ...
}
AndroiManifest.xml
这应该在构建时从两个模块合并ModuleA
推荐阅读
- python - centOs 7在搜索依赖项时找不到python3-PyYAML和python3-gobject
- reactjs - 更改列表中“切换”元素的样式,react-native
- php - PHP/SQL 转换时间戳
- go - 删除文件的前 N 行
- go - 创建切片类型的方法
- r - ggplot2 的 stat_summary_bin 中的分箱是如何完成的?
- java - 如何通过 mongodb Java 驱动程序 3.4+ 使用 capped collection 添加多个文档?
- javascript - 切换隐藏/显示不适用于子 div
- java - java.nio.file.AccessDeniedException 到 ~/AppData\Local\Temp\unlink-test12695598880278433589.tmp 文件 bt-cli api
- node.js - 排队异步任务