Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 多APK签名-签名保护级别行为_Android_Android Permissions - Fatal编程技术网

Android 多APK签名-签名保护级别行为

Android 多APK签名-签名保护级别行为,android,android-permissions,Android,Android Permissions,假设出现以下情况: 我有两个应用程序:A1和A2 A1定义了一个签名级别的权限,比如com.example.myapp.permission A2声明A1定义的权限 我有两个签名密钥:K1和K2 A1与K1和K2均签署。 A2仅与K1签名 如果A1公开受com.example.myapp.PERMISSION权限保护的服务,A2可以访问该服务吗?这两个应用程序是否都必须有所有签名,或者只要两个应用程序之间存在匹配,签名是否有效 Android将所有签名都视为Set-2应用程序必须具有相同的签名集

假设出现以下情况:

我有两个应用程序:A1和A2

A1定义了一个签名级别的权限,比如com.example.myapp.permission

A2声明A1定义的权限

我有两个签名密钥:K1和K2

A1与K1和K2均签署。 A2仅与K1签名


如果A1公开受com.example.myapp.PERMISSION权限保护的服务,A2可以访问该服务吗?这两个应用程序是否都必须有所有签名,或者只要两个应用程序之间存在匹配,签名是否有效

Android将所有签名都视为Set-2应用程序必须具有相同的签名集才能被认为是等效的。因此,在您的示例中,A2不会被授予权限,因为它的签名集不等于A1

下面是来自

    ArraySet<Signature> set1 = new ArraySet<Signature>();
    for (Signature sig : s1) {
        set1.add(sig);
    }
    ArraySet<Signature> set2 = new ArraySet<Signature>();
    for (Signature sig : s2) {
        set2.add(sig);
    }
    // Make sure s2 contains all signatures in s1.
    if (set1.equals(set2)) {
        return PackageManager.SIGNATURE_MATCH;
    }
    return PackageManager.SIGNATURE_NO_MATCH;
}