4

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

  • 从“Link Binary With Libraries”(Facebook SDK)中删除并添加一个项目
  • 添加 URL 类型(我的应用的自定义 URL 方案)
  • 在“自定义 iOS 目标属性”中添加“所需设备功能”

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

以某种方式使用mobile-config.jsor cordova-build-override

4

2 回答 2

3

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

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

  1. 我使用流星构建为我的 iOS 应用程序创建了一个基本模板(不是流星运行 ios-device,因为我不知道 Meteor 是否对生产代码进行了一些优化)。

  2. 然后,我将 /platforms/ios 下的整个 Xcode 项目复制到另一个位置,并从那时起将这个新项目用作我的“主”项目。这个项目正在丰富本机代码,例如它还包括我需要的 Cocoa Pods。

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

所以我的第一个(相当天真的)方法是

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

这种方法不起作用,因为 Meteor Xcode 项目中使用的 shell 脚本无法处理这些链接。

我的第二种方法是在文件系统级别创建符号链接。这可以正常工作,并且我可以在 Xcode 中按应有的方式构建项目。

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

拥有符号链接也意味着 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 模板作为起点之前,我也尝试过“反过来”,即我从我已经存在的 Xcode 应用程序项目开始,并尝试手动包含 Meteor 的 / Cordova 的部分。使用这种方法,我从未设法正确设置所有内容。我遇到了很多麻烦,还不得不调整很多编译器/链接器标志,甚至可以编译代码。这让我长出了很多白发。但即使在我设法编译所有内容之后,Meteor 在启动过程中仍然挂起——我从来不知道为什么。

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

于 2015-08-12T10:28:44.087 回答
0

不幸的是,plist 值(也可能是 AndroidManifest.xml)只能由插件更改:

通过 Cordova config.xml 向 iOS .plist 文件添加条目

于 2015-09-24T06:06:14.770 回答