我需要使用不同的应用ID,因为com.myapp和com.beta.myapp提供了两个配置文件。现在我每次将当前配置从Debug更改为Release时都必须在config.xml中更改widget:id,反之亦然。这可以自动化吗?我知道我可以通过实现BeforeBuild / BuildDependsOn处理程序调整.jsproj,甚至使用web.config转换。是否有更简单,最好是内置的方法来做同样的事情?
注意:自定义node.js和/或VS文件不是一个选项,因为我更喜欢修改属于项目存储库的文件,以便能够存储和分发更改以及代码库。
答案 0 :(得分:3)
问题已经解决。
首先,在res \ native \ ios \ cordova:
中创建以下文件// build.xcconfig
// The file contains general iOS settings, e.g.
CODE_SIGN_IDENTITY = <your iOS identity>
// build-debug.xcconfig
// The file contains beta specific iOS settings
#include "build.xcconfig"
BUNDLE_ID = com.your.app.beta
PROVISIONING_PROFILE = <profile GUID>
// build-release.xcconfig
// The file contains release specific iOS settings
#include "build.xcconfig"
BUNDLE_ID = com.your.app
PROVISIONING_PROFILE = <profile GUID>
有关支持的设置的完整列表,请参阅Build Settings Reference。请注意,BUNDLE_ID
是一个自定义常量,如下所述。
如果您想在解决方案资源管理器中将文件组合在一起,只需按以下步骤编辑.jsproj文件:
<Content Include="res\native\ios\cordova\build.xcconfig" />
<Content Include="res\native\ios\cordova\build-debug.xcconfig">
<DependentUpon>build.xcconfig</DependentUpon>
</Content>
<Content Include="res\native\ios\cordova\build-release.xcconfig">
<DependentUpon>build.xcconfig</DependentUpon>
</Content>
最后,按如下方式编辑config.xml:
<widget ... id="com.your.app" ios-CFBundleIdentifier="$(BUNDLE_ID)">
...
</widget>
这会将iOS捆绑包ID设置为您在目标.xcconfig中分配的任何值。
答案 1 :(得分:0)
Cordova钩子可能是实现此目的的一种方法。 Here是一篇关于Cordova如何工作的文章。您可能希望编写一个before_prepare挂钩,并在准备和编译本机平台之前更新config.xml。