From dcf8a5f74cf06fcf61ccf9dde7b45c4a395f9fe3 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Thu, 4 Jan 2024 10:02:12 +0530 Subject: [PATCH] fix: use Build.SUPPORTED_ABIS to check whether the device is supported --- .../activities/OnboardingActivity.kt | 4 +-- .../app/IDEBuildConfigProviderImplTest.kt | 28 ++++++++++++------- .../configuration/IDEBuildConfigProvider.kt | 3 +- .../androidide/managers/ToolsManager.java | 3 +- 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt b/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt index 232cbddae..d60b0cae7 100644 --- a/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt +++ b/app/src/main/java/com/itsaky/androidide/activities/OnboardingActivity.kt @@ -131,7 +131,7 @@ class OnboardingActivity : AppIntro2() { override fun onDonePressed(currentFragment: Fragment?) { (currentFragment as? StatisticsFragment?)?.updateStatOptInStatus() - if (!IDEBuildConfigProvider.getInstance().supportsBuildFlavor()) { + if (!IDEBuildConfigProvider.getInstance().supportsCpuAbi()) { finishAffinity() return } @@ -172,7 +172,7 @@ class OnboardingActivity : AppIntro2() { private fun checkDeviceSupported(): Boolean { val configProvider = IDEBuildConfigProvider.getInstance() - if (!configProvider.supportsBuildFlavor()) { + if (!configProvider.supportsCpuAbi()) { addSlide(OnboardingInfoFragment.newInstance( getString(string.title_unsupported_device), getString( 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 48dbff8c4..72a9abdda 100644 --- a/app/src/test/java/com/itsaky/androidide/app/IDEBuildConfigProviderImplTest.kt +++ b/app/src/test/java/com/itsaky/androidide/app/IDEBuildConfigProviderImplTest.kt @@ -30,8 +30,16 @@ import org.junit.Test */ class IDEBuildConfigProviderImplTest { - class TestBuildConfigProvider(override val cpuAbiName: String, - override val supportedAbis: Array) : IDEBuildConfigProviderImpl() + class TestBuildConfigProvider( + override val cpuAbiName: String, + val deviceArchs: Array, + ) : IDEBuildConfigProviderImpl() { + + override val deviceArch: CpuArch + get() = CpuArch.forAbi(deviceArchs[0])!! + + override fun supportsCpuAbi(): Boolean = deviceArchs.contains(cpuAbiName) + } @Test fun `test aarch64 build on aarch64-only device`() { @@ -48,7 +56,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isFalse() assertThat(isArmeabiv7aDevice()).isFalse() - assertThat(supportsBuildFlavor()).isTrue() + assertThat(supportsCpuAbi()).isTrue() assertThat(cpuArch).isEqualTo(deviceArch) } } @@ -68,7 +76,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isFalse() assertThat(isArmeabiv7aDevice()).isTrue() - assertThat(supportsBuildFlavor()).isTrue() + assertThat(supportsCpuAbi()).isTrue() assertThat(cpuArch).isEqualTo(deviceArch) } } @@ -88,7 +96,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isTrue() assertThat(isArmeabiv7aDevice()).isFalse() - assertThat(supportsBuildFlavor()).isTrue() + assertThat(supportsCpuAbi()).isTrue() assertThat(cpuArch).isEqualTo(deviceArch) } } @@ -108,7 +116,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isFalse() assertThat(isArmeabiv7aDevice()).isFalse() - assertThat(supportsBuildFlavor()).isTrue() + assertThat(supportsCpuAbi()).isTrue() assertThat(cpuArch).isNotEqualTo(deviceArch) } } @@ -128,7 +136,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isTrue() assertThat(isArmeabiv7aDevice()).isFalse() - assertThat(supportsBuildFlavor()).isTrue() + assertThat(supportsCpuAbi()).isTrue() assertThat(cpuArch).isNotEqualTo(deviceArch) } } @@ -148,7 +156,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isFalse() assertThat(isArmeabiv7aDevice()).isTrue() - assertThat(supportsBuildFlavor()).isFalse() + assertThat(supportsCpuAbi()).isFalse() assertThat(cpuArch).isNotEqualTo(deviceArch) } } @@ -168,7 +176,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isTrue() assertThat(isArmeabiv7aDevice()).isFalse() - assertThat(supportsBuildFlavor()).isFalse() + assertThat(supportsCpuAbi()).isFalse() assertThat(cpuArch).isNotEqualTo(deviceArch) } } @@ -188,7 +196,7 @@ class IDEBuildConfigProviderImplTest { assertThat(isX86_64Device()).isTrue() assertThat(isArmeabiv7aDevice()).isFalse() - assertThat(supportsBuildFlavor()).isTrue() + assertThat(supportsCpuAbi()).isTrue() assertThat(cpuArch).isNotEqualTo(deviceArch) } } diff --git a/common/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProvider.kt b/common/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProvider.kt index 0d2410b73..8b25b0bd2 100644 --- a/common/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProvider.kt +++ b/common/src/main/java/com/itsaky/androidide/app/configuration/IDEBuildConfigProvider.kt @@ -17,6 +17,7 @@ package com.itsaky.androidide.app.configuration +import android.os.Build import com.itsaky.androidide.utils.ServiceLoader /** @@ -79,7 +80,7 @@ interface IDEBuildConfigProvider { /** * @return Whether the IDE can be run on the device's CPU arch. */ - fun supportsBuildFlavor(): Boolean = supportedAbis.contains(cpuAbiName) + fun supportsCpuAbi(): Boolean = Build.SUPPORTED_ABIS.contains(cpuAbiName) 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 b0650cf30..fb0180b04 100755 --- a/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java +++ b/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java @@ -23,7 +23,6 @@ import com.blankj.utilcode.util.FileUtils; import com.blankj.utilcode.util.ResourceUtils; import com.itsaky.androidide.app.BaseApplication; import com.itsaky.androidide.app.configuration.IDEBuildConfigProvider; -import com.itsaky.androidide.tasks.TaskExecutorKt; import com.itsaky.androidide.utils.Environment; import com.itsaky.androidide.utils.ILogger; import java.io.File; @@ -46,7 +45,7 @@ public class ToolsManager { public static void init(@NonNull BaseApplication app, Runnable onFinish) { - if (!IDEBuildConfigProvider.getInstance().supportsBuildFlavor()) { + if (!IDEBuildConfigProvider.getInstance().supportsCpuAbi()) { LOG.error("Device not supported"); return; }