如何在 Meteor Cordova 中永久更改 iOS 应用程序配置?

How can you permanently change iOS app configuration in Meteor Cordova?

每次 meteor build,我都必须打开 XCode 并执行以下操作:

如何编辑我的 Meteor 项目以自动完成这些步骤,并自动将内容添加到 AndroidManifest.xml

以某种方式使用 mobile-config.jscordova-build-override?

我很高兴看到另一个人正在尝试使用 Meteor 构建混合应用程序/扩展 Meteor Cordova iOS 应用程序,因为我面临着同样的问题。所以很高兴和大家分享我的经验和方法。 :-)

到目前为止,我最终采用了以下方法:

  1. 我使用 meteor 构建(不是 meteor 运行 ios 设备为我的 iOS 应用创建了一个基本模板,因为我不知道 Meteor 是否支持生产代码的一些优化)。

  2. 然后,我将/platforms/ios下的整个Xcode项目复制到另一个loaction,并从此将这个新项目作为我的"master"项目。该项目正在使用本机代码进行丰富,例如它还包括我需要的 Cocoa Pods。

  3. 当然,我也不想每次触发新的 Meteor 构建时都复制文件。至少,我想更新 Staging/www 文件夹,因为这种情况经常发生。

所以我的第一个(相当幼稚的)方法是

  • 删除主项目中的Staging/www文件夹
  • 将其替换为 .meteor/local/ 中 Staging/www 文件夹的相对 link(使用 Xcode 的 linking 功能)。 ../ios/项目

此方法无效,因为 Meteor Xcode 项目中使用的 shell 脚本无法处理这些 links。

我的第二种方法是在文件系统级别创建一个 symlink。这可以正常工作,我可以按预期在 Xcode 中构建项目。

我本可以对 Cordova 插件文件夹采用相同的方法,但我决定手动替换插件以便更好地控制它们,即使这意味着需要更多的努力。

使用 symlink 也意味着 Xcode 的版本管理(以及我用于所有操作的 SVN)将忽略 Staging/www 以下的所有内容,即我认为这很好,因为我已经在 Meteor 项目本身中对 webapp 代码进行了版本控制。

顺便说一句:我也在 Meteor 论坛上开始了一个关于混合移动应用程序的讨论线程,但到目前为止它并没有引起太多关注:

https://forums.meteor.com/t/building-a-hybrid-meteor-cordova-app-share-experiences/8212

也许我们可以在那里跟进 Meteor 特定的事情,让 Meteor 社区参与讨论?

编辑:我也想分享一个完全失败的方法,至少对我来说,也许我太笨了......在我使用 Meteor 的 Xcode 模板作为起点之前,我也尝试过它 "the other way round",即我从我已经存在的 Xcode 应用程序项目开始,并尝试手动包含 Meteor/Cordova 的部分。使用这种方法,我从来没有设法正确设置所有内容。我遇到了很多麻烦,还不得不调整很多编译器/linker 标志来编译代码。这让我长了很多白发。但即使在我设法编译所有内容之后,Meteor 在启动期间挂起 - 我一直不明白为什么。

我仍然面临的一个遗留问题是 Meteor 的热代码推送功能似乎在 iOS 上有一些严重的问题,这些问题也被记录为 GitHub 问题。 iOS 应用程序可能会完全损坏,需要重新安装。我尝试了 mdg:reload-on-resume 包,但这并没有像它应该的那样工作,而且让事情变得更糟。据我从 GitHub 的讨论中得知,在 Meteor 团队解决这些问题之前,最好禁用热代码推送。由于代码推送而完全破坏应用程序并不是我的用户所期望的。

不幸的是,plist 值(并且可能 AndroidManifest.xml 也是如此)只能通过插件更改:

Add entry to iOS .plist file via Cordova config.xml