没有Phonegap Build的iOS Phonegap应用程序

Wyt*_*tze 2 android command-line-interface ios cordova

所以我问了并回答了问题[如何在没有Phonegap Build的情况下进行Phonegap 3.0] [1].现在我的应用程序已经为iOS做好了准备(我认为),现在是时候开始为该平台进行部署和调试了.

正式问题:如何将iOS平台添加到Phonegap 3.0项目中?

Wyt*_*tze 8

这个答案仍在进行中.

我取得的目标:

  • 在命令行中编译项目,然后使用xCode在设备或sim上运行

尝试失败:

  • 从命令行编译和运行(设备/ sim)

1.创作

我可以轻松添加iOS平台,如文档的iOS平台指南中所述.

基本上,如果项目已经存在,因为您首先使用Android,那么这就是您设置iOS应用程序结构的方式.

$ add platform ios
Run Code Online (Sandbox Code Playgroud)

然后你应该将文件添加到main/www文件夹中,如果你还没有从你的Android工作中获得它们.然后,这将负责以调试形式创建应用程序:

$ cordova prepare //Creates all the necessary source filed
$ cordova compile  //Creates an ipa file

//Alternatively, do both in one go with cordova build
Run Code Online (Sandbox Code Playgroud)

2.部署到设备

但是完全不清楚如何使用命令行界面将测试应用程序实际部署到设备或模拟器.

当您附加物理iOS设备时,只需从主项目文件夹中尝试这个...

$ cordova run ios
Run Code Online (Sandbox Code Playgroud)

你得到一个非常明确的答案:

[Error: An error occurred while running the ios project. Targeting a device is not supported currently.
Run Code Online (Sandbox Code Playgroud)

]

所以我已经辞职了,对于设备测试,我仍然必须使用xCode.没什么大不了的.但是,在更新文件后,xCode无法自行"刷新"项目,因此在部署之间,您必须返回命令行重新编译iOS应用程序.

奇怪的是,当我更新我的代码时,我确实需要使用"cordova run ios"(即使出现上述错误),以便更新/ platforms/ios/www文件夹.所以这是有效的,不起作用:

$ cordova run ios 
//Rebuilds the app with main /www files successfully,
//then tries to deploy to device and fails in that.

$ cordova prepare ios
//Does not rebuild with main /www files
//(Also does not deploy but that is not its intended function)
Run Code Online (Sandbox Code Playgroud)

请记住,您还需要在两次运行之间清理xCode项目.所以顺序是:

  1. 上一次运行
  2. 编辑你的代码
  3. 在控制台中,执行:cordova run ios
  4. 在xCode中,菜单栏>产品>清洁产品
  5. 在xCode中,运行

3.部署到模拟器

尽管如此,"部署到设备是不可能的"引出了一个问题"模拟器怎么样?"......

3.0命令行界面上的文档页面提到您应该输入命令

$ /path/to/my_new_project/cordova/run
Run Code Online (Sandbox Code Playgroud)

这让我很困惑.那是什么样的道路?从哪里开始运行它?这是一种提供可以在任何地方运行的命令的好方法吗?为什么强迫我为每个命令输入烦人的长项目路径?

令人困惑的是,如果您实际转到运行可执行文件所在的"platforms/ios/cordova"目录,则run命令不起作用.

诀窍是降低一个目录,即在Cordova应用程序项目的/ platforms/ios子文件夹中.在那里输入"cordova/run".然后在我的情况下,它开始建设.


4.安装"ios-sim"

但那不是结束.我随后得到一个关于"ios-sim"未安装的意外错误.

[...]
** BUILD SUCCEEDED **

Error: ios-sim was not found. Please download, build and install version 1.5 or greater from https://github.com/phonegap/ios-sim into your path. Or 'brew install ios-sim' using homebrew: http://mxcl.github.com/homebrew/
Run Code Online (Sandbox Code Playgroud)

幸运的是,项目网页上有足够的文档介绍如何安装.但是,即使将ios-sim目录添加到我的$ PATH后,当我想模拟时,我得到以下错误.

$ cordova emulate ios
[TypeError: Arguments to path.join must be strings]
Run Code Online (Sandbox Code Playgroud)

这是我目前卡住的地方.我的路径看起来完全像这样(所有在一行):

export PATH=${PATH}:/Applications/adt-bundle/
sdk/platform-tools:/Applications/adt-bundle/sdk
/tools:%JAVA_HOME%\bin%ANT_HOME%\bin:"/Users/
cool/Library/Developer/iossim"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试过使用和不使用双引号,我甚至将ios-sim目录重命名为iossim,以防连字符出现问题.没有效果.

所以现在没有模拟器.

5.安装到iOS App Store

这就是Phonegap让你真正离开森林的地步.也许是因为他们希望您使用他们的付费应用发布服务,但也因为发布iOS应用程序的过程基本上是使用xCode,iOS Developer Portal和iTunes Connect.

所以这就是:

您需要为您的应用程序提供所有正确的证书和配置文件(是的,这是一堆难以理解的虚拟文档,所有这些都需要彼此,Apple就像是苏联的应用程序商店).

您在iOS Developer Portal中请求这些证书和配置文件,将它们保存到磁盘,然后双击它们以便xCode知道您拥有它们并将它们包含在您的应用程序中.

这是xCode 4有关如何发布应用的文档页面.

最直观的一点是,为了发布您的应用,您首先必须在xCode中创建它的存档(在xCode>菜单栏>产品>存档中打开您的项目).

进行存档后,您将在"存档"选项卡下的"管理器"视图中看到它.应该有两个按钮:Validate和Distribute.验证检查并在应用程序中包含所有配置文件和证书,并检查错误的版本号等错误.

分发完成它所说的:它将应用程序与App Store相加.

恭喜!(现在等五天)