【问题标题】:Cordova plugin variablesCordova 插件变量
【发布时间】:2021-12-15 19:22:29
【问题描述】:

如何在 iOS 和 Android 的 Cordova 插件的 Swift/Kotlin 代码中使用变量?

我的意思是在 config.xml 中定义的变量,现在位于 package.json 中,看起来像这样:

<plugin name="cordova-plugin-device" spec="^1.1.0">
    <variable name="MY_VARIABLE" value="my_variable_value" />
</plugin>

...我知道在安装自定义插件时如何设置这些,但我在文档中没有看到任何关于如何在插件中访问它们的提及。

【问题讨论】:

标签: cordova plugins cordova-ios cordova-android


【解决方案1】:

变量不能从代码中访问,变量只是在 plugin.xml 中更改值的一种方式,可用于使 SDK 版本可配置,或将值写入 Info.plist 或 AndroidManifest.xml 或strings.xml 或其他本机文件,然后您可以像在 iOS/Android 上一样从本机代码中读取这些文件。

在读取Info.plist 的示例中,您可以这样做:

NSString *myValue = [NSString stringWithFormat:@"%@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MyValue"]];

在 Info.plist 中写入

<config-file target="*-Info.plist" parent="MyValue">
   <string>$MY_VARIABLE</string>
</config-file>

strings.xml阅读

Activity activity = cordova.getActivity();
    String packageName = activity.getPackageName();
    int resId = activity.getResources().getIdentifier(“MyValue”, "string", packageName);
String myValue = activity.getString(resId);

写信给strings.xml

<config-file target="./res/values/strings.xml" parent="/resources">
    <string name="MyValue">$MY_VARIABLE</string>
</config-file>

【讨论】:

  • 谢谢,我找到了另一个似乎更直接的答案;使用首选项并从设置字典中获取值,但它似乎不在那里...stackoverflow.com/a/64559164/2199492
  • 首选项是另一回事,您将它们直接放在 config.xml 中,而不是在插件添加命令中传递它们,您可以以更简单的方式从代码中读取它们,但我不认为您可以混合使用偏好和变量。你可以试试&lt;config-file target="config.xml" parent="/*"&gt; &lt;preference name="MyValue" value="$MY_VARIABLE"/&gt; &lt;/config-file&gt; 这样的东西,但不确定它是否真的会被替换
  • config.xml 中的偏好标签在设置字典中可用,但在 plugin.xml 中没有。
  • 是的,您不能将偏好标签直接放在plugin.xml 中,但是您可以将config-file 标签放在我之前评论中的标签中,这样会将其写入结果中config.xml,但我不确定变量是否会被实际值替换。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 2016-12-24
  • 1970-01-01
相关资源
最近更新 更多