Travis-CI构建Android项目遇SDK许可证未接受问题求助
解决Travis构建Android项目时的SDK许可证协议问题
看起来你遇到的是Travis环境中未接受特定SDK组件许可证的问题,之前的方案只处理了platforms;android-27的许可证,但这次报错指向的是Android SDK Build-Tools 27.0.1,下面给你几个针对性的解决思路:
1. 批量接受所有SDK许可证(最直接的方案)
之前单独安装某个组件的方式只能解决对应组件的许可证问题,不如直接让Travis一次性接受所有未同意的SDK许可证。修改你的before_install部分:
before_install: - yes | sdkmanager --update # 先更新sdkmanager到最新版本,避免旧版本兼容性问题 - yes | sdkmanager --licenses # 自动接受所有未接受的SDK许可证协议
这个命令会遍历所有需要许可证的SDK组件,自动完成同意操作,不管是构建工具还是平台组件都能覆盖到。
2. 统一项目的Build Tools版本
你在Travis配置里指定的是ANDROID_BUILD_TOOLS=27.0.2,但报错提示需要27.0.1的许可证,说明你的项目代码里可能还有模块依赖了27.0.1版本:
- 检查所有模块的
build.gradle文件,确保buildToolsVersion统一为27.0.2:
android { buildToolsVersion "27.0.2" // 其他配置... }
统一版本后,Travis就只会下载你指定的27.0.2构建工具,避免不必要的版本依赖。
3. 优化Travis的Android组件配置
调整android.components部分,明确添加必要的仓库组件,同时确保工具版本是最新的:
android: components: - tools - platform-tools - android-${ANDROID_API} - build-tools-${ANDROID_BUILD_TOOLS} - extra-android-m2repository # 安卓官方仓库,避免依赖下载失败 - extra-google-m2repository # Google官方仓库
修改后的完整Travis配置示例
sudo: required language: android jdk: oraclejdk8 notifications: email: recipients: - rudnev.vanya@gmail.com on_success: change on_failure: always before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -rf $HOME/.gradle/caches/*/plugin-resolution/ before_install: - yes | sdkmanager --update - yes | sdkmanager --licenses cache: directories: - $HOME/.gradle/caches/ - $HOME/.gradle/wrapper/ - $HOME/.android/build-cache env: global: - ANDROID_API=27 - ANDROID_BUILD_TOOLS=27.0.2 android: components: - tools - platform-tools - android-${ANDROID_API} - build-tools-${ANDROID_BUILD_TOOLS} - extra-android-m2repository - extra-google-m2repository script: - ./gradlew clean test build
如果以上方案还是不行,可以尝试在before_install里单独安装报错的构建工具版本:
before_install: - yes | sdkmanager "build-tools;27.0.1" - yes | sdkmanager --licenses
不过更推荐统一项目的Build Tools版本,长期来看能避免这类版本依赖问题。
内容的提问来源于stack exchange,提问作者Ivan Rudnev
相关产品推荐
相关产品推荐

