DevEco Studio使用gradle作为构建工具,在默认配置的情况下,创建HarmonyOS工程后,在初始化的过程中可能会出现超时(timeout)异常,也就是访问gradle服务端超时异常。
网上解决这个问题的方法很多,比较常用的方法是自己先下载gradle的zip包(大概100 MB),例如,下载的文件是gradle-6.3-all.zip,然后将该文件放在特定的目录下。目录的位置与操作系统有关。
● Windows下的位置:C:\Users\用户名\.gradle。
● macOS下的位置:/Users/用户名/.gradle。
● Linux下的位置:/home/用户名/.gradle。
读者根据自己使用的操作系统进入不同位置的.gradle目录,然后再进入该目录下的wrapper/dists子目录,会看到名称为“gradle-版本号-all” 的目录,例如,图1—40展示的是我的macOS上的gradle 集合。
图1—40 macOS上的gradle集合
进入 gradle-6.3-all 目录(最新的 DevEco Studio 使用的是gradle 6.3),会看到一个名称由字母和数字组成的目录,如b4awcolw9l59x95tu1obfh9i8,这个目录的名称与gradle版本和路径有关。所以不同版本和路径的gradle,目录名不同。现在将下载的gradle-6.3-all.zip文件复制到该目录。用DevEco Studio重新打开HarmonyOS工程,就会非常快地同步gradle。这是因为DevEco Studio会优先在特定目录下搜索gradle的zip文件是否存在,如果存在,就直接使用,如果不存在,才会从网上下载。
不过有时特定的gradle目录还没有生成,我们不知道要将gradle-6.3-all.zip或类似的文件放到哪里,所以可以采用另外一种方法,换个下载速度更快的地址。
打开HarmonyOS工程,找到<工程根目录>/gradle/wrapper/gradle-wrapper.properties文件,会看到一个distributionUrl属性,该属性默认指向gradle的官方网站,可以将其换成国内的地址,或干脆用apache、nginx等服务器自己搭建一个本机下载服务,如我将其换成了如下的地址:
http://127.0.0.1/gradle-6.3-all.zip
现在再重新打开HarmonyOS工程,就会非常快速地下载和同步gradle及其相关配置了。不过这里还有一个问题,如果创建新的HarmonyOS工程,还要改一遍这个文件。所以为了一劳永逸,我们可以修改DevEco Studio的模板。
首先进入<DevEco Studio根目录>/plugins/harmony目录,这是DevEco Studio的插件目录。在该目录下找到lib/templates/gradle/wrapper/gradle/wrapper/gradle-wrapper.properties文件,该文件就是每次创建HarmonyOS工程时的gradle-wrapper.properties文件。打开该文件,将distributionUrl属性的值改成http://127.0.0.1/gradle-6.3-all.zip即可。然后重新启动DevEco Studio。与创建新的HarmonyOS工程时,DevEco Studio就会自动使用新的gradle下载地址了。由于此前已经下载了gradle,所以即使不启动本机的http服务器,仍然能快速使用gradle。