近期将 Android Studio 升级到了 3.3 版本,刚好有个托管在 GitHub 上的库要更新。便索性将库的 Android SDK 升级到了 28;同时将 Android SDK Build-Tools 也升级到了 28.0.3。修改库代码,提交至 GitHub 并发布 Releases,像往常一样在 JitPack 发布版本仓库。JitPack 报错如下:
1 | * What went wrong: |
这段报错的大致意思是:项目在构建过程中需要接受 SDK 许可协议,并使用 Android Studio SDK Manager 安装缺少的组件。到这基本明白怎么回事了,本地的测试代码运行没有问题,发布仓库的时候 JitPack 报错,只能说明一个问题,JitPack 的项目构建环境缺少最新的组件!
这样解释问题可能不够直观,那么想象一下如果你当前 IDE 环境要比你导入项目的版本低,那么项目在 build 过程中会有类似下图的提示,看到这是不是有点清楚了?
点击 Install missing SDK package(s)
安装缺失的组件,安装完毕后重新 build 项目,就可以顺利运行了。
至此,JitPack 报错的原因也就不难理解了 !JitPack 的项目构建环境缺少最新的组件,并且最新组件的安装是需要同意 SDK 许可协议的,而这个自动“同意”的操作 JitPack 并没有做,并且每次 SDK 和 AS 的升级,JitPack 都会慢那么几天!原因知道了,那么如何解决呢?GitHub 的大神给出了解决方法,在脚本中添加接受安装许可的命令!具体操作如下:
1、将项目切至 Project 视图,打开项目下的 gradlew 文件,增加许可命令,版本号需与报错提示的一致。
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;28.0.3"
2、提交 gradlew 至 GitHub,发布新的 Releases 版本,重新到 JitPack 发布版本仓库即可。