diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 3a397d7f79..6347cc8d24 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -132,10 +132,6 @@ - - - - diff --git a/app/src/arm64-v8a/assets/data/arm64-v8a/busybox b/app/src/arm64-v8a/assets/data/arm64-v8a/busybox deleted file mode 100755 index 4c933322bb..0000000000 Binary files a/app/src/arm64-v8a/assets/data/arm64-v8a/busybox and /dev/null differ diff --git a/app/src/armeabi-v7a/assets/data/armeabi-v7a/busybox b/app/src/armeabi-v7a/assets/data/armeabi-v7a/busybox deleted file mode 100755 index 56c71c4a7e..0000000000 Binary files a/app/src/armeabi-v7a/assets/data/armeabi-v7a/busybox and /dev/null differ diff --git a/app/src/main/java/com/itsaky/androidide/activities/AboutActivity.java b/app/src/main/java/com/itsaky/androidide/activities/AboutActivity.java index 787426338a..f5c1767b56 100755 --- a/app/src/main/java/com/itsaky/androidide/activities/AboutActivity.java +++ b/app/src/main/java/com/itsaky/androidide/activities/AboutActivity.java @@ -25,7 +25,7 @@ import com.google.android.gms.oss.licenses.OssLicensesMenuActivity; import com.itsaky.androidide.R; import com.itsaky.androidide.app.IDEActivity; -import com.itsaky.androidide.app.IDEBuildConfigProvider; +import com.itsaky.androidide.app.configuration.IDEBuildConfigProvider; import com.itsaky.androidide.databinding.ActivityAboutBinding; import com.itsaky.androidide.databinding.LayoutAboutItemsBinding; import java.util.ArrayList; diff --git a/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt index 39d92023c0..44c1b88efe 100755 --- a/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/MainActivity.kt @@ -33,8 +33,8 @@ import androidx.transition.doOnEnd import com.blankj.utilcode.util.SizeUtils import com.google.android.material.transition.MaterialSharedAxis import com.itsaky.androidide.activities.editor.EditorActivityKt -import com.itsaky.androidide.app.IDEBuildConfigProvider import com.itsaky.androidide.app.LimitlessIDEActivity +import com.itsaky.androidide.app.configuration.IDEBuildConfigProvider import com.itsaky.androidide.databinding.ActivityMainBinding import com.itsaky.androidide.preferences.internal.NO_OPENED_PROJECT import com.itsaky.androidide.preferences.internal.autoOpenProjects @@ -162,9 +162,7 @@ class MainActivity : LimitlessIDEActivity() { // template list -> template details // ------- OR ------- // template details -> template list - val setAxisToX = - (previous == SCREEN_TEMPLATE_LIST || previous == SCREEN_TEMPLATE_DETAILS) && - (screen == SCREEN_TEMPLATE_LIST || screen == SCREEN_TEMPLATE_DETAILS) + val setAxisToX = (previous == SCREEN_TEMPLATE_LIST || previous == SCREEN_TEMPLATE_DETAILS) && (screen == SCREEN_TEMPLATE_LIST || screen == SCREEN_TEMPLATE_DETAILS) val axis = if (setAxisToX) { MaterialSharedAxis.X @@ -212,15 +210,13 @@ class MainActivity : LimitlessIDEActivity() { builder.setTitle(string.title_warning) val view = TextView(this) view.setPaddingRelative(dp24, dp24, dp24, dp24) - view.text = HtmlCompat.fromHtml( - getString(string.msg_require_install_jdk_and_android_sdk), + view.text = HtmlCompat.fromHtml(getString(string.msg_require_install_jdk_and_android_sdk), HtmlCompat.FROM_HTML_MODE_COMPACT) view.movementMethod = LinkMovementMethod.getInstance() builder.setView(view) builder.setCancelable(false) builder.setPositiveButton(android.R.string.ok) { _, _ -> openTerminal() } - builder.setNegativeButton( - android.R.string.cancel) { _, _ -> finishAffinity() } + builder.setNegativeButton(android.R.string.cancel) { _, _ -> finishAffinity() } builder.setNeutralButton(string.btn_docs) { _, _ -> app.openDocs(); finishAffinity() } builder.show() } @@ -232,37 +228,22 @@ class MainActivity : LimitlessIDEActivity() { private fun checkDeviceSupported(): Boolean { val configProvider = IDEBuildConfigProvider.getInstance() - val supported = if ( - configProvider.isArm64v8aBuild() - && !configProvider.isArm64v8aDevice() - && configProvider.isArmeabiv7aDevice() - ) { - // IDE = 64-bit - // Device = 32-bit - // NOT SUPPORTED - DialogUtils.show64bitOn32bit(this) - false - - } else if ( - configProvider.isArmeabiv7aBuild() - && configProvider.isArm64v8aDevice() - ) { - // IDE = 32-bit - // Device = 64-bit - // SUPPORTED, but warn the user - if (!prefManager.getBoolean("ide.archConfigWarn.hasShown", false)) { - DialogUtils.show32bitOn64bit(this) - } - true - - } else configProvider.supportsBuildFlavor() - - if (!supported) { - DialogUtils.showDeviceNotSupported(this) + if (!configProvider.supportsBuildFlavor()) { + DialogUtils.showUnSupportedDevice(this, configProvider.flavorArch.abi, + configProvider.deviceArch.abi) + return false } + if (configProvider.flavorArch != configProvider.deviceArch) { + // IDE's build flavor is NOT the primary arch of the device + // warn the user + if (!prefManager.getBoolean("ide.archConfig.experimentalWarning.isShown", false)) { + DialogUtils.showExperimentalArchSupportWarning(this, configProvider.flavorArch.abi, + configProvider.deviceArch.abi) + } + } - return supported + return true } private fun openLastProject() { @@ -302,8 +283,7 @@ class MainActivity : LimitlessIDEActivity() { private fun askProjectOpenPermission(root: File) { val builder = DialogUtils.newMaterialDialogBuilder(this) builder.setTitle(string.title_confirm_open_project) - builder.setMessage( - getString(string.msg_confirm_open_project, root.absolutePath)) + builder.setMessage(getString(string.msg_confirm_open_project, root.absolutePath)) builder.setCancelable(false) builder.setPositiveButton(string.yes) { _, _ -> openProject(root) } builder.setNegativeButton(string.no, null) diff --git a/app/src/main/java/com/itsaky/androidide/app/IDEBuildConfigProviderImpl.kt b/app/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProviderImpl.kt similarity index 53% rename from app/src/main/java/com/itsaky/androidide/app/IDEBuildConfigProviderImpl.kt rename to app/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProviderImpl.kt index f24c379a9a..c8daa0c696 100644 --- a/app/src/main/java/com/itsaky/androidide/app/IDEBuildConfigProviderImpl.kt +++ b/app/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProviderImpl.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.app +package com.itsaky.androidide.app.configuration import android.os.Build import com.google.auto.service.AutoService @@ -31,39 +31,32 @@ open class IDEBuildConfigProviderImpl : IDEBuildConfigProvider { override val buildFlavor: String get() = BuildConfig.FLAVOR - override val supportedBuildFlavors: Array - get() { - val flavors = mutableListOf() - if (supportedAbis.contains(BuildConfig.FLAVOR_ARM64_V8A)) { - flavors.add(BuildConfig.FLAVOR_ARM64_V8A) - } - if (supportedAbis.contains(BuildConfig.FLAVOR_ARMEABI_V7A)) { - flavors.add(BuildConfig.FLAVOR_ARMEABI_V7A) - } + override val flavorArch: CpuArch + get() = CpuArch.forAbi(buildFlavor)!! - return flavors.toTypedArray() - } + override val deviceArch: CpuArch + get() = CpuArch.forAbi(supportedAbis[0])!! override val supportedAbis: Array get() = Build.SUPPORTED_ABIS - override fun isArm64v8aBuild(): Boolean { - return buildFlavor == BuildConfig.FLAVOR_ARM64_V8A - } - - override fun isArm64v8aDevice(): Boolean { - return Build.SUPPORTED_64_BIT_ABIS.contains(BuildConfig.FLAVOR_ARM64_V8A) - } - - override fun isArmeabiv7aDevice(): Boolean { - return Build.SUPPORTED_32_BIT_ABIS.contains(BuildConfig.FLAVOR_ARMEABI_V7A) - } - - override fun isArmeabiv7aBuild(): Boolean { - return buildFlavor == BuildConfig.FLAVOR_ARMEABI_V7A + override val supportedBuildFlavors: Array by lazy { + val flavors = mutableListOf() + if (supportedAbis.contains(BuildConfig.FLAVOR_ARM64_V8A)) { + flavors.add(BuildConfig.FLAVOR_ARM64_V8A) + } + if (supportedAbis.contains(BuildConfig.FLAVOR_X86_64)) { + flavors.add(BuildConfig.FLAVOR_X86_64) + } + if (supportedAbis.contains(BuildConfig.FLAVOR_ARMEABI_V7A)) { + flavors.add(BuildConfig.FLAVOR_ARMEABI_V7A) + } + return@lazy flavors.toTypedArray() } - override fun supportsBuildFlavor(): Boolean { - return supportedBuildFlavors.contains(buildFlavor) + companion object { + private fun Array?.checkIsPrimaryArch(arch: String): Boolean { + return this?.isNotEmpty() == true && this[0] == arch + } } } \ No newline at end of file diff --git a/app/src/main/java/com/itsaky/androidide/preferences/buildAndRun.kt b/app/src/main/java/com/itsaky/androidide/preferences/buildAndRun.kt index ee724d3168..3ffaac7282 100644 --- a/app/src/main/java/com/itsaky/androidide/preferences/buildAndRun.kt +++ b/app/src/main/java/com/itsaky/androidide/preferences/buildAndRun.kt @@ -17,7 +17,6 @@ package com.itsaky.androidide.preferences -import android.content.Context import androidx.preference.Preference import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.textfield.TextInputLayout @@ -70,11 +69,6 @@ private class GradleOptions( addPreference(GradleCommands()) addPreference(GradleDistrubution()) addPreference(GradleClearCache()) - if (IDEBuildConfigProvider.getInstance() - .isArm64v8aBuild() && VERSION.SDK_INT == VERSION_CODES.R - ) { - addPreference(TagPointersFix()) - } } } diff --git a/app/src/test/java/com/itsaky/androidide/app/IDEBuildConfigProviderImplTest.kt b/app/src/test/java/com/itsaky/androidide/app/IDEBuildConfigProviderImplTest.kt index d273c087da..3bd87b3486 100644 --- a/app/src/test/java/com/itsaky/androidide/app/IDEBuildConfigProviderImplTest.kt +++ b/app/src/test/java/com/itsaky/androidide/app/IDEBuildConfigProviderImplTest.kt @@ -19,6 +19,7 @@ package com.itsaky.androidide.app import com.google.common.truth.Truth.assertThat import com.itsaky.androidide.BuildConfig +import com.itsaky.androidide.app.configuration.IDEBuildConfigProviderImpl import org.junit.Test /** diff --git a/build-logic/ide/src/main/java/com/itsaky/androidide/plugins/conf/AndroidModuleConf.kt b/build-logic/ide/src/main/java/com/itsaky/androidide/plugins/conf/AndroidModuleConf.kt index 4ee2b8c6c6..8ec420a7d3 100644 --- a/build-logic/ide/src/main/java/com/itsaky/androidide/plugins/conf/AndroidModuleConf.kt +++ b/build-logic/ide/src/main/java/com/itsaky/androidide/plugins/conf/AndroidModuleConf.kt @@ -24,7 +24,7 @@ import org.gradle.api.artifacts.Dependency import org.gradle.api.artifacts.VersionCatalogsExtension import projectVersionCode -private val flavorsAbis = arrayOf("arm64-v8a", "armeabi-v7a") +private val flavorsAbis = arrayOf("arm64-v8a", "armeabi-v7a", "x86_64") fun Project.configureAndroidModule( coreLibDesugDep: Dependency @@ -73,7 +73,7 @@ fun Project.configureAndroidModule( defaultConfig { ndk { abiFilters.clear() - abiFilters += arrayOf("armeabi-v7a", "arm64-v8a") + abiFilters += flavorsAbis } } } diff --git a/common/src/main/java/com/itsaky/androidide/app/configuration/CpuArch.kt b/common/src/main/java/com/itsaky/androidide/app/configuration/CpuArch.kt new file mode 100644 index 0000000000..eae05db31a --- /dev/null +++ b/common/src/main/java/com/itsaky/androidide/app/configuration/CpuArch.kt @@ -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.app.configuration + +/** + * Enum for supported CPU architectures. + * + * @author Akash Yadav + */ +enum class CpuArch(val abi: String) { + + /** + * `arm64-v8a` (64-bit). + */ + AARCH64("arm64-v8a"), + + /** + * `x86_64` (64-bit). + */ + X86_64("x86_64"), + + /** + * `armeabi-v7a` flavor (32-bit). + */ + ARM("armeabi-v7a"); + + companion object { + + /** + * Get the [CpuArch] for the given ABI. + */ + @JvmStatic + fun forAbi(abi: String): CpuArch? { + return entries.firstOrNull { it.abi == abi } + } + } +} \ No newline at end of file diff --git a/common/src/main/java/com/itsaky/androidide/app/IDEBuildConfigProvider.kt b/common/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProvider.kt similarity index 67% rename from common/src/main/java/com/itsaky/androidide/app/IDEBuildConfigProvider.kt rename to common/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProvider.kt index 161c3d0415..2685648e21 100644 --- a/common/src/main/java/com/itsaky/androidide/app/IDEBuildConfigProvider.kt +++ b/common/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProvider.kt @@ -15,7 +15,7 @@ * along with AndroidIDE. If not, see . */ -package com.itsaky.androidide.app +package com.itsaky.androidide.app.configuration import com.itsaky.androidide.utils.ServiceLoader @@ -31,40 +31,60 @@ interface IDEBuildConfigProvider { */ val buildFlavor: String + /** + * Get the [CpuArch] for the build flavor. + */ + val flavorArch: CpuArch + /** * The build flavors which can be installed on the current device. */ val supportedBuildFlavors: Array + /** + * Get the primary CPU architecture of the device. + */ + val deviceArch: CpuArch + /** * The supported CPU architectures of the device. */ val supportedAbis: Array /** - * @return Whether this build is the 64-bit variant of the IDE. + * @return Whether this build is the `arm64-v8a` variant of the IDE. */ - fun isArm64v8aBuild(): Boolean + fun isArm64v8aBuild(): Boolean = flavorArch == CpuArch.AARCH64 /** * @return Whether the device supports `arm64-v8a` instructions. */ - fun isArm64v8aDevice() : Boolean + fun isArm64v8aDevice(): Boolean = deviceArch == CpuArch.AARCH64 /** * @return Whether this build is the 32-bit variant of the IDE. */ - fun isArmeabiv7aBuild(): Boolean + fun isArmeabiv7aBuild(): Boolean = flavorArch == CpuArch.ARM /** * @return Whether the device supports `armeabi-v7a` instructions. */ - fun isArmeabiv7aDevice() : Boolean + fun isArmeabiv7aDevice(): Boolean = deviceArch == CpuArch.ARM + + /** + * @return Whether this build is the `x86_64` variant of the IDE. + */ + fun isX86_64Build(): Boolean = flavorArch == CpuArch.X86_64 + + /** + * @return Whether the device supports `x86_64` instructions. + */ + fun isX86_64Device(): Boolean = deviceArch == CpuArch.X86_64 /** * @return Whether the IDE can be run on the device's CPU arch. */ - fun supportsBuildFlavor() : Boolean + fun supportsBuildFlavor(): Boolean = supportedBuildFlavors.contains(buildFlavor) companion object { diff --git a/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java b/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java index 6e6f9d21e3..91d6671a85 100755 --- a/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java +++ b/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java @@ -22,7 +22,7 @@ import com.blankj.utilcode.util.FileUtils; import com.blankj.utilcode.util.ResourceUtils; import com.itsaky.androidide.app.BaseApplication; -import com.itsaky.androidide.app.IDEBuildConfigProvider; +import com.itsaky.androidide.app.configuration.IDEBuildConfigProvider; import com.itsaky.androidide.utils.Environment; import com.itsaky.androidide.utils.ILogger; import java.io.File; @@ -53,7 +53,6 @@ public static void init(@NonNull BaseApplication app, Runnable onFinish) { CompletableFuture.runAsync( () -> { writeNoMediaFile(); - copyBusyboxIfNeeded(); extractAapt2(); extractToolingApi(); extractAndroidJar(); @@ -168,20 +167,6 @@ private static void deleteIdeenv() { } } - private static void copyBusyboxIfNeeded() { - File exec = Environment.BUSYBOX; - if (exec.exists()) { - return; - } - Environment.mkdirIfNotExits(exec.getParentFile()); - ResourceUtils.copyFileFromAssets(getArchSpecificAsset("busybox"), exec.getAbsolutePath()); - if (!exec.canExecute()) { - if (!exec.setExecutable(true)) { - LOG.error("Cannot set busybox executable permissions."); - } - } - } - @NonNull @Contract(pure = true) public static String getArchSpecificAsset(String name) { diff --git a/common/src/main/java/com/itsaky/androidide/utils/DialogUtils.kt b/common/src/main/java/com/itsaky/androidide/utils/DialogUtils.kt index 8dd111f88a..a3385f1016 100644 --- a/common/src/main/java/com/itsaky/androidide/utils/DialogUtils.kt +++ b/common/src/main/java/com/itsaky/androidide/utils/DialogUtils.kt @@ -37,30 +37,20 @@ import java.util.concurrent.atomic.AtomicInteger object DialogUtils { @JvmStatic - fun showDeviceNotSupported(context: Activity) { + fun showUnSupportedDevice(context: Activity, buildFlavor: String, deviceArch: String) { val builder = newMaterialDialogBuilder(context) - builder.setTitle(R.string.title_device_not_supported) - builder.setMessage(R.string.title_device_not_supported) + builder.setTitle(R.string.title_unsupported_device) + builder.setMessage(context.getString(R.string.msg_unsupported_device, buildFlavor, deviceArch)) builder.setCancelable(false) builder.setPositiveButton(android.R.string.ok) { _, _ -> context.finishAffinity() } builder.create().show() } @JvmStatic - fun show64bitOn32bit(context: Activity) { + fun showExperimentalArchSupportWarning(context: Activity, buildFlavor: String, deviceArch: String) { val builder = newMaterialDialogBuilder(context) - builder.setTitle(R.string.title_device_not_supported) - builder.setMessage(R.string.msg_64bit_on_32bit_device) - builder.setCancelable(false) - builder.setPositiveButton(android.R.string.ok) { _, _ -> context.finishAffinity() } - builder.create().show() - } - - @JvmStatic - fun show32bitOn64bit(context: Activity) { - val builder = newMaterialDialogBuilder(context) - builder.setTitle(R.string.title_32bit_on_64bit_device) - builder.setMessage(R.string.msg_32bit_on_64bit_device) + builder.setTitle(R.string.title_experiment_flavor) + builder.setMessage(context.getString(R.string.msg_experimental_flavor, buildFlavor, deviceArch)) builder.setCancelable(false) builder.setPositiveButton(android.R.string.ok) { dialog, _ -> dialog.dismiss() } builder.create().show() 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 fea8b1de46..484f08c63f 100755 --- a/common/src/main/java/com/itsaky/androidide/utils/Environment.java +++ b/common/src/main/java/com/itsaky/androidide/utils/Environment.java @@ -67,7 +67,6 @@ public final class Environment { public static File GRADLE_USER_HOME; public static File AAPT2; public static File JAVA; - public static File BUSYBOX; public static File SHELL; public static File LOGIN_SHELL; public static File BOOTCLASSPATH; @@ -108,12 +107,10 @@ public static void init() { } JAVA = new File(JAVA_HOME, "bin/java"); - BUSYBOX = new File(BIN_DIR, "busybox"); SHELL = new File(BIN_DIR, "bash"); LOGIN_SHELL = new File(BIN_DIR, "login"); setExecutable(JAVA); - setExecutable(BUSYBOX); setExecutable(SHELL); System.setProperty("user.home", HOME.getAbsolutePath()); diff --git a/idestats/src/main/java/com/itsaky/androidide/stats/AndroidIDEStats.kt b/idestats/src/main/java/com/itsaky/androidide/stats/AndroidIDEStats.kt index 93b27ec8c4..0c23545bd4 100644 --- a/idestats/src/main/java/com/itsaky/androidide/stats/AndroidIDEStats.kt +++ b/idestats/src/main/java/com/itsaky/androidide/stats/AndroidIDEStats.kt @@ -22,7 +22,7 @@ import android.os.Build import android.telephony.TelephonyManager import com.blankj.utilcode.util.DeviceUtils import com.itsaky.androidide.app.BaseApplication -import com.itsaky.androidide.app.IDEBuildConfigProvider +import com.itsaky.androidide.app.configuration.IDEBuildConfigProvider import com.itsaky.androidide.buildinfo.BuildInfo import java.math.BigInteger import java.security.MessageDigest diff --git a/resources/src/main/res/values-ar/strings.xml b/resources/src/main/res/values-ar/strings.xml index 15db892cf1..c7d7c07a9a 100644 --- a/resources/src/main/res/values-ar/strings.xml +++ b/resources/src/main/res/values-ar/strings.xml @@ -44,8 +44,7 @@ الرجاء اختيار مجلد واحد فقط رجاءا انتظر لحظة… - الجهاز غير مدعوم - لسوء الحظ، جهازك غير مدعوم في الوقت الراهن. نحن آسفون على الإزعاج.\n\nوحدة المعالجة المركزية المدعومة: aarch64 و Armeabi-v7a + الجهاز غير مدعوم بناء مخرجات البناء مهام Lint @@ -527,9 +526,7 @@ Cannot run app. Unable to determine package name. Cannot run application. No application modules found in project. Launch app - You are using 64-bit variant of AndroidIDE on a 32-bit-only device. This configuration is not supported. Please install the 32-bit variant of AndroidIDE. - Configuration Warning - You are using 32-bit variant of AndroidIDE on a 64-bit device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. + Configuration Warning Pin line numbers Whether the editor should pin line number panel when scrolled horizontally. Blue Wave diff --git a/resources/src/main/res/values-bn/strings.xml b/resources/src/main/res/values-bn/strings.xml index 7540a68d93..f07c797f3d 100755 --- a/resources/src/main/res/values-bn/strings.xml +++ b/resources/src/main/res/values-bn/strings.xml @@ -44,8 +44,7 @@ অনুগ্রহ করে শুধুমাত্র একটি ডিরেক্টরি নির্বাচন করুন অনুগ্রহ করে কিছুক্ষণ অপেক্ষা করুন… - ডিভাইস সমর্থিত নয় - দুর্ভাগ্যবশত, আপনার ডিভাইসটি এই মুহূর্তে সমর্থিত নয়৷ অসুবিধার জন্য আমরা দুঃখিত৷\n\nসমর্থিত CPU ABIs: aarch64 এবং armeabi-v7a + ডিভাইস সমর্থিত নয় বিল্ড বিল্ড আউটপুট লিন্ট প্রক্রিয়াগুলি @@ -528,9 +527,7 @@ Cannot run app. Unable to determine package name. Cannot run application. No application modules found in project. Launch app - You are using 64-bit variant of AndroidIDE on a 32-bit-only device. This configuration is not supported. Please install the 32-bit variant of AndroidIDE. - Configuration Warning - You are using 32-bit variant of AndroidIDE on a 64-bit device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. + Configuration Warning Pin line numbers Whether the editor should pin line number panel when scrolled horizontally. Blue Wave diff --git a/resources/src/main/res/values-de/strings.xml b/resources/src/main/res/values-de/strings.xml index 950ef6cf24..49404d152b 100644 --- a/resources/src/main/res/values-de/strings.xml +++ b/resources/src/main/res/values-de/strings.xml @@ -44,8 +44,7 @@ Bitte wählen Sie nur ein Verzeichnis aus Bitte warten Sie einen Moment … - Gerät nicht unterstützt - Leider wird Ihr Gerät derzeit nicht unterstützt. Wir entschuldigen uns für die Unannehmlichkeiten.\n\nUnterstützte CPU-ABIs: aarch64 und armeabi-v7a + Gerät nicht unterstützt Bauen Build-Ausgabe Lint-Aufgaben @@ -527,9 +526,7 @@ Cannot run app. Unable to determine package name. Cannot run application. No application modules found in project. Launch app - You are using 64-bit variant of AndroidIDE on a 32-bit-only device. This configuration is not supported. Please install the 32-bit variant of AndroidIDE. - Configuration Warning - You are using 32-bit variant of AndroidIDE on a 64-bit device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. + Configuration Warning Pin line numbers Whether the editor should pin line number panel when scrolled horizontally. Blue Wave diff --git a/resources/src/main/res/values-es/strings.xml b/resources/src/main/res/values-es/strings.xml index 815653a6e7..fa534c73cf 100644 --- a/resources/src/main/res/values-es/strings.xml +++ b/resources/src/main/res/values-es/strings.xml @@ -44,8 +44,7 @@ Por favor, elija un solo directorio Por favor, espere un momento… - Dispositivo no compatible - Desafortunadamente, su dispositivo no es compatible en este momento. Lamentamos las molestias. \n\nABI de CPU compatibles: aarch64 y armeabi-v7a + Dispositivo no compatible Compilar Salida de Compilación Lint tasks @@ -527,9 +526,7 @@ Cannot run app. Unable to determine package name. Cannot run application. No application modules found in project. Launch app - You are using 64-bit variant of AndroidIDE on a 32-bit-only device. This configuration is not supported. Please install the 32-bit variant of AndroidIDE. - Configuration Warning - You are using 32-bit variant of AndroidIDE on a 64-bit device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. + Configuration Warning Pin line numbers Whether the editor should pin line number panel when scrolled horizontally. Blue Wave diff --git a/resources/src/main/res/values-fr/strings.xml b/resources/src/main/res/values-fr/strings.xml index 9e20904103..f390e466f6 100644 --- a/resources/src/main/res/values-fr/strings.xml +++ b/resources/src/main/res/values-fr/strings.xml @@ -44,8 +44,7 @@ Veuillez choisir un seul dossier Veuillez patientez un moment… - Appareil non compatible - Malheureusement, votre appareil n\'est pas supporté pour le moment, nous sommes désolés pour le problème occasionné.\n\nCPU ABIs supportés: aarch64 et armeabi-v7a + Appareil non compatible Compiler Console Lint tasks @@ -528,9 +527,7 @@ Dernier projet ouvert : \n%s Cannot run app. Unable to determine package name. Cannot run application. No application modules found in project. Launch app - You are using 64-bit variant of AndroidIDE on a 32-bit-only device. This configuration is not supported. Please install the 32-bit variant of AndroidIDE. - Configuration Warning - You are using 32-bit variant of AndroidIDE on a 64-bit device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. + Configuration Warning Pin line numbers Whether the editor should pin line number panel when scrolled horizontally. Blue Wave diff --git a/resources/src/main/res/values-hi/strings.xml b/resources/src/main/res/values-hi/strings.xml index 04bad5ae0f..961ac89054 100644 --- a/resources/src/main/res/values-hi/strings.xml +++ b/resources/src/main/res/values-hi/strings.xml @@ -44,8 +44,7 @@ कृपया केवल एक डायरेक्टरी चुनें कृपया कुछ क्षण प्रतीक्षा करें… - डिवाइस समर्थित नहीं है - दुर्भाग्य से, आपका डिवाइस इस समय समर्थित नहीं है। असुविधा के लिए हमें खेद है.\n\nसमर्थित CPU ABIs: aarch64 और armeabi-v7a + डिवाइस समर्थित नहीं है बिल्ड बिल्ड आउटपुट लिंट टास्क्स @@ -527,9 +526,7 @@ ऐप नहीं चला सकते. पैकेज का नाम निर्धारित करने में असमर्थ. एप्लिकेशन नहीं चला सकते. प्रोजेक्ट में कोई एप्लिकेशन मॉड्यूल नहीं मिला. ऐप को लांच करें - आप केवल 32-बिट डिवाइस पर AndroidIDE के 64-बिट संस्करण का उपयोग कर रहे हैं। यह कॉन्फ़िगरेशन समर्थित नहीं है. कृपया AndroidIDE का 32-बिट संस्करण इंस्टॉल करें। - कॉन्फ़िगरेशन चेतावनी - आप 64-बिट डिवाइस पर AndroidIDE के 32-बिट संस्करण का उपयोग कर रहे हैं। यह कॉन्फ़िगरेशन काम कर सकता है, लेकिन इसके परिणामस्वरूप प्रदर्शन में कमी आएगी और संभावित सुरक्षा कमजोरियाँ होंगी। कृपया जब भी संभव हो इस कॉन्फ़िगरेशन का उपयोग करने से बचें। + कॉन्फ़िगरेशन चेतावनी पिन लाइन नंबर क्या एडिटर को क्षैतिज रूप से स्क्रॉल करने पर लाइन नंबर पैनल को पिन करना चाहिए? ब्लू वेव diff --git a/resources/src/main/res/values-id/strings.xml b/resources/src/main/res/values-id/strings.xml index f1bb3a7ddb..005bef67a6 100644 --- a/resources/src/main/res/values-id/strings.xml +++ b/resources/src/main/res/values-id/strings.xml @@ -42,8 +42,7 @@ Mohon untuk hanya memilih satu direktori Mohon tunggu sebentar … - Perangkat tidak didukung - Sayang sekali, perangkat anda tidak didukung saat ini. Kami mohon maaf atas ketidaknyamanannya.\n\nCPU ABI yang didukung: aarch64 dan armeabi-v7a + Perangkat tidak didukung Build Hasil Build Lint tasks diff --git a/resources/src/main/res/values-in/strings.xml b/resources/src/main/res/values-in/strings.xml index fbf9f5dd55..0e53352f7e 100644 --- a/resources/src/main/res/values-in/strings.xml +++ b/resources/src/main/res/values-in/strings.xml @@ -44,8 +44,7 @@ Mohon untuk hanya memilih satu direktori Mohon tunggu sebentar … - Perangkat tidak didukung - Sayang sekali, perangkat anda tidak didukung saat ini. Kami mohon maaf atas ketidaknyamanannya.\n\nCPU ABI yang didukung: aarch64 dan armeabi-v7a + Perangkat tidak didukung Build Hasil Build Lint tasks @@ -527,9 +526,7 @@ Tidak dapat menjalankan aplikasi. Tidak dapat menentukan nama paket. Tidak dapat menjalankan aplikasi. Tidak ada modul aplikasi yang ditemukan di proyek. Luncurkan aplikasi - Anda menggunakan AndroidIDE varian 64-bit pada perangkat 32-bit saja. Konfigurasi ini tidak didukung. Silakan instal AndroidIDE varian 32-bit. - Peringatan Konfigurasi - Anda menggunakan AndroidIDE varian 32-bit pada perangkat 64-bit. Konfigurasi ini mungkin berfungsi, namun akan mengakibatkan penurunan kinerja dan kemungkinan kerentanan keamanan. Harap hindari penggunaan konfigurasi ini bila memungkinkan. + Peringatan Konfigurasi Sematkan nomor baris Apakah editor harus menyematkan panel nomor baris saat digulir secara horizontal. Blue Wave diff --git a/resources/src/main/res/values-pt/strings.xml b/resources/src/main/res/values-pt/strings.xml index c504af8d81..cf47dcba27 100644 --- a/resources/src/main/res/values-pt/strings.xml +++ b/resources/src/main/res/values-pt/strings.xml @@ -44,8 +44,7 @@ Por favor, escolha apenas um diretório Por favor aguarde um momento … - Dispositivo não suportado - Infelizmente, seu dispositivo não é compatível no momento. Lamentamos o inconveniente.\n\nABIs de CPU compatíveis: aarch64 e armeabi-v7a + Dispositivo não suportado Compilar Saída de compilação Tarefas do Lint @@ -527,9 +526,7 @@ Não foi possível executar o aplicativo. Não foi possível determinar o nome do pacote. Não é possível executar a aplicação. Nenhum módulo de aplicativo encontrado no projeto. Iniciar aplicativo - Você está usando a variante 64 bits do AndroidIDE em um dispositivo de somente 32 bits. Esta configuração não é suportada. Por favor, instale a variante 32 bits do AndroidIDE. - Aviso de configuração - Você está usando uma variante de 32 bits do AndroidIDE em um dispositivo de 64 bits. Esta configuração pode funcionar, mas resultará em desempenho reduzido e possíveis vulnerabilidades de segurança. Por favor, evite usar essa configuração sempre que possível. + Aviso de configuração Fixar linha de números Se o editor deve fixar o painel de linha de números quando rolado horizontalmente. Onda Azul diff --git a/resources/src/main/res/values-ro/strings.xml b/resources/src/main/res/values-ro/strings.xml index 60d17f9416..b477bcfb7b 100644 --- a/resources/src/main/res/values-ro/strings.xml +++ b/resources/src/main/res/values-ro/strings.xml @@ -44,8 +44,7 @@ Vă rugăm să alegeți un singur director Te rog asteapta un moment … - Dispozitiv neacceptat - Din păcate, dispozitivul dvs. nu este acceptat momentan. Ne pare rău pentru inconvenient.\n\nABI-uri pentru procesoare acceptate: aarch64 și armeabi-v7a + Dispozitiv neacceptat Compilează Log Ieșire Lint sarcini @@ -527,9 +526,7 @@ Cannot run app. Unable to determine package name. Cannot run application. No application modules found in project. Launch app - You are using 64-bit variant of AndroidIDE on a 32-bit-only device. This configuration is not supported. Please install the 32-bit variant of AndroidIDE. - Configuration Warning - You are using 32-bit variant of AndroidIDE on a 64-bit device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. + Configuration Warning Pin line numbers Whether the editor should pin line number panel when scrolled horizontally. Blue Wave diff --git a/resources/src/main/res/values-ru/strings.xml b/resources/src/main/res/values-ru/strings.xml index 1a7bde3682..0bc071f407 100644 --- a/resources/src/main/res/values-ru/strings.xml +++ b/resources/src/main/res/values-ru/strings.xml @@ -44,8 +44,7 @@ Пожалуйста, выберите только одну директорию Пожалуйста, подождите немного… - Устройство не поддерживается - К сожалению, на данный момент ваше устройство не поддерживается. Приносим свои извинения.\n\nПоддерживаемые ABI: aarch64 и armeabi-v7a + Устройство не поддерживается Сборка Результат сборки Сценарии Lint @@ -527,9 +526,7 @@ Невозможно запустить приложение. Не удалось определить имя пакета. Невозможно запустить приложение. В проекте не найдены модули приложения. Запустить приложение - Вы используете 64-битный вариант AndroidIDE на 32-битном устройстве. Эта конфигурация не поддерживается. Пожалуйста, установите 32-битный вариант AndroidIDE. - Предупреждение о конфигурации - Вы используете 32-битный вариант AndroidIDE на 64-битном устройстве. Такая конфигурация может работать, но это приведёт к снижению производительности и возможным уязвимостям в системе безопасности. По возможности избегайте использования данной конфигурации. + Предупреждение о конфигурации Закрепить номера строк Оставлять панель с номерами строк видимой при горизонтальной прокрутке редактора. Синяя волна diff --git a/resources/src/main/res/values-tr/strings.xml b/resources/src/main/res/values-tr/strings.xml index dcec49f70f..c82ae2ccab 100644 --- a/resources/src/main/res/values-tr/strings.xml +++ b/resources/src/main/res/values-tr/strings.xml @@ -44,8 +44,7 @@ Lütfen sadece 1 dizin seç 1 dakika bekleyin… - Cihaz desteklemiyor - Üzgünüz ki cihazınız şu an desteklenmiyor. Rahatsızlık için üzgünüz.\n\nDesteklenen CPU\'lar: aarch64 ve armeabi-v7a + Cihaz desteklemiyor İnşa et Yapım İşi Çıktısı Lintleme @@ -527,9 +526,7 @@ Uygulama çalıştırılamıyor. Paket adı tanınamadı. Uygulama çalıştırılamıyor. Projede hiçbir uygulama modülü bulunamadı. Uygulamayı aç - Yalnızca 32 bit bir cihazda AndroidIDE\'nin 64 bit varyantını kullanıyorsunuz. Bu yapılandırma desteklenmemektedir. Lütfen AndroidIDE\'nin 32 bit sürümünü yükleyin. - Yapılandırma Uyarısı - 64-bit bir cihazda AndroidIDE\'nin 32-bit varyantını kullanıyorsunuz. Bu yapılandırma işe yarayabilir, ancak düşük performansa ve olası güvenlik açıklarına neden olacaktır. Lütfen mümkün olduğunca bu yapılandırmayı kullanmaktan kaçının. + Yapılandırma Uyarısı Pin hat numaraları Düzenleyicinin yatay olarak kaydırıldığında satır numarası panelini sabitleyip sabitlemeyeceği. Mavi Dalga diff --git a/resources/src/main/res/values-zh/strings.xml b/resources/src/main/res/values-zh/strings.xml index 9c9e81cf43..d730fe460d 100644 --- a/resources/src/main/res/values-zh/strings.xml +++ b/resources/src/main/res/values-zh/strings.xml @@ -44,8 +44,7 @@ 请仅选择一个目录 请稍等片刻… - 设备不受支持 - 很遗憾,目前不支持您的设备。对于给您带来的不便,我们深表歉意。\n\n支持的 CPU 架构:aarch64 和 armeabi-v7a + 设备不受支持 构建 构建输出 Lint 任务 @@ -527,9 +526,7 @@ 无法确定软件包名称,不能运行应用。 项目中未找到应用模块,无法运行应用。 启动应用 - 您正在仅 32 位的设备上使用 AndroidIDE 的 64 位变体,不支持此配置,请安装 AndroidIDE 的 32 位变体。 - 配置警告 - 您正在 64 位设备上使用 AndroidIDE 的 32 位变体,此配置可能有效,但会使性能降低并可能导致安全漏洞,请尽可能避免使用此配置。 + 配置警告 固定行号 编辑器是否应在水平滚动时固定行号栏。 蓝色波浪 diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index 475b5fa897..be7853d3e9 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -52,8 +52,8 @@ Please wait for a moment … - Device Not Supported - Unfortunately, your device is not supported at the moment. We are sorry for the inconvenience.\n\nSupported CPU ABIs: aarch64 and armeabi-v7a + Device Not Supported + You are using %1$s variant of AndroidIDE on a %2$s-only device. This configuration is not supported. Please install the %2$s variant of AndroidIDE. Build Build output @@ -610,9 +610,8 @@ Cannot run app. Unable to determine package name. Cannot run application. No application modules found in project. Launch app - You are using 64-bit variant of AndroidIDE on a 32-bit-only device. This configuration is not supported. Please install the 32-bit variant of AndroidIDE. - Configuration Warning - You are using 32-bit variant of AndroidIDE on a 64-bit device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. + Experimental + You are using %1$s variant of AndroidIDE on a %2$s device. This configuration may work, but it\'ll result in reduced performance and possible security vulnerabilities. Please avoid using this configuration whenever possible. Pin line numbers Whether the editor should pin line number panel when scrolled horizontally. Blue Wave diff --git a/termux/termux-app/src/main/cpp/bootstrap-aarch64.zip b/termux/termux-app/src/main/cpp/bootstrap-aarch64.zip index 0e78e1343c..cb20d2094d 100644 Binary files a/termux/termux-app/src/main/cpp/bootstrap-aarch64.zip and b/termux/termux-app/src/main/cpp/bootstrap-aarch64.zip differ diff --git a/termux/termux-app/src/main/cpp/bootstrap-arm.zip b/termux/termux-app/src/main/cpp/bootstrap-arm.zip index 4b9d3f73da..6e212c9b40 100644 Binary files a/termux/termux-app/src/main/cpp/bootstrap-arm.zip and b/termux/termux-app/src/main/cpp/bootstrap-arm.zip differ diff --git a/app/src/x86_64/assets/data/x86_64/bootstrap.zip b/termux/termux-app/src/main/cpp/bootstrap-x86_64.zip similarity index 99% rename from app/src/x86_64/assets/data/x86_64/bootstrap.zip rename to termux/termux-app/src/main/cpp/bootstrap-x86_64.zip index 35d4534113..44e2c9de5c 100644 Binary files a/app/src/x86_64/assets/data/x86_64/bootstrap.zip and b/termux/termux-app/src/main/cpp/bootstrap-x86_64.zip differ diff --git a/termux/termux-app/src/main/cpp/termux-bootstrap-zip.S b/termux/termux-app/src/main/cpp/termux-bootstrap-zip.S index f7c62b73c3..2be7ee539f 100644 --- a/termux/termux-app/src/main/cpp/termux-bootstrap-zip.S +++ b/termux/termux-app/src/main/cpp/termux-bootstrap-zip.S @@ -6,6 +6,8 @@ .incbin "bootstrap-aarch64.zip" #elif defined __arm__ .incbin "bootstrap-arm.zip" + #elif defined __x86_64__ + .incbin "bootstrap-x86_64.zip" #else # error Unsupported arch #endif