fetch.json 和 config.xml 之间的 Cordova 插件变量

Cordova Plugin Variables between fetch.json and config.xml

所以我正在构建一个 cordova 应用程序,它使用 Facebook 登录插件(但问题也适用于任何其他插件)。有时我想更改插件连接到的 Facebook APP_ID,所以我假设以下流程可行:

首先。使用新的 Facebook ID

更改 config.xml 中的变量

1
2
3
4
<plugin name="cordova-plugin-facebook4" spec="~1.7.1">
    <variable name="APP_ID" value="1728167004731036" />
    <variable name="APP_NAME" value="QuickShop Sandbox" />
</plugin>

第二。执行 cordova prepare 后跟 cordova build --release android

但是,以下文件保留了安装插件时在 fetch.json 中指定的旧变量。

1
2
3
4
platforms/android/android.json
platforms/android/res/values/facebookconnect.xml
platforms/android/build/build/intermediates/incremental/mergeReleaseResources/merger.xml
platforms/android/build/intermediates/res/merged/values/values.xml

fetch.json 中的变量是否会覆盖 config.xml 中的变量,我该如何做相反的事情。指示 Cordova 始终使用 config.xml

中的插件变量的最佳方法是什么


首先要解释几件事,您不必在 config.xml 中显式添加插件,因为它不是强制性的,如果需要,您可以使用 --save 选项自动添加它,而不是手动添加。例如,

cordova plugin add cordova-plugin-camera --save

此命令添加插件并自动将条目添加到 config.xml

fetch.json 也是一个跟踪已安装插件的文件,它们的来源和修订,如 npm package.json 该文件在 cordova 添加/删除插件时更新。当我们 cordova prepare 时,cordova 从 plugins/ios.json 读取插件列表(如果是 ios),从 plugins/fetch.json 获取插件信息并尝试在本地查找插件。

因此,如果要指示cordova 始终使用config.xml 中的插件变量,请按照以下步骤操作:

  • 在 config.xml 中定义插件依赖项(最好使用 --save 选项)

  • 删除插件文件夹中的平台和内容

  • 运行 cordova platform add PLATFORM_NAME 命令

这确保插件信息是 config.xml 总是被尊重