можно ли заблокировать установку приложения Android на корневом устройстве?

#android #linux #flutter #android-studio

Вопрос:

можно ли заблокировать установку приложения Android на корневом устройстве?
Я хочу заблокировать установку приложения Android на корневом устройстве.
Как это сделать?

Ответ №1:

Я не знаю, можно ли это сделать или нет, но то, что вы можете сделать, это сделать ваше приложение непригодным для использования на корневом устройстве, что означает, что пользователь не сможет его использовать, даже если оно установлено.

для этого все, что вам нужно сделать, это определить, запущено ли ваше приложение на корневом устройстве или нет, с помощью любого из приведенных ниже методов (код для Android)

 public class RootUtil {
    public static boolean isDeviceRooted() {
        return checkRootMethod1() || checkRootMethod2() || checkRootMethod3();
    }

    private static boolean checkRootMethod1() {
        String buildTags = android.os.Build.TAGS;
        return buildTags != null amp;amp; buildTags.contains("test-keys");
    }

    private static boolean checkRootMethod2() {
        String[] paths = { "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su",
                "/system/bin/failsafe/su", "/data/local/su", "/su/bin/su"};
        for (String path : paths) {
            if (new File(path).exists()) return true;
        }
        return false;
    }

    private static boolean checkRootMethod3() {
        Process process = null;
        try {
            process = Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" });
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            if (in.readLine() != null) return true;
            return false;
        } catch (Throwable t) {
            return false;
        } finally {
            if (process != null) process.destroy();
        }
    }
}
 

и затем, если device is rooted затем navigate на » с сообщением типа «приложение не может быть запущено на корневом устройстве» с. exit button

Для Flutter

вы можете использовать пакет trust_fall из pub.dev,

 import 'package:trust_fall/trust_fall.dart';
bool isJailBroken = await TrustFall.isJailBroken;