我在一个ionic 2应用程序上工作了几个星期,昨天它运行得很好,但今天我正试图使用以下命令在我的android设备上构建和测试它:
ionic run android
我在人行横道上遇到以下错误:
错误:cmd:命令失败,退出代码为1错误输出:FAILURE:生成失败,出现异常。
哪里出了问题:配置根项目"android"时出现问题。
无法解析配置":_armv7DebugApkCopy"的所有依赖项。无法解析组织。xwalk:xwalk_core_library:22+。要求::android:未指定无法解析组织。xwalk:xwalk_core_library:22+。未能列出org.xwalk:xwalk_core_library的版本。无法从加载Maven元数据https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/maven metadata.xml。无法获取"https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/maven metadata.xml'。从服务器接收到状态代码403:禁止
Try:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。
自昨天以来,我没有更改任何代码。
它正在尝试从以下url获取一些数据:https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/maven-metadata.xml
此时此刻给出的是403。我甚至在没有网络连接的情况下尝试过,但没有成功。
我曾试图去crosswalk网站寻求任何解决方案,但我甚至无法访问www.crosswalk-project.org
有人知道这个问题吗?
经过对gradle文件的一些研究和更改,我找到了一个解决方案:
"在android gradle文件中定义固定的cross-walk版本"如下:
在您的platforms\android\codova插件crosswalk-webview文件夹中,有一个gradle文件。->打开文件并找到以下代码:
dependencies {
compile xwalkSpec
}
->将代码替换为以下内容:
dependencies {
compile 'org.xwalk:xwalk_core_library:23.53.589.4' //xwalkSpec
}
并尝试用构建它
ionic run android
它对我有用。
更新:
如果像我建议的那样简单地替换代码对你不起作用,那么这正是我所做的:
正如你们大多数人所知,当我们在gradle文件中指定依赖项时,它会从某个服务器下载该依赖项并在项目中使用,但如果"确切"的依赖项已经在我们电脑中的同一/其他项目中使用了,它会重用以前下载的依赖项,而不是去服务器。
所以我打开了我的离子应用程序(通过以前安装或生成的apk),并使用Chrome开发工具对其进行了检查。然后我在控制台中键入了以下命令:
window.navigator.userAgent
我得到了:
"Mozilla/5.0(Linux;Android 5.1;genymotion_box86p_5.1_150609_195503内部版本/LMY47D)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/53.2785.143 Crosswalk/23.53.589.4 Mobile Safari/537.36">
响应包含我的gradle构建所使用的最新Crosswalk版本,所以我只是在gradle文件中使用了该特定版本,因为我知道它已经下载并且有效。
我希望这些步骤将有助于你们中的一些人解决这个问题。