From c3b7c178c5906dca046712c1c63b9e80057b7cbe Mon Sep 17 00:00:00 2001 From: Hal Eisen Date: Tue, 7 Apr 2026 17:31:35 -0700 Subject: [PATCH 1/4] Rename .androidide/ to .cg/ in multiple locations --- .gitignore | 2 +- .../java/com/itsaky/androidide/utils/Environment.java | 10 ++++++++-- .../src/main/java/org/adfa/constants/constants.kt | 7 +++++-- .../test/java/com/itsaky/androidide/gradle/utils.kt | 4 +++- layouteditor/.gitignore | 2 +- resources/src/main/res/values-ar-rSA/strings.xml | 4 ++-- resources/src/main/res/values-bn-rIN/strings.xml | 4 ++-- resources/src/main/res/values-de-rDE/strings.xml | 4 ++-- resources/src/main/res/values-es-rES/strings.xml | 4 ++-- resources/src/main/res/values-fr-rFR/strings.xml | 4 ++-- resources/src/main/res/values-hi-rIN/strings.xml | 4 ++-- resources/src/main/res/values-in-rID/strings.xml | 4 ++-- resources/src/main/res/values-pt-rBR/strings.xml | 4 ++-- resources/src/main/res/values-ro-rRO/strings.xml | 4 ++-- resources/src/main/res/values-ru-rRU/strings.xml | 4 ++-- resources/src/main/res/values-tr-rTR/strings.xml | 4 ++-- resources/src/main/res/values-zh-rCN/strings.xml | 4 ++-- resources/src/main/res/values/strings.xml | 4 ++-- .../com/itsaky/androidide/utils/SharedEnvironment.kt | 9 +++++++-- subprojects/tooling-api-model/build.gradle.kts | 2 +- 20 files changed, 52 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index fc56337175..fffae32b72 100755 --- a/.gitignore +++ b/.gitignore @@ -105,7 +105,7 @@ sentry.properties # Generated files for tooling API tests/test-home -/tests/**/.androidide/init/model.jar +/tests/**/.cg/init/model.jar /composite-builds/build-deps-common/constants/build/ /composite-builds/build-deps/build/ diff --git a/common/src/main/java/com/itsaky/androidide/utils/Environment.java b/common/src/main/java/com/itsaky/androidide/utils/Environment.java index 6b80b83c23..a777115b24 100755 --- a/common/src/main/java/com/itsaky/androidide/utils/Environment.java +++ b/common/src/main/java/com/itsaky/androidide/utils/Environment.java @@ -127,7 +127,10 @@ public static String getArchitecture() { } public static File getProjectCacheDir(File projectDir) { - return new File(projectDir, ANDROIDIDE_PROJECT_CACHE_DIR); + File current = new File(projectDir, ANDROIDIDE_PROJECT_CACHE_DIR); + File legacy = new File(projectDir, SharedEnvironment.LEGACY_PROJECT_CACHE_DIR_NAME); + LegacyIdeDataDirKt.migrateLegacyIdeDataDirIfNeeded(legacy, current); + return current; } public static void init(Context context) { @@ -142,7 +145,10 @@ public static void init(Context context) { ROOT = mkdirIfNotExists(new File(DEFAULT_ROOT)); PREFIX = mkdirIfNotExists(new File(ROOT, "usr")); HOME = mkdirIfNotExists(new File(ROOT, "home")); - ANDROIDIDE_HOME = mkdirIfNotExists(new File(HOME, ".androidide")); + File ideHomeCandidate = new File(HOME, SharedEnvironment.PROJECT_CACHE_DIR_NAME); + File legacyIdeHome = new File(HOME, SharedEnvironment.LEGACY_PROJECT_CACHE_DIR_NAME); + LegacyIdeDataDirKt.migrateLegacyIdeDataDirIfNeeded(legacyIdeHome, ideHomeCandidate); + ANDROIDIDE_HOME = mkdirIfNotExists(ideHomeCandidate); TMP_DIR = mkdirIfNotExists(new File(PREFIX, "tmp")); BIN_DIR = mkdirIfNotExists(new File(PREFIX, "bin")); OPT_DIR = mkdirIfNotExists(new File(PREFIX, "opt")); diff --git a/composite-builds/build-deps-common/constants/src/main/java/org/adfa/constants/constants.kt b/composite-builds/build-deps-common/constants/src/main/java/org/adfa/constants/constants.kt index 2c3d803607..2bd9cbdd3e 100644 --- a/composite-builds/build-deps-common/constants/src/main/java/org/adfa/constants/constants.kt +++ b/composite-builds/build-deps-common/constants/src/main/java/org/adfa/constants/constants.kt @@ -34,9 +34,12 @@ const val ANDROID_SDK_ZIP = "android-sdk.zip" const val GRADLE_DISTRIBUTION_NAME = "gradle-$GRADLE_DISTRIBUTION_VERSION" const val GRADLE_DISTRIBUTION_ARCHIVE_NAME = "$GRADLE_DISTRIBUTION_NAME-bin.zip" -// .androidide folder +// App-internal IDE data under files/home/ (matches SharedEnvironment.PROJECT_CACHE_DIR_NAME) @Suppress("SdCardPath") -const val ANDROIDIDE_HOME = "/data/data/com.itsaky.androidide/files/home/.androidide" +const val IDE_DATA_DIR_NAME = ".cg" + +@Suppress("SdCardPath") +const val ANDROIDIDE_HOME = "/data/data/com.itsaky.androidide/files/home/$IDE_DATA_DIR_NAME" // Code On the Go gradle plugin const val COGO_GRADLE_PLUGIN_NAME = "cogo-plugin" diff --git a/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt b/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt index 7655ed644c..1041df3136 100644 --- a/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt +++ b/gradle-plugin/src/test/java/com/itsaky/androidide/gradle/utils.kt @@ -19,6 +19,7 @@ package com.itsaky.androidide.gradle import com.itsaky.androidide.buildinfo.BuildInfo import com.itsaky.androidide.utils.FileProvider +import com.itsaky.androidide.utils.SharedEnvironment import org.gradle.testkit.runner.BuildResult import org.gradle.testkit.runner.GradleRunner import org.gradle.testkit.runner.internal.PluginUnderTestMetadataReading @@ -35,7 +36,8 @@ internal fun buildProject( vararg plugins: String ): BuildResult { val projectRoot = openProject(agpVersion, useApplyPluginGroovySyntax, *plugins) - val initScript = FileProvider.testHomeDir().resolve(".androidide/init/androidide.init.gradle") + val initScript = FileProvider.testHomeDir() + .resolve("${SharedEnvironment.PROJECT_CACHE_DIR_NAME}/init/androidide.init.gradle") val mavenLocal = FileProvider.projectRoot().resolve("gradle-plugin/build/maven-local/repos.txt").toFile() if (!(mavenLocal.exists() && mavenLocal.isFile)) { diff --git a/layouteditor/.gitignore b/layouteditor/.gitignore index 303931debf..9ea5a9cf85 100644 --- a/layouteditor/.gitignore +++ b/layouteditor/.gitignore @@ -85,4 +85,4 @@ lint/tmp/ # lint/reports/ -.androidide/ \ No newline at end of file +.cg/ \ No newline at end of file diff --git a/resources/src/main/res/values-ar-rSA/strings.xml b/resources/src/main/res/values-ar-rSA/strings.xml index 8e1a9a11c8..54ed37fd25 100644 --- a/resources/src/main/res/values-ar-rSA/strings.xml +++ b/resources/src/main/res/values-ar-rSA/strings.xml @@ -282,7 +282,7 @@ خيارات تنسيق XML تهيئة تنسيق XML استخدام خط مخصص - في حالة التمكين، سيتم استخدام الملف الموجود على \"/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" كخط محرر. + في حالة التمكين، سيتم استخدام الملف الموجود على \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" كخط محرر. تثبيت APK... هل تريد فتح التطبيق؟ خدمة بناء Code on the Go @@ -399,7 +399,7 @@ خيارات تجريبية/تصحيح أخطاء Code on the Go تصحيح الأخطاء تفريغ السجلات - تفريغ سجلات Code on the Go إلى $HOME/.androidide/logs + تفريغ سجلات Code on the Go إلى $HOME/.cg/logs قم بتشغيل النسخة التصحيحية (debug) من تطبيقك لعرض السجلات هنا. تم تعطيل إرسال السجل. يمكنك تمكينه في الخيارات. تظهر سجلات من بيئة التطوير المتكاملة هنا. diff --git a/resources/src/main/res/values-bn-rIN/strings.xml b/resources/src/main/res/values-bn-rIN/strings.xml index c11545917c..5cfc7309bb 100644 --- a/resources/src/main/res/values-bn-rIN/strings.xml +++ b/resources/src/main/res/values-bn-rIN/strings.xml @@ -282,7 +282,7 @@ XML ফর্ম্যাটিং অপশনগুলি XML ফর্ম্যাটার কনফিগার করুন কাস্টম ফন্ট ব্যবহার করুন - সক্রিয় থাকলে, \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" ফাইলটিকে এডিটর-এর ফন্ট হিসেবে ব্যবহার করা হবে। + সক্রিয় থাকলে, \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" ফাইলটিকে এডিটর-এর ফন্ট হিসেবে ব্যবহার করা হবে। APK ইনস্টল করা হচ্ছে... তুমি কি অ্যাপ্লিকেশনটি খুলতে চাও? Code on the Go Gradle build পরিষেবা @@ -399,7 +399,7 @@ Code on the Go-এর জন্য পরীক্ষামূলক/ডিবাগিং অপশনগুলি ডিবাগিং ডাম্প লগ - Code on the Go লগ ডাম্প করুন $HOME/.androidide/logs এ + Code on the Go লগ ডাম্প করুন $HOME/.cg/logs এ এখানে লগগুলি দেখার জন্য আপনার অ্যাপ্লিকেশনটির ডিবাগ ভ্যারিয়েন্ট টি রান করুন৷ LogSender নিষ্ক্রিয় করা হয়েছে। আপনি Preferences-এ গিয়ে এটিকে সক্রিয় করতে পারেন। IDE লগস্ এখানে দেখানো হয়. diff --git a/resources/src/main/res/values-de-rDE/strings.xml b/resources/src/main/res/values-de-rDE/strings.xml index 374ba0700c..7d6aeccdeb 100644 --- a/resources/src/main/res/values-de-rDE/strings.xml +++ b/resources/src/main/res/values-de-rDE/strings.xml @@ -281,7 +281,7 @@ XML-Formatierungsoptionen XML-Formatierer konfigurieren Eigene Schriftart verwenden - Wenn aktiviert, wird die Datei unter \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" als Editor Schriftart verwendet. + Wenn aktiviert, wird die Datei unter \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" als Editor Schriftart verwendet. Installiere APK... Möchtest du die Applikation öffnen? Code on the Go Gradle-Build-Service @@ -398,7 +398,7 @@ Experimentelle/Debugging Optionen für Code on the Go Debugging Protokolle ausgeben - Code on the Go-Logs in $HOME/.androidide/logs ausgeben + Code on the Go-Logs in $HOME/.cg/logs ausgeben Run the debug variant of your application to view its logs here. LogSender is disabled. You can enable it in preferences. Protokolle der IDE werden hier angezeigt. diff --git a/resources/src/main/res/values-es-rES/strings.xml b/resources/src/main/res/values-es-rES/strings.xml index 1a23a217dd..4383c6b10b 100644 --- a/resources/src/main/res/values-es-rES/strings.xml +++ b/resources/src/main/res/values-es-rES/strings.xml @@ -282,7 +282,7 @@ Opciones de formato XML Configura el formato XML Añadir fuente personalizada - Si está habilitado, el archivo en\"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" se utilizará como fuente del editor. + Si está habilitado, el archivo en\"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" se utilizará como fuente del editor. Instalando APK... ¿Quieres abrir la aplicación? Servicio de compilación de Gradle de Code on the Go @@ -399,7 +399,7 @@ Experimental/debugging options for Code on the Go Debugging Dump logs - Dump Code on the Go logs to $HOME/.androidide/logs + Dump Code on the Go logs to $HOME/.cg/logs Run the debug variant of your application to view its logs here. LogSender is disabled. You can enable it in preferences. Logs from the IDE are shown here. diff --git a/resources/src/main/res/values-fr-rFR/strings.xml b/resources/src/main/res/values-fr-rFR/strings.xml index 45fd671cc2..de94ba838e 100644 --- a/resources/src/main/res/values-fr-rFR/strings.xml +++ b/resources/src/main/res/values-fr-rFR/strings.xml @@ -283,7 +283,7 @@ Dernier projet ouvert : \n%s XML formatting options Configurer le formateur XML Use custom font - Si activé le font : \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" sera utilisé comme font d\'éditeur par défaut. + Si activé le font : \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" sera utilisé comme font d\'éditeur par défaut. Installation de l\'application... Voulez-vous ouvrir l\'application ? Gradle Build Service d\'Code on the Go @@ -400,7 +400,7 @@ Dernier projet ouvert : \n%s Options Expérimental/Débogage d\'Code on the Go Débogage Vider les logs - Dump Code on the Go logs to $HOME/.androidide/logs + Dump Code on the Go logs to $HOME/.cg/logs Run the debug variant of your application to view its logs here. LogSender is disabled. You can enable it in preferences. Logs from the IDE are shown here. diff --git a/resources/src/main/res/values-hi-rIN/strings.xml b/resources/src/main/res/values-hi-rIN/strings.xml index 36db36629e..3883ebc371 100644 --- a/resources/src/main/res/values-hi-rIN/strings.xml +++ b/resources/src/main/res/values-hi-rIN/strings.xml @@ -281,7 +281,7 @@ XML फोर्मटिंग विकल्प XML फॉर्मेटर को कॉन्फ़िगर करें | कस्टम फ़ॉन्ट का प्रयोग करें - सक्षम होने पर, \"/data/data/com.itsaky.android/files/home/.androidide/ui/font.ttf\" पर मौजूद फ़ाइल का उपयोग एडिटर फ़ॉन्ट के रूप में किया जाएगा। + सक्षम होने पर, \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" पर मौजूद फ़ाइल का उपयोग एडिटर फ़ॉन्ट के रूप में किया जाएगा। APK इंस्टॉल हो रहा है... क्या आप एप्लिकेशन खोलना चाहते हैं? Code on the Go ग्रेडल बिल्ड सर्विस @@ -398,7 +398,7 @@ Code on the Go के लिए प्रायोगिक/डिबगिंग विकल्प डिबगिंग लॉग डंप करें - Code on the Go लॉग को $HOME/.androidide/logs डायरेक्टरी में डंप करें + Code on the Go लॉग को $HOME/.cg/logs डायरेक्टरी में डंप करें अपने एप्लिकेशन के लॉग यहां देखने के लिए उसका डिबग संस्करण चलाएँ। लॉगसेंडर अक्षम है. आप इसे प्रेफरेन्सेस में सक्षम कर सकते हैं. आईडीई के लॉग यहां दिखाए जाते हैं। diff --git a/resources/src/main/res/values-in-rID/strings.xml b/resources/src/main/res/values-in-rID/strings.xml index 8387d932b6..1a4bce11a5 100644 --- a/resources/src/main/res/values-in-rID/strings.xml +++ b/resources/src/main/res/values-in-rID/strings.xml @@ -282,7 +282,7 @@ Opsi pemformatan XML Konfigurasikan pemformatan XML Gunakan custom font - Jika diaktifkan, file di \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" akan digunakan sebagai font Editor. + Jika diaktifkan, file di \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" akan digunakan sebagai font Editor. Menginstal APK... Apakah Anda ingin membuka aplikasi? Layanan Build Gradle Code on the Go @@ -399,7 +399,7 @@ Opsi eksperimental/debug untuk Code on the Go Men-debug Dump log - Dump log Code on the Go ke $HOME/.androidide/logs + Dump log Code on the Go ke $HOME/.cg/logs Jalankan varian debug aplikasi Anda untuk melihat lognya di sini. LogSender dinonaktifkan. Anda dapat mengaktifkannya di preferensi. Log dari IDE ditampilkan di sini. diff --git a/resources/src/main/res/values-pt-rBR/strings.xml b/resources/src/main/res/values-pt-rBR/strings.xml index 72bdbafb6a..a33c4e2a79 100644 --- a/resources/src/main/res/values-pt-rBR/strings.xml +++ b/resources/src/main/res/values-pt-rBR/strings.xml @@ -282,7 +282,7 @@ Opções de formatação XML Configurar o formatador de XML Usar fonte personalizada - Se ativado, o arquivo em \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" será usado como fonte do Editor. + Se ativado, o arquivo em \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" será usado como fonte do Editor. Instalando APK... Deseja abrir o aplicativo? Serviço de compilação Gradle do Code on the Go @@ -399,7 +399,7 @@ Opções experimentais/de depuração para Code on the Go Depuração Despejar registros - Despejar registros do Code on the Go para $HOME/.androidide/logs + Despejar registros do Code on the Go para $HOME/.cg/logs Execute a variante de depuração do seu aplicativo para ver os logs aqui. LogSender está desativado. Você pode ativá-lo nas configurações. Os logs da IDE são exibidos aqui. diff --git a/resources/src/main/res/values-ro-rRO/strings.xml b/resources/src/main/res/values-ro-rRO/strings.xml index 7daead3f4a..ec0f722170 100644 --- a/resources/src/main/res/values-ro-rRO/strings.xml +++ b/resources/src/main/res/values-ro-rRO/strings.xml @@ -282,7 +282,7 @@ XML opțiune de formatares Configurarea formatterului XML Folosește fontul particularizat - Dacă este activat, fișierul din \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" va fi folosit ca font în Editor. + Dacă este activat, fișierul din \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" va fi folosit ca font în Editor. Instalez APK… Doriți să deschideți aplicația? Code on the Go Gradle build service @@ -399,7 +399,7 @@ Experimental/debugging options for Code on the Go Debugging Dump logs - Dump Code on the Go logs to $HOME/.androidide/logs + Dump Code on the Go logs to $HOME/.cg/logs Run the debug variant of your application to view its logs here. LogSender is disabled. You can enable it in preferences. Logs from the IDE are shown here. diff --git a/resources/src/main/res/values-ru-rRU/strings.xml b/resources/src/main/res/values-ru-rRU/strings.xml index 80204b8c87..99b991e435 100644 --- a/resources/src/main/res/values-ru-rRU/strings.xml +++ b/resources/src/main/res/values-ru-rRU/strings.xml @@ -281,7 +281,7 @@ Настройки форматирования XML Настройте форматтер XML Использовать сторонний шрифт - Если активно, файл \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" будет использован в качестве шрифта редактора. + Если активно, файл \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" будет использован в качестве шрифта редактора. Установка APK... Хотите открыть установленное приложение? Служба сборки Code on the Go Gradle @@ -401,7 +401,7 @@ Экспериментальные/отладочные опции для Code on the Go Отладка Дамп логов - Дамп логов Code on the Go в $HOME/.androidide/logs + Дамп логов Code on the Go в $HOME/.cg/logs Запустите отладочный вариант вашего приложения, чтобы увидеть его логи здесь. LogSender отключен. Вы можете включить его в настройках. Логи IDE отображаются здесь. diff --git a/resources/src/main/res/values-tr-rTR/strings.xml b/resources/src/main/res/values-tr-rTR/strings.xml index 1b6d19adfd..5eff601cba 100644 --- a/resources/src/main/res/values-tr-rTR/strings.xml +++ b/resources/src/main/res/values-tr-rTR/strings.xml @@ -282,7 +282,7 @@ XML biçimlendirme seçenekleri XML biçimlendiriciyi yapılandır Kişisel yazı tipi kullan - Eğer etkinleştirilmişse \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" konumundaki dosya Düzenleyici yazı tipi olarak kullanılacak. + Eğer etkinleştirilmişse \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" konumundaki dosya Düzenleyici yazı tipi olarak kullanılacak. APK kuruluyor... Uygulamayı açmak ister misiniz? Code on the Go Gradle inşa servisi @@ -399,7 +399,7 @@ Code on the Go için deneysel/hata ayıklama seçenekleri Hata ayıklama Günlükleri kaydet - $HOME/.androidide/logs içine Code on the Go günlüklerini kaydet + $HOME/.cg/logs içine Code on the Go günlüklerini kaydet Uygulamanızın günlüklerini burada görüntülemek için debug varyantını çalıştırın. LogSender devre dışı. Ayarlardan etkinleştirebilirsiniz. IDE\'den günlükler burada görünür. diff --git a/resources/src/main/res/values-zh-rCN/strings.xml b/resources/src/main/res/values-zh-rCN/strings.xml index e6f84c00e2..97b8355728 100644 --- a/resources/src/main/res/values-zh-rCN/strings.xml +++ b/resources/src/main/res/values-zh-rCN/strings.xml @@ -281,7 +281,7 @@ XML 格式化选项 配置 XML 格式化程序 使用自定义字体 - 如果启用,文件“/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf”将用作编辑器字体。 + 如果启用,文件“/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf”将用作编辑器字体。 正在安装 APK … 您想打开该应用吗? Code on the Go Gradle 构建服务 @@ -398,7 +398,7 @@ Code on the Go 的实验和调试选项 调试 转储日志 - 将 Code on the Go 日志转储到 $HOME/.androidide/logs + 将 Code on the Go 日志转储到 $HOME/.cg/logs 运行应用的 debug 变体以在此处查看其日志。 LogSender 已禁用。您可以在首选项中启用它。 IDE 中的日志显示在这里。 diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index c663c0893e..3a67d9d109 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -482,7 +482,7 @@ XML formatting options Set formatting preferences for XML files. Use custom font - If enabled, the file at \"/data/data/com.itsaky.androidide/files/home/.androidide/ui/font.ttf\" will be used as Editor font. + If enabled, the file at \"/data/data/com.itsaky.androidide/files/home/.cg/ui/font.ttf\" will be used as Editor font. Installing APK… Your app is installed. Do you want to launch the app? App installed @@ -663,7 +663,7 @@ Experimental/debugging options for Code on the Go Debugging Dump logs - Dump Code on the Go logs to $HOME/.androidide/logs + Dump Code on the Go logs to $HOME/.cg/logs Run the debug variant of your application to view its logs here. LogSender is disabled. You can enable it in preferences. Logs from the IDE are shown here. diff --git a/shared/src/main/java/com/itsaky/androidide/utils/SharedEnvironment.kt b/shared/src/main/java/com/itsaky/androidide/utils/SharedEnvironment.kt index 7ab7344fec..729376f1f1 100644 --- a/shared/src/main/java/com/itsaky/androidide/utils/SharedEnvironment.kt +++ b/shared/src/main/java/com/itsaky/androidide/utils/SharedEnvironment.kt @@ -7,9 +7,14 @@ package com.itsaky.androidide.utils */ object SharedEnvironment { /** - * The name of the per-project cache directory. + * The name of the per-project cache directory and app-internal IDE data under `files/home/`. */ - const val PROJECT_CACHE_DIR_NAME = ".androidide" + const val PROJECT_CACHE_DIR_NAME = ".cg" + + /** + * Previous cache directory name (fork branding); migrated on first access. + */ + const val LEGACY_PROJECT_CACHE_DIR_NAME = ".androidide" /** * The name of the gradle sync cache directory. diff --git a/subprojects/tooling-api-model/build.gradle.kts b/subprojects/tooling-api-model/build.gradle.kts index 5a56fd2085..2c85462c59 100644 --- a/subprojects/tooling-api-model/build.gradle.kts +++ b/subprojects/tooling-api-model/build.gradle.kts @@ -34,7 +34,7 @@ dependencies { tasks.register("copyToTestDir") { from(project.layout.buildDirectory.file("libs/tooling-api-model.jar")) - into(project.rootProject.mkdir("tests/test-home/.androidide/init")) + into(project.rootProject.mkdir("tests/test-home/.cg/init")) rename { "model.jar" } outputs.upToDateWhen { false } From 7c4eac14fe7d4a37e6bb10aea0d50f22bd1e4716 Mon Sep 17 00:00:00 2001 From: Hal Eisen Date: Tue, 7 Apr 2026 18:00:52 -0700 Subject: [PATCH 2/4] Fix for CI defect --- .../itsaky/androidide/utils/Environment.java | 4 +- .../utils/LegacyIdeDataDirMigration.java | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java diff --git a/common/src/main/java/com/itsaky/androidide/utils/Environment.java b/common/src/main/java/com/itsaky/androidide/utils/Environment.java index a777115b24..dd8f43b766 100755 --- a/common/src/main/java/com/itsaky/androidide/utils/Environment.java +++ b/common/src/main/java/com/itsaky/androidide/utils/Environment.java @@ -129,7 +129,7 @@ public static String getArchitecture() { public static File getProjectCacheDir(File projectDir) { File current = new File(projectDir, ANDROIDIDE_PROJECT_CACHE_DIR); File legacy = new File(projectDir, SharedEnvironment.LEGACY_PROJECT_CACHE_DIR_NAME); - LegacyIdeDataDirKt.migrateLegacyIdeDataDirIfNeeded(legacy, current); + LegacyIdeDataDirMigration.migrateLegacyIdeDataDirIfNeeded(legacy, current); return current; } @@ -147,7 +147,7 @@ public static void init(Context context) { HOME = mkdirIfNotExists(new File(ROOT, "home")); File ideHomeCandidate = new File(HOME, SharedEnvironment.PROJECT_CACHE_DIR_NAME); File legacyIdeHome = new File(HOME, SharedEnvironment.LEGACY_PROJECT_CACHE_DIR_NAME); - LegacyIdeDataDirKt.migrateLegacyIdeDataDirIfNeeded(legacyIdeHome, ideHomeCandidate); + LegacyIdeDataDirMigration.migrateLegacyIdeDataDirIfNeeded(legacyIdeHome, ideHomeCandidate); ANDROIDIDE_HOME = mkdirIfNotExists(ideHomeCandidate); TMP_DIR = mkdirIfNotExists(new File(PREFIX, "tmp")); BIN_DIR = mkdirIfNotExists(new File(PREFIX, "bin")); diff --git a/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java b/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java new file mode 100644 index 0000000000..efd6b960a4 --- /dev/null +++ b/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java @@ -0,0 +1,52 @@ +/* + * This file is part of AndroidIDE. + * + * AndroidIDE is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AndroidIDE is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AndroidIDE. If not, see . + */ +package com.itsaky.androidide.utils; + +import java.io.File; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * One-time rename of the fork-era {@code .androidide} directory to {@link + * SharedEnvironment#PROJECT_CACHE_DIR_NAME}. + */ +public final class LegacyIdeDataDirMigration { + + private static final Logger LOG = LoggerFactory.getLogger(LegacyIdeDataDirMigration.class); + + private LegacyIdeDataDirMigration() {} + + /** + * If {@code current} does not exist but {@code legacy} does, renames {@code legacy} to {@code + * current}. If both exist, logs a warning and leaves {@code current} as the source of truth. + */ + public static void migrateLegacyIdeDataDirIfNeeded(File legacy, File current) { + if (current.exists()) { + if (legacy.exists()) { + LOG.warn( + "Both {} and {} exist; using {} only", + legacy.getAbsolutePath(), + current.getAbsolutePath(), + current.getAbsolutePath()); + } + return; + } + if (legacy.exists() && !legacy.renameTo(current)) { + LOG.warn("Failed to rename legacy IDE data dir {} to {}", legacy, current); + } + } +} From 17f795a04f40f21185a75dbb810e59b106ac3e49 Mon Sep 17 00:00:00 2001 From: Hal Eisen Date: Tue, 7 Apr 2026 18:28:11 -0700 Subject: [PATCH 3/4] Add error handling for migrating legacy .androidide/ to modern .cg/ --- .../itsaky/androidide/utils/Environment.java | 8 ++++---- .../utils/LegacyIdeDataDirMigration.java | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/com/itsaky/androidide/utils/Environment.java b/common/src/main/java/com/itsaky/androidide/utils/Environment.java index dd8f43b766..c5e0f5ef32 100755 --- a/common/src/main/java/com/itsaky/androidide/utils/Environment.java +++ b/common/src/main/java/com/itsaky/androidide/utils/Environment.java @@ -129,8 +129,7 @@ public static String getArchitecture() { public static File getProjectCacheDir(File projectDir) { File current = new File(projectDir, ANDROIDIDE_PROJECT_CACHE_DIR); File legacy = new File(projectDir, SharedEnvironment.LEGACY_PROJECT_CACHE_DIR_NAME); - LegacyIdeDataDirMigration.migrateLegacyIdeDataDirIfNeeded(legacy, current); - return current; + return LegacyIdeDataDirMigration.migrateLegacyIdeDataDirIfNeeded(legacy, current); } public static void init(Context context) { @@ -147,8 +146,9 @@ public static void init(Context context) { HOME = mkdirIfNotExists(new File(ROOT, "home")); File ideHomeCandidate = new File(HOME, SharedEnvironment.PROJECT_CACHE_DIR_NAME); File legacyIdeHome = new File(HOME, SharedEnvironment.LEGACY_PROJECT_CACHE_DIR_NAME); - LegacyIdeDataDirMigration.migrateLegacyIdeDataDirIfNeeded(legacyIdeHome, ideHomeCandidate); - ANDROIDIDE_HOME = mkdirIfNotExists(ideHomeCandidate); + File ideHomeResolved = + LegacyIdeDataDirMigration.migrateLegacyIdeDataDirIfNeeded(legacyIdeHome, ideHomeCandidate); + ANDROIDIDE_HOME = mkdirIfNotExists(ideHomeResolved); TMP_DIR = mkdirIfNotExists(new File(PREFIX, "tmp")); BIN_DIR = mkdirIfNotExists(new File(PREFIX, "bin")); OPT_DIR = mkdirIfNotExists(new File(PREFIX, "opt")); diff --git a/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java b/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java index efd6b960a4..abb52135c4 100644 --- a/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java +++ b/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java @@ -31,10 +31,13 @@ public final class LegacyIdeDataDirMigration { private LegacyIdeDataDirMigration() {} /** - * If {@code current} does not exist but {@code legacy} does, renames {@code legacy} to {@code - * current}. If both exist, logs a warning and leaves {@code current} as the source of truth. + * Resolves which IDE data directory path is in use: prefers {@code current} after a successful + * rename from {@code legacy}. If {@code current} already exists, it wins (both-existing case is + * logged). If only {@code legacy} exists and {@code legacy.renameTo(current)} fails, returns + * {@code legacy} so callers keep using the existing tree. If neither exists, returns {@code + * current} for the caller to create. */ - public static void migrateLegacyIdeDataDirIfNeeded(File legacy, File current) { + public static File migrateLegacyIdeDataDirIfNeeded(File legacy, File current) { if (current.exists()) { if (legacy.exists()) { LOG.warn( @@ -43,10 +46,15 @@ public static void migrateLegacyIdeDataDirIfNeeded(File legacy, File current) { current.getAbsolutePath(), current.getAbsolutePath()); } - return; + return current; } - if (legacy.exists() && !legacy.renameTo(current)) { + if (legacy.exists()) { + if (legacy.renameTo(current)) { + return current; + } LOG.warn("Failed to rename legacy IDE data dir {} to {}", legacy, current); + return legacy; } + return current; } } From a0afb0b3838c2e03efdbd1621ade00846b95c40b Mon Sep 17 00:00:00 2001 From: Hal Eisen Date: Wed, 8 Apr 2026 11:46:05 -0700 Subject: [PATCH 4/4] Reduce complexity of LegacyIdeDataDirMigration() --- .../utils/LegacyIdeDataDirMigration.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java b/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java index abb52135c4..4355032ccc 100644 --- a/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java +++ b/common/src/main/java/com/itsaky/androidide/utils/LegacyIdeDataDirMigration.java @@ -38,14 +38,12 @@ private LegacyIdeDataDirMigration() {} * current} for the caller to create. */ public static File migrateLegacyIdeDataDirIfNeeded(File legacy, File current) { - if (current.exists()) { - if (legacy.exists()) { - LOG.warn( - "Both {} and {} exist; using {} only", - legacy.getAbsolutePath(), - current.getAbsolutePath(), - current.getAbsolutePath()); - } + if (current.exists() && legacy.exists()) { + LOG.warn( + "Both {} and {} exist; using {} only", + legacy.getAbsolutePath(), + current.getAbsolutePath(), + current.getAbsolutePath()); return current; } if (legacy.exists()) {