fix: use Build.SUPPORTED_ABIS to check whether the device is supported

This commit is contained in:
Akash Yadav
2024-01-04 10:02:12 +05:30
parent d41ad49905
commit dcf8a5f74c
4 changed files with 23 additions and 15 deletions
@@ -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(
@@ -30,8 +30,16 @@ import org.junit.Test
*/
class IDEBuildConfigProviderImplTest {
class TestBuildConfigProvider(override val cpuAbiName: String,
override val supportedAbis: Array<String>) : IDEBuildConfigProviderImpl()
class TestBuildConfigProvider(
override val cpuAbiName: String,
val deviceArchs: Array<String>,
) : 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)
}
}
@@ -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 {
@@ -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;
}