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