我想根据调试或发布动态设置Android权限的protectionLevel,例如从build.gradle文件中,如下所示:
AndroidManifest.xml文件:

<permission
    android:name="com.somestring.MY_CUSTOM_PERMISSION"
    android:protectionLevel=BuildConfig.protectionlevel />

build.gradle文件:
android {
    buildTypes {
        release {
          buildConfigField "String" , "protectionlevel" , "signature"
        }
        debug{
          buildConfigField "String" , "protectionlevel" , "normal"
        }
    }
}

以这种方式从build.gradle设置变量在Java /其他情况下适用,但不适用于signature。我尝试了一些其他的变体,您可以在快速的Google搜索中找到它们,但是到目前为止,我无法在这种情况下使用它。

最佳答案

通常可以使用manifest placeholders:

buildTypes {
    release {
        manifestPlaceholders = [protectionLevel: "signature"]
    }
    debug{
        manifestPlaceholders = [protectionLevel: "normal"]
    }
}

然后:
<permission
    android:name="com.somestring.MY_CUSTOM_PERMISSION"
    android:protectionLevel="${protectionLevel}" />

09-10 12:38