Browse Source

使用新的方式接受licence

dengdx 2 days ago
parent
commit
da2c66d91a
1 changed files with 16 additions and 3 deletions
  1. 16 3
      .build/setup-android-sdk.js

+ 16 - 3
.build/setup-android-sdk.js

@@ -198,16 +198,29 @@ async function main() {
     setGitHubEnv('ANDROID_HOME', SDK_ROOT);
     setGitHubEnv('ANDROID_SDK_ROOT', SDK_ROOT);
     
-    // 5. 先接受 licenses(使用多个 echo y
+    // 5. 先接受 licenses(使用输入重定向文件
     console.log('📝 接受 SDK licenses...');
     const sdkManagerPath = path.join(CMDLINE_TOOLS_DIR, 'bin', 'sdkmanager.bat');
-    // 使用多个 y 来处理多个许可证提示
-    const licenseCmd = `(echo y & echo y & echo y & echo y & echo y & echo y & echo y & echo y) | "${sdkManagerPath}" --licenses --sdk_root=${SDK_ROOT}`;
+    
+    // 创建包含多个 y 的临时文件(每个 y 一行)
+    const tempInputFile = path.join(process.env.TEMP, 'sdk-licenses-input.txt');
+    // 根据日志显示有 7 个许可证,我们用 20 个 y 确保足够
+    fs.writeFileSync(tempInputFile, 'y\n'.repeat(20));
+    
+    // 使用输入重定向 < 而不是管道 |
+    const licenseCmd = `"${sdkManagerPath}" --licenses --sdk_root=${SDK_ROOT} < "${tempInputFile}"`;
     execSync(licenseCmd, { 
       stdio: 'inherit',
       shell: 'cmd.exe'
     });
     
+    console.log('✅ licenses 接受完成');
+    
+    // 清理临时文件
+    if (fs.existsSync(tempInputFile)) {
+      fs.unlinkSync(tempInputFile);
+    }
+    
     // 6. 然后安装 platforms 和 build-tools
     console.log('📦 安装 Android SDK 组件...');
     runSdkManager([