我的android项目包含一些aar模块,它们有自己的AndroidManifest.xml。我该怎么办才能将aar的清单合并到最终的AndroidManifest.xml中?
非常感谢您的帮助!
我的android_binary
规则:
android_binary(
name="apk",
custom_package = "com.xtbc",
manifest_merger = "android",
manifest = "AndroidManifest.xml",
resource_files = glob(["res/**"], exclude=["res/.DS_Store"]),
assets = glob(["assets/**"], exclude=["assets/.DS_Store"]),
assets_dir = "assets",
multidex = "manual_main_dex",
main_dex_list = "mainDexList.txt",
dexopts = [
"--force-jumbo"
],
deps = [
":lib",
":base_lib",
":jni"
]
)
:base_lib
是一个模块(即android_library
规则):
android_library(
name = "base_lib",
srcs = glob(["base/src/**/*.java"]),
custom_package = "com.xtbc.base",
manifest = "base/AndroidManifest.xml",
resource_files = glob(["base/res/**"], exclude=["base/res/.DS_Store"]),
assets = glob(["base/assets/**"], exclude=["base/assets/.DS_Store"]),
assets_dir = "base/assets",
deps = [
"@androidsdk//com.android.support:support-annotations-23.0.1"
]
)
它有自己的base/AndoridManifest.xml
,我想要的是:base_lib
的AndroidManifest.xml将合并到最终的AndroidManifest.xml中(即:apk
的AndroidManifest .XML)。
答案 0 :(得分:1)
我没有足够的stackoverflow信誉来响应评论链,但听起来你所追求的是exports_manifest
的{{1}}属性。
https://bazel.build/versions/master/docs/be/android.html#android_library.exports_manifest处的文档说默认值是1,但是,文档是基于源代码更改尚未进入Bazel版本的。现在,您需要将android_library
添加到exports_manifest = 1
。在下一个Bazel版本中,这将不再是必要的。
另外,关于“AAR模块”:如果这些是预先构建的.aar文件,您将需要使用aar_import规则。它没有exports_manifest属性,因为它将始终默认导出。如果这些是Gradle Android库模块,那么您可以使用android_library规则。如果你指的是支持库,@ androidsdk // com.android.support:support-annotations-23.0.1实际上是一个JAR,而不是AAR。