Visual studio cordova 如何传递和使用Android和IOS的web api服务器地址,这将在调试、QA和Prod三种环境中有所不同?

Visual studio cordova 如何传递和使用Android和IOS的web api服务器地址,这将在调试、QA和Prod三种环境中有所不同?,visual-studio-cordova,Visual Studio Cordova,我想制作一个基于Cordova的应用程序,它将使用web API中的数据。 web API部分将在3个不同的URL上运行:example.local、example.qa和example.com 我应该如何传递和使用Android和IOS的web api服务器地址,这对于所有3种环境都是不同的调试、QA和Prod?这可以通过使用$(ConfigurationName)的预构建事件来完成。不幸的是,Cordova项目似乎不能有构建事件。 我们向解决方案中添加了一个虚拟项目,其中包含一个生成后事件,

我想制作一个基于Cordova的应用程序,它将使用web API中的数据。 web API部分将在3个不同的URL上运行:example.local、example.qa和example.com


我应该如何传递和使用Android和IOS的web api服务器地址,这对于所有3种环境都是不同的调试、QA和Prod?

这可以通过使用$(ConfigurationName)的预构建事件来完成。不幸的是,Cordova项目似乎不能有构建事件。
我们向解决方案中添加了一个虚拟项目,其中包含一个生成后事件,该事件使用$(ConfigurationName)将3个“config.js”文件中的一个复制到项目文件夹中。

然后,您可以依赖正在调试、发布或分发的配置来完成此任务。您可能需要添加自定义配置才能拥有更多的环境。

由于我不想修改原始构建脚本,因此我解决的问题与@pauloya略有不同。以下是我所做的:

  • 我在解决方案中添加了一个虚拟C#控制台项目
  • 为解决方案定义了新的构建配置(在我的例子中是Beta和QA)
  • 按如下所示设置所有项目的生成选项(确保选中虚拟项目的生成复选框):

    TestCordovaApp:Debug | Dummy:Debug TestCordovaApp:Debug | Dummy:Beta TestCordovaApp:Debug | Dummy:QA TestCordovaApp:释放|虚拟:释放 TestCordovaApp:Distribution | Dummy:Distribution
  • 将每个环境的配置文件添加到虚拟项目中

  • 手动编辑Dummy.csproj,以便在构建之后像这样执行它的魔术

    <Target Name="AfterBuild"> <!-- Environments.plist --> <Copy Condition="Exists('$(ProjectDir)configurations\ios\Environments.$(ConfigurationName).plist')" SourceFiles="$(ProjectDir)configurations\ios\Environments.$(ConfigurationName).plist" DestinationFiles="$(ProjectDir)..\TestCordovaApp\plugins\TestPlugin\src\ios\config\Environments.plist" /> <!-- TestConfig.xml --> <Copy Condition="Exists('$(ProjectDir)configurations\android\TestConfig.$(ConfigurationName).xml')" SourceFiles="$(ProjectDir)configurations\android\TestConfig.$(ConfigurationName).xml" DestinationFiles="$(ProjectDir)..\TestCordovaApp\plugins\TestPlugin\src\android\config\TestConfig.xml" /> </Target>
  • 从TestCordovaApp添加了对虚拟项目的引用(只需忽略此类型项目不支持引用类型的错误)

  • 注意:每次您想要更改生成配置时都需要重新生成,但使用CTP3,几乎每次编辑应用程序时都需要重新生成,因此这应该不是问题

    对于使用Android中的值,假设您有一个带字符串的资源文件,可以使用以下帮助器方法实现: private String GetStringResource(String resourceKey) { String packageName = cordova.getActivity().getPackageName(); int resourceId = cordova.getActivity().getResources().getIdentifier(resourceKey, "string", packageName); return cordova.getActivity().getString(resourceId); } 私有字符串GetStringResource(字符串资源密钥) { 字符串packageName=cordova.getActivity().getPackageName(); int resourceId=cordova.getActivity().getResources().getIdentifier(resourceKey,“string”,packageName); 返回cordova.getActivity().getString(resourceId); }


    对于使用iOS中的值,我使用了此链接中的代码:[

    添加自定义配置不可能。我收到一个错误:不支持请求的生成配置。只支持调试、发布和分发。除此之外,我已成功为iOS实现了以下解决方案:。我仍在为Android寻找类似的解决方案,否则我将使用您的解决方案进行“管理”ant.properties文件。我们能够使自定义配置正常工作,但需要对文件进行大量调整才能使其正常工作。我认为我们传递了错误“不支持请求的生成配置”通过编辑csproj/jsproj文件来添加自定义配置……我们的解决方案远远不够理想,因为我们仍然需要单独重建项目,重建解决方案似乎不会触发所有构建,而对于iOS,我们仍然需要将配置更改为“分发”对于cordova项目,或者它不会在mac上构建。非常混乱,但不知怎么地工作。。。 private String GetStringResource(String resourceKey) { String packageName = cordova.getActivity().getPackageName(); int resourceId = cordova.getActivity().getResources().getIdentifier(resourceKey, "string", packageName); return cordova.getActivity().getString(resourceId); }