打包时常常遇到失败的情况,报错 log:
* What went wrong:
Could not resolve all files for configuration ':app:releaseRuntimeClasspath'.
> Could not resolve com.aliyun.ams:alicloud-android-utils:1.1.+.
Required by:
project :app > com.aliyun.ams:alicloud-android-httpdns:1.1.7
> Failed to list versions for com.aliyun.ams:alicloud-android-utils.
> Unable to load Maven meta-data from ...
> Could not HEAD ...
> Read timed out
* What went wrong:
Could not resolve all files for configuration ':app:releaseRuntimeClasspath'.
> Could not resolve com.mob:MobTools:+.
Required by:
project :app > com.mob:MobTools:+
> Failed to list versions for com.mob:MobTools.
> Unable to load Maven meta-data from ...
> Could not HEAD ...
> Read timed out
分析:
- 报错的经常是 ShareSDK、aliyunDNS 这里两个库,它们的共同点是,都引用了动态版本的依赖
问题原因:
- 有依赖的版本设置为动态版本(即 +、snapshot 等)(动态版本每次同步都会访问网络,不过 Android Studio 中默认设了 24 小时的缓存)
- repositories 里有仓库不能访问
复现:
- 开 Charles,给 repositories 里某个仓库地址打断点
- 一段时间后报错
解决:
- 将动态版本改为固定版本
- aliyunDNS 是传递的依赖中有动态版本,ShareSDK 是通过 Gradle 插件编译时加入的依赖,都无法直接替换
- 可参考 Gradle 技巧:操作 dependency
- 等待仓库链接好转