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

如何在Android项目的Bazel中添加Volley、Gson等Maven依赖?

解决Bazel android_binary中Maven依赖标签格式错误的问题

首先看你碰到的错误:

ERROR: /home/abhi/Desktop/Git/SENA-28/tensorflow/SenDetect/BUILD:24:1: //SenDetect:sendetect: invalid label '@androidsdk//com.android.volley:volley:1.1.0' in element 3 of attribute 'deps' in 'android_binary' rule: invalid target name 'volley:1.1.0': target names may not contain ':'

问题出在你把版本号1.1.0直接放在了依赖标签的目标名称部分,Bazel的目标标签格式是@<仓库名>//<包路径>:<目标名>,目标名里绝对不能包含冒号,这才触发了报错。

下面是具体的修复步骤:

1. 修正BUILD文件中的deps依赖标签

把deps里每个依赖的版本号去掉,只保留组和artifact名称,格式调整为@androidsdk//<group>:<artifact>:

deps = [
    ":tensorflow_native_libs",
    "//tensorflow/contrib/lite/java:tensorflowlite",
    "@androidsdk//com.android.support:appcompat-v7",
    "@androidsdk//com.android.volley:volley",
    "@androidsdk//com.google.code.gson:gson"
],

2. 在WORKSPACE文件中指定依赖版本

版本号需要统一在WORKSPACE里配置,而不是散落在BUILD文件中。这里分两种常用的配置方式:

方式一:使用android_sdk_repository

如果你是通过android_sdk_repository管理Android相关依赖,直接在该规则的maven_artifacts参数里声明带版本的依赖:

android_sdk_repository(
    name = "androidsdk",
    api_level = 25,
    build_tools_version = "25.0.0",
    maven_artifacts = [
        "com.android.support:appcompat-v7:25.0.0",
        "com.android.volley:volley:1.1.0",
        "com.google.code.gson:gson:2.6.2",
    ],
)

方式二:使用maven_install(推荐)

如果你的项目依赖较多Maven库,更推荐用maven_install规则来统一管理,配置如下:

load("@bazel_tools//tools/build_defs/repo:maven.bzl", "maven_install")

maven_install(
    name = "maven",
    artifacts = [
        "com.android.support:appcompat-v7:25.0.0",
        "com.android.volley:volley:1.1.0",
        "com.google.code.gson:gson:2.6.2",
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

这种情况下,BUILD文件里的deps引用需要改成以下格式(把点和横杠替换成下划线):

deps = [
    ":tensorflow_native_libs",
    "//tensorflow/contrib/lite/java:tensorflowlite",
    "@maven//:com_android_support_appcompat_v7",
    "@maven//:com_android_volley_volley",
    "@maven//:com_google_code_gson_gson"
],

小提示

Bazel的依赖标签规则很严格,记住版本号永远不要放在BUILD的deps标签里,统一在WORKSPACE管理不仅能避免格式错误,还方便后续统一升级依赖版本。

内容的提问来源于stack exchange,提问作者Abhijeet Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:59:07