Android 如何在并行空间中停止我的应用程序?

Android 如何在并行空间中停止我的应用程序?,android,security,Android,Security,我创建了一个应用程序。我只希望每个手机有一个应用程序,但我可以使用并行空间多账户创建应用程序克隆。所以我的问题是如何停止克隆我的应用程序。android是否有任何唯一的标识符,即使用户重置手机也不能更改?我认为没有办法阻止“并行空间”克隆你的应用程序,这与android系统有关 我使用的一个简单解决方法是检查是否安装了并行空间应用程序(ps包名称:com.lbe.Parallel.intl) 正如你可以猜到的,这是不可靠的,因为许多不同的应用程序可以用于此目的。我没有为我的案件做进一步的说明,但

我创建了一个应用程序。我只希望每个手机有一个应用程序,但我可以使用并行空间多账户创建应用程序克隆。所以我的问题是如何停止克隆我的应用程序。android是否有任何唯一的标识符,即使用户重置手机也不能更改?

我认为没有办法阻止“并行空间”克隆你的应用程序,这与android系统有关

我使用的一个简单解决方法是检查是否安装了并行空间应用程序(ps包名称:com.lbe.Parallel.intl)

正如你可以猜到的,这是不可靠的,因为许多不同的应用程序可以用于此目的。我没有为我的案件做进一步的说明,但我想到了一件事;如果您有文件写入权限,您可以创建一个全局文件,并在打开应用程序时将某些内容放在其中进行检查

知道这些应用程序如何工作的人可以提供更好的答案。如果他们在复制时更改了您的apk中的某些内容,则您可以检查这些更改或apk的哈希代码,但他们似乎在虚拟操作系统中运行您的应用程序,因此这可能不会导致解决方案


不幸的是,android上没有成功的唯一id。这是我讨厌android的地方。我检查不同的标识符,如deviceid、imei、mac地址等。。但平行空间为所有这些创造了新的价值

在我搜索了很多解决方案来停止应用程序克隆后,我想到了一个主意,那就是检查手机上应用程序数据的安装路径。
下面的代码进一步解释了这个想法:

    int APP_PACKAGE_COUNT = 2; //----> my app package name is com.test.app the number is count of dots in package name

private void checkClonner() {
    String path = this.getFilesDir().getAbsolutePath();
    int count = getDotCount(path);
    if (count > APP_PACKAGE_COUNT) {
        throw new RuntimeException("This app does not work in a cloning environment");
    }
}

private int getDotCount(String path) {

    int count = 0;
    for (int i = 0; i < path.length(); i++) {
        if (count > APP_PACKAGE_COUNT) {
            break;
        }
        if (path.charAt(i) == '.') {
            count++;
        }
    }
    return count;
}
int-APP\u-PACKAGE\u-COUNT=2;//--->我的应用程序包名为com.test.app该数字是包名中的点数
私人空支票Clonner(){
字符串路径=this.getFilesDir().getAbsolutePath();
int count=getDotCount(路径);
如果(计数>应用程序包计数){
抛出新的RuntimeException(“此应用程序在克隆环境中不工作”);
}
}
私有整型getDotCount(字符串路径){
整数计数=0;
对于(int i=0;i应用程序包计数){
打破
}
如果(路径字符(i)='。){
计数++;
}
}
返回计数;
}

    int APP_PACKAGE_COUNT = 2; //----> my app package name is com.test.app the number is count of dots in package name

private void checkClonner() {
    String path = this.getFilesDir().getAbsolutePath();
    int count = getDotCount(path);
    if (count > APP_PACKAGE_COUNT) {
        throw new RuntimeException("This app does not work in a cloning environment");
    }
}

private int getDotCount(String path) {

    int count = 0;
    for (int i = 0; i < path.length(); i++) {
        if (count > APP_PACKAGE_COUNT) {
            break;
        }
        if (path.charAt(i) == '.') {
            count++;
        }
    }
    return count;
}