如何告诉IOS等待钩子在Cordova结束?

如何告诉IOS等待钩子在Cordova结束?,ios,cordova,cordova-plugins,cordova-hooks,Ios,Cordova,Cordova Plugins,Cordova Hooks,我正在运行这些钩子: <hook src="hooks/before-build/controller.js" type="before_build" /> <hook src="hooks/before-build/controller.js" type="before_run" /> <hook src="hooks/after-build/controller.js" type="after_build" /> <hook src="hooks/a

我正在运行这些钩子:

<hook src="hooks/before-build/controller.js" type="before_build" />
<hook src="hooks/before-build/controller.js" type="before_run" />
<hook src="hooks/after-build/controller.js" type="after_build" />
<hook src="hooks/after-build/controller.js" type="after_run" />

它们只是简单地替换config.xml文件中的变量,以便将其分别适用于暂存或生产环境

例如,以这一行为例:

<preference name="APP_SECRET" value="ANDROID-APPCENTER-APP-SECRET" />

并替换秘密

构建完成后,它会再次使用旧值重新填充config.xml,以便下一个构建具有旧引用供下次使用

在安卓系统中,这非常棒-我为stage或prod生成了不同的config.xml。但在IOS中,我在尝试运行或构建时收到此错误:

The product name change (<name> tag) in config.xml is not supported dynamically.
To change your product name, you have to remove, then add your ios platform again.
Make sure you save your plugins beforehand using `cordova plugin save`.
    cordova plugin save
    cordova platform rm ios
    cordova platform add ios
config.xml中的产品名称更改(标记)不受动态支持。 要更改产品名称,您必须删除,然后再次添加ios平台。 确保事先使用“cordova plugin save”保存插件。 cordova插件保存 cordova平台rm ios cordova平台添加ios 我认为IOS开始构建时,不需要异步等待钩子完成。因此,它尝试在没有正确的config.xml文件的情况下进行构建,然后出现错误


如何告诉IOS等待钩子结束,并在钩子结束时使用新的config.xml开始构建?

为什么要在config.xml中包含这些变量?你不能用其他方法来存储变量吗?你在脚本里做什么。我正在尝试将config.xml参数更改为stage,而prod.config.xml参数不是动态的,因此我使用钩子重新构建它。第一阶段,我获取config.xml的副本(它具有变量占位符而不是实际值)。替换它们。构建应用程序。然后将confing.xml的旧内容(保存在temp文件中)放入config.xml并删除temp文件。我应该使用CLI构建,然后使用Xcode运行应用程序(或者也可以通过CLI运行应用程序)。因为Xcode实际上并没有构建Cordova的应用程序,所以它只是运行它们。构建应该提前完成,这就是问题的解决方法。这能解决你的问题吗?为什么要在config.xml中包含这些变量?你不能用其他方法来存储变量吗?你在脚本里做什么。我正在尝试将config.xml参数更改为stage,而prod.config.xml参数不是动态的,因此我使用钩子重新构建它。第一阶段,我获取config.xml的副本(它具有变量占位符而不是实际值)。替换它们。构建应用程序。然后将confing.xml的旧内容(保存在temp文件中)放入config.xml并删除temp文件。我应该使用CLI构建,然后使用Xcode运行应用程序(或者也可以通过CLI运行应用程序)。因为Xcode实际上并没有构建Cordova的应用程序,所以它只是运行它们。构建应该提前完成,这就是问题的解决方法。这能解决你的问题吗?