执行ionic cordova build android时找不到runtime.jar问题求助
ionic cordova build android中runtime.jar 404的问题 问题根源
你遇到的Could not find runtime.jar (android.arch.lifecycle:runtime:1.0.0)错误,本质原因是jcenter仓库已经停止维护并移除了大量旧依赖包,你访问的那个URL对应的jar包已经被从jcenter删除,所以返回404。
结合你的环境来看:你的Cordova Android平台版本是6.4.0,这个版本非常老旧,它的默认构建脚本里依赖了jcenter仓库,并且指定了android.arch.lifecycle:runtime的1.0.0版本——这个版本现在已经不在jcenter上了。
这个URL的来源
这个URL是Gradle构建工具根据你的项目依赖配置生成的:Cordova Android 6.4.0的默认build.gradle配置里声明了jcenter作为依赖仓库,同时间接依赖了android.arch.lifecycle:runtime:1.0.0这个库,Gradle就会去jcenter对应的路径下查找这个jar包,结果因为包被移除导致404。
解决方案
方案1:升级Cordova Android平台(推荐)
旧版本的Cordova Android不仅依赖过时的仓库,还存在很多兼容性问题,升级到稳定的新版本是最彻底的解决办法。考虑到你用的是Ionic 3,推荐升级到android@9.1.0(这个版本和Ionic 3兼容性较好):
- 先移除旧平台:
ionic cordova platform remove android - 添加指定版本的新平台:
ionic cordova platform add android@9.1.0 - 重新执行构建:
ionic cordova build android
新版本的Cordova Android已经将仓库替换为mavenCentral()和google(),并且依赖的库版本也更新到了可用的版本,不会再出现404问题。
方案2:修改现有Gradle配置(临时修复,不推荐长期使用)
如果你暂时不想升级平台,可以手动修改项目的Gradle配置来绕过这个问题:
- 打开项目根目录下的
platforms/android/build.gradle文件 - 找到仓库配置段,把
jcenter()替换为google()和mavenCentral():repositories { google() mavenCentral() // 移除或注释掉jcenter() } - 添加强制依赖规则,将
android.arch.lifecycle:runtime的版本指定为1.1.1(这个版本在mavenCentral上可获取):configurations.all { resolutionStrategy.force 'android.arch.lifecycle:runtime:1.1.1' } - 保存文件后重新执行构建命令。
额外说明
- 你提到的
C:\Users\%USER%\.cordova\lib\npm_cache里没有cordova-android文件夹,这个不影响,因为你的项目已经本地安装了android 6.4.0平台,全局缓存文件夹缺失只是没有全局缓存,不影响本地构建。 - 环境里显示
cordova (Cordova CLI) : not installed但能运行命令,是因为Ionic CLI集成了cordova功能,或者你安装了局部的cordova包,这不是导致当前问题的原因。
如果以上方案都无法解决,再考虑卸载重装所有组件,但优先尝试上面的方案。
内容的提问来源于stack exchange,提问作者Ionel Lupu

