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

如何将Bitbucket制品按分支动态添加为AOSP预构建二进制文件?

基于分支动态引入Bitbucket Pipelines生成的预构建二进制到AOSP

核心结论

Android.mk本身不直接支持URL下载,但可以通过自定义Make规则结合AOSP构建链实现动态下载;通过专属配置仓库+Repo分支映射,可实现按分支匹配对应版本的预构建文件,完全避开将二进制文件存入Git仓库的需求。

具体实现步骤

1. 创建预构建配置专属Git仓库

  • 新建空Git仓库,仅存放预构建模块的配置文件(Android.mk/Android.bp、辅助脚本等)
  • 为该仓库创建与AOSP一一对应的分支(如master对应AOSP主分支,android13对应AOSP Android 13分支)
  • 每个分支的配置文件中,写入对应版本的二进制下载URL(Bitbucket Pipelines生成的带版本标识的下载链接)

2. 在Repo清单中添加该仓库

修改AOSP的Repo清单(如manifest.xml或自定义local_manifest.xml),添加配置仓库条目并关联分支:

<project name="your/prebuilt-config-repo" path="vendor/prebuilt/my-modules" revision="master" />
  • path:指定仓库同步到AOSP源码树的路径(推荐放在vendor或external目录下)
  • revision:设置为与当前AOSP分支匹配的配置仓库分支,确保repo sync时拉取对应版本的配置

3. 编写带下载逻辑的Android.mk

在配置仓库的对应分支中,编写Android.mk,实现「检查文件存在性→不存在则下载→构建预构建模块」的完整逻辑:

预构建JAR示例

LOCAL_PATH := $(call my-dir)

# 定义当前分支对应的JAR下载URL(Bitbucket Pipelines生成的链接)
MY_PREBUILT_JAR_URL := https://bitbucket.example.com/your-project/downloads/my-lib-v1.0-android13.jar
MY_PREBUILT_JAR := my-lib.jar

# 自定义下载规则:仅当文件不存在时执行下载
$(LOCAL_PATH)/$(MY_PREBUILT_JAR):
	@if [ ! -f $@ ]; then \
		echo "Downloading prebuilt JAR from: $(MY_PREBUILT_JAR_URL)"; \
		curl -f -L $(MY_PREBUILT_JAR_URL) -o $@; \
		# 可选:添加MD5校验,避免文件损坏
		# echo "abcdef123456...  $@" | md5sum -c -; \
	fi

# 声明预构建JAR模块
include $(CLEAR_VARS)
LOCAL_MODULE := my-prebuilt-lib
LOCAL_SRC_FILES := $(MY_PREBUILT_JAR)
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE_TAGS := optional
# 让构建系统依赖下载规则,确保先下载再构建
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/$(MY_PREBUILT_JAR)
include $(BUILD_PREBUILT)

预构建APK示例

include $(CLEAR_VARS)
LOCAL_MODULE := my-prebuilt-app
LOCAL_SRC_FILES := my-app.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED # 若APK已提前签名
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/my-app.apk
include $(BUILD_PREBUILT)

# 对应APK的下载规则
$(LOCAL_PATH)/my-app.apk:
	@if [ ! -f $@ ]; then \
		echo "Downloading prebuilt APK..."; \
		curl -f -L https://bitbucket.example.com/your-project/downloads/my-app-v2.0-android13.apk -o $@; \
	fi

4. 结合Bitbucket Pipelines自动更新配置

当Bitbucket Pipelines生成新的二进制版本时,自动更新对应分支的Android.mk中的下载URL:

  • 在Pipelines脚本中,用sed等工具替换Android.mk里的URL为新版本的下载链接
  • 提交修改并推送到配置仓库的对应分支
  • 后续AOSP执行repo sync时,会拉取更新后的配置,编译阶段自动下载新版本二进制

关键注意事项

  • 文件缓存:下载的二进制会保存在配置仓库目录中,后续编译不会重复下载,可通过make clean清除后重新拉取
  • 权限认证:如果Bitbucket下载链接需要认证,可在curl命令中添加-u username:token或用环境变量传递认证信息(禁止硬编码敏感内容)
  • 版本一致性:严格保持配置仓库分支与AOSP分支的对应关系,避免跨版本二进制兼容性问题
  • 完整性校验:建议添加MD5/SHA校验步骤,防止下载的二进制文件损坏或被篡改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:37:17