Переглянути джерело

修改构建android的脚本,增加下载构建工具的超时时间,避免出现10秒内没有下载完就报错

dengdx 23 годин тому
батько
коміт
74173d0e07
1 змінених файлів з 53 додано та 5 видалено
  1. 53 5
      .build/build-android.js

+ 53 - 5
.build/build-android.js

@@ -409,31 +409,76 @@ function configureGradleWrapper() {
     return;
   }
 
-  console.log('🔧 配置 Gradle wrapper 使用 Gradle 9.0.0...');
+  console.log('🔧 配置 Gradle wrapper 使用 Gradle 8.13(腾讯云镜像)...');
 
   try {
     // 读取现有的配置文件
     let content = fs.readFileSync(gradleWrapperPropsPath, 'utf8');
 
-    // 替换 distributionUrl 为我们的 Gradle 版本
+    // 替换 distributionUrl 为腾讯云镜像,并添加超时配置
     const oldUrlPattern = /distributionUrl=.*/;
-    const newUrl = 'distributionUrl=https\\://services.gradle.org/distributions/gradle-9.0.0-bin.zip';
+    const newUrl = 'distributionUrl=https\\://mirrors.cloud.tencent.com/gradle/gradle-8.13-bin.zip';
 
     if (oldUrlPattern.test(content)) {
       content = content.replace(oldUrlPattern, newUrl);
       fs.writeFileSync(gradleWrapperPropsPath, content, 'utf8');
-      console.log('✅ Gradle wrapper 已配置为使用 Gradle 9.0.0');
+      console.log('✅ Gradle wrapper 已配置为使用 Gradle 8.13(腾讯云镜像)');
     } else {
       console.log('⚠️  未找到 distributionUrl 配置,添加新配置');
       content += `\n${newUrl}\n`;
       fs.writeFileSync(gradleWrapperPropsPath, content, 'utf8');
-      console.log('✅ 已添加 Gradle 9.0.0 配置');
+      console.log('✅ 已添加 Gradle 8.13 配置');
+    }
+
+    // 添加网络超时配置
+    if (!content.includes('networkTimeout')) {
+      content += '\n# 网络超时设置(300秒 = 5分钟)\nnetworkTimeout=300000\n';
+      fs.writeFileSync(gradleWrapperPropsPath, content, 'utf8');
+      console.log('✅ 已添加网络超时配置');
     }
   } catch (error) {
     console.warn('⚠️  配置 Gradle wrapper 失败:', error.message);
   }
 }
 
+// 配置全局 Gradle 设置(超时时间、镜像等)
+function configureGradleGlobal() {
+  const initGradlePath = path.join(cordovaPrjDir, 'init.gradle');
+
+  console.log('🔧 创建全局 Gradle 配置(init.gradle)...');
+
+  const initGradleContent = `
+allprojects {
+    repositories {
+        maven { url 'https://maven.aliyun.com/repository/public' }
+        maven { url 'https://maven.aliyun.com/repository/google' }
+        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
+        mavenCentral()
+        google()
+        jcenter()
+    }
+
+    // 配置所有任务的网络超时
+    tasks.withType(JavaCompile) {
+        options.fork = true
+        options.forkOptions.memoryMaximumSize = '1g'
+    }
+}
+
+task wrapper(type: Wrapper) {
+    gradleVersion = '8.13'
+    distributionUrl = 'https://mirrors.cloud.tencent.com/gradle/gradle-8.13-bin.zip'
+    networkTimeout = 300000  // 5分钟超时
+}
+
+// 全局超时设置
+gradle.startParameter.taskExecutionTimeout = java.time.Duration.ofMinutes(10)
+`;
+
+  fs.writeFileSync(initGradlePath, initGradleContent, 'utf8');
+  console.log('✅ 已创建 init.gradle 全局配置(5分钟超时 + 阿里云镜像)');
+}
+
 // 配置 Android 构建环境变量
 function getAndroidEnv() {
   // 计算 Gradle bin 路径
@@ -471,6 +516,9 @@ function buildAndroidApk() {
   // 2.5. 配置 Gradle wrapper 使用我们的 Gradle 版本
   configureGradleWrapper();
 
+  // 2.6. 配置全局 Gradle 设置(超时时间、镜像等)
+  configureGradleGlobal();
+
   // 3. 复制 dist/h5 → .build/dros/www
   fs.rmSync(dstDir, { recursive: true, force: true });
   fs.mkdirSync(dstDir, { recursive: true });