访问 network-security-config 中的字符串资源

Mic*_*ała 15 android pinning

是否有可能使用字符串资源内部android:networkSecurityConfig在AndroidManifest.xml中定义的?

我有一个这样的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">mydomain.com</domain>
    <pin-set>
      <pin digest="SHA-256">@string/pin</pin>
      <pin digest="SHA-256">@string/pin_fallback</pin>
    </pin-set>
    <trustkit-config enforcePinning="true" disableDefaultReportUri="true">
    </trustkit-config>
  </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

但我的应用程序似乎没有检测到我在res/values/strings.xml. 不过,硬编码这些字符串效果很好。

Muh*_*man 0

如果您使用Gradle Plugin 7.0.0${}或更高版本,那么您可以像这样使用字符串插值。$ {dynamicVariable}语法使用字符串插值在 PIN 值中包含动态变量。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">mydomain.com</domain>
    <pin-set>
      <pin digest="SHA-256">@{getString(R.string.pin)}${dynamicVariable}</pin>
      <pin digest="SHA-256">@{getString(R.string.pin_fallback)}${dynamicVariable}</pin>
    </pin-set>
    <trustkit-config enforcePinning="true" disableDefaultReportUri="true">
    </trustkit-config>
  </domain-config>
</network-security-config>
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用的Gradle 插件版本低于7.0.0,则无法使用动态访问字符串资源