|
|
@@ -11,16 +11,68 @@ const SDK_URL = 'https://dl.google.com/android/repository/commandlinetools-win-1
|
|
|
const SDK_ROOT = 'C:\\android-sdk';
|
|
|
const CMDLINE_TOOLS_DIR = path.join(SDK_ROOT, 'cmdline-tools', 'latest');
|
|
|
const TEMP_ZIP = path.join(process.env.TEMP || '/tmp', 'cmdtools.zip');
|
|
|
+const VERSION_FILE = path.join(SDK_ROOT, '.sdk-version');
|
|
|
+const EXPECTED_VERSION = 'platforms-35-buildtools-35.0.0';
|
|
|
|
|
|
// 从环境变量获取代理设置
|
|
|
const PROXY = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;
|
|
|
|
|
|
-console.log('🚀 开始安装 Android SDK...');
|
|
|
+console.log('🚀 Android SDK 安装检查...');
|
|
|
console.log(`📦 SDK Root: ${SDK_ROOT}`);
|
|
|
if (PROXY) {
|
|
|
console.log(`🌐 使用代理: ${PROXY}`);
|
|
|
}
|
|
|
|
|
|
+// 检查 SDK 是否已安装且版本正确
|
|
|
+function isSdkInstalled() {
|
|
|
+ console.log('🔍 检测 Android SDK 安装状态...');
|
|
|
+
|
|
|
+ const sdkManagerPath = path.join(CMDLINE_TOOLS_DIR, 'bin', 'sdkmanager.bat');
|
|
|
+ const platformPath = path.join(SDK_ROOT, 'platforms', 'android-35');
|
|
|
+ const buildToolsPath = path.join(SDK_ROOT, 'build-tools', '35.0.0');
|
|
|
+
|
|
|
+ // 检查关键文件是否存在
|
|
|
+ console.log(' 📂 检查 sdkmanager...');
|
|
|
+ if (!fs.existsSync(sdkManagerPath)) {
|
|
|
+ console.log(' ❌ sdkmanager 不存在');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ console.log(' ✅ sdkmanager 存在');
|
|
|
+
|
|
|
+ console.log(' 📂 检查 platforms;android-35...');
|
|
|
+ if (!fs.existsSync(platformPath)) {
|
|
|
+ console.log(' ❌ platforms;android-35 不存在');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ console.log(' ✅ platforms;android-35 存在');
|
|
|
+
|
|
|
+ console.log(' 📂 检查 build-tools;35.0.0...');
|
|
|
+ if (!fs.existsSync(buildToolsPath)) {
|
|
|
+ console.log(' ❌ build-tools;35.0.0 不存在');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ console.log(' ✅ build-tools;35.0.0 存在');
|
|
|
+
|
|
|
+ // 验证版本标记文件
|
|
|
+ console.log(' 📝 检查版本标记...');
|
|
|
+ if (fs.existsSync(VERSION_FILE)) {
|
|
|
+ const installedVersion = fs.readFileSync(VERSION_FILE, 'utf8').trim();
|
|
|
+ console.log(` 已安装版本: ${installedVersion}`);
|
|
|
+ console.log(` 期望版本: ${EXPECTED_VERSION}`);
|
|
|
+
|
|
|
+ if (installedVersion === EXPECTED_VERSION) {
|
|
|
+ console.log(' ✅ 版本匹配');
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ console.log(' ⚠️ 版本不匹配,需要重新安装');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log(' ⚠️ 版本标记文件不存在');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// 下载文件(支持代理)
|
|
|
function downloadFile(url, dest) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
@@ -171,6 +223,23 @@ function runSdkManager(args) {
|
|
|
// 主函数
|
|
|
async function main() {
|
|
|
try {
|
|
|
+ // 0. 检查 SDK 是否已安装
|
|
|
+ if (isSdkInstalled()) {
|
|
|
+ console.log('\n✅ Android SDK 已安装且版本正确,跳过安装流程');
|
|
|
+ console.log(`📦 SDK Root: ${SDK_ROOT}`);
|
|
|
+
|
|
|
+ // 仍然需要设置环境变量(GitHub Actions 每次运行都需要)
|
|
|
+ console.log('\n⚙️ 设置环境变量...');
|
|
|
+ setGitHubEnv('ANDROID_HOME', SDK_ROOT);
|
|
|
+ setGitHubEnv('ANDROID_SDK_ROOT', SDK_ROOT);
|
|
|
+
|
|
|
+ console.log('\n🎉 Android SDK 环境变量设置完成!');
|
|
|
+ console.log('⏱️ 耗时: ~1-2秒(本地缓存加速)');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log('\n📦 未检测到有效的 Android SDK,开始完整安装流程...');
|
|
|
+
|
|
|
// 1. 下载 SDK
|
|
|
await downloadFile(SDK_URL, TEMP_ZIP);
|
|
|
|
|
|
@@ -231,6 +300,11 @@ async function main() {
|
|
|
|
|
|
console.log('🎉 Android SDK 安装完成!');
|
|
|
|
|
|
+ // 7. 创建版本标记文件
|
|
|
+ console.log('📝 创建版本标记文件...');
|
|
|
+ fs.writeFileSync(VERSION_FILE, EXPECTED_VERSION, 'utf8');
|
|
|
+ console.log(`✅ 版本标记已创建: ${EXPECTED_VERSION}`);
|
|
|
+
|
|
|
// 清理临时文件
|
|
|
if (fs.existsSync(TEMP_ZIP)) {
|
|
|
fs.unlinkSync(TEMP_ZIP);
|