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

Bazel Android环境下Manifest合并冲突:tools:replace使用问题

解决Bazel中Android Manifest合并的InitializationProvider权限冲突问题
  • 首先在你的应用主Manifest文件的<manifest>标签中添加tools命名空间(如果尚未添加):

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              package="你的应用包名">
    
  • 接着在<application>标签内部,显式声明冲突的InitializationProvider组件,同时添加tools:replace="android:authorities"属性来覆盖依赖库中的配置:

    <application ...>
        <!-- 解决两个依赖的InitializationProvider authorities冲突 -->
        <provider
            android:name="androidx.startup.InitializationProvider"
            android:authorities="你的应用包名.androidx.startup.InitializationProvider"
            tools:replace="android:authorities"
            android:exported="false" />
        <!-- 保留你原有application标签内的其他内容 -->
    </application>
    

    注意将你的应用包名替换为实际的应用包名,确保自定义的authorities值唯一,避免再次冲突。

  • 检查Bazel的android_binary目标配置,确保它正确引用了这个修改后的Manifest文件:

    android_binary(
        name = "app_demo",
        srcs = glob(["src/main/java/**/*.java"]),
        manifest = "src/main/AndroidManifest.xml",
        deps = [
            ":your_latex_library",
            "@maven//:androidx_lifecycle_lifecycle_process",
            "@maven//:androidx_startup_startup_runtime",
            # 其他依赖
        ],
    )
    

关键说明:tools:replace属性必须作用在具体的组件标签(这里是<provider>)上,直接添加在<application>标签上不会生效,因为合并冲突的根源是两个依赖库对同一个provider组件的authorities配置不一致,必须显式声明该组件并覆盖其属性。

内容的提问来源于stack exchange,提问作者Ben Leitner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:03:08