如何正确配置Android项目的Bitbucket Pipelines?配置报错求助
解决Bitbucket Pipelines中Android SDK许可协议问题及正确配置指南
嘿,我来帮你搞定这个SDK许可的坑!这个错误我在帮开发者配置Android流水线时碰到过好多次,咱们一步步拆解问题、解决它。
先分析你当前脚本的问题
你的build.sh里有两个关键问题导致了许可错误:
- 变量引用格式错误:
{$ANDROID_HOME}的写法不对,应该是${ANDROID_HOME}(大括号要包裹变量名,不是反过来) - 许可内容无效:
<My license>是占位符,必须替换成Android SDK官方要求的许可哈希值,否则系统识别不到你接受了协议
修正后的build.sh脚本
把你的脚本换成下面这个,里面的许可哈希是官方认可的常用值(适配大部分Android SDK版本):
#!/bin/sh # 创建许可目录并写入正确的SDK许可协议 mkdir -p "${ANDROID_HOME}/licenses" # Android SDK正式版许可哈希 echo -e "8933bad161af4178b1185d1a37fbf41ea5269c55" > "${ANDROID_HOME}/licenses/android-sdk-license" # Android SDK预览版许可哈希 echo -e "84831b9409646a918e30573bab4c9c91346d8abd" > "${ANDROID_HOME}/licenses/android-sdk-preview-license" # 确保gradlew有可执行权限(避免构建时权限报错) chmod +x ./gradlew # 执行生产环境release构建 ./gradlew assembleProductionRelease
完整的Bitbucket Pipelines配置文件(bitbucket-pipelines.yml)
除了脚本,你还需要一个标准的流水线配置文件来指定环境和步骤:
image: atlassian/android-sdk:29 pipelines: default: - step: name: Build Android Production Release caches: - gradle # 缓存gradle依赖,大幅缩短后续构建时间 script: - ./build.sh artifacts: - app/build/outputs/apk/production/release/*.apk # 保留构建产物,方便下载
关键注意事项
- 镜像版本适配:
atlassian/android-sdk:29是包含SDK 29的官方镜像,如果你的项目需要更高版本(比如SDK 33),可以换成对应版本的镜像 - 许可哈希更新:如果后续SDK版本要求新的许可哈希,你可以在本地运行
android-sdk/tools/bin/sdkmanager --licenses,接受许可后查看本地$ANDROID_HOME/licenses目录下的哈希值,替换到脚本里即可 - 文件权限:确保
build.sh在仓库里有可执行权限(本地先运行chmod +x build.sh再提交代码)
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

