前言:

android 工程需要 gradle 作为打包工具,Qt for android 如果想要打包 apk 同样需要使用 gradle,但是 包括 Android studio 在内的诸多 Android IDE 工具都没有自带的 gradle 工具,可能是因为 gradle 的版本迭代较快,因此各个 IDE 均采用从服务器实时下载 gradle 的方式。

问题:

如果因为网络限制,导致访问 google 的 gradle 下载服务器失败时,gradle 将无法正常下载,进而导致工程构建失败,比如:

Downloading file:/home/yk/Qt/Repos/QtMediaCodec/build/Android_Qt_6_7_2_Clang_armeabi_v7a-Debug/android-build/gradle/wrapper/gradle-8.3-bin.zip

Exception in thread "main" java.io.FileNotFoundException: /home/yk/Qt/Repos/QtMediaCodec/build/Android_Qt_6_7_2_Clang_armeabi_v7a-Debug/android-build/gradle/wrapper/gradle-8.3-bin.zip (No such file or directory)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
    at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
    at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:189)
    at org.gradle.wrapper.Download.downloadInternal(Download.java:129)
    at org.gradle.wrapper.Download.download(Download.java:109)
    at org.gradle.wrapper.Install.forceFetch(Install.java:171)
    at org.gradle.wrapper.Install.fetchDistribution(Install.java:104)
    at org.gradle.wrapper.Install.access$400(Install.java:46)
    at org.gradle.wrapper.Install$1.call(Install.java:81)
    at org.gradle.wrapper.Install$1.call(Install.java:68)
    at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69)
    at org.gradle.wrapper.Install.createDist(Install.java:68)
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:102)
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:66)
Building the android package failed!

构建日志里已经告知我们在指定路径下没有找到 gradle-8.3-bin.zip ,我们要做的就是把 gradle-8.3-bin.zip 放入到指定路径下(/home/yk/Qt/Repos/QtMediaCodec/build/Android_Qt_6_7_2_Clang_armeabi_v7a-Debug/android-build/gradle/wrapper/ )即可。