将xcodeproj应用内购买转换为terminal(Bash)的pkg文件,或者如何将xcarchive文件转换为pkg文件?

我正在尝试创build一个bash脚本来自动创build应用内购买pkg文件。

我在这个脚本创build成功的所有应用程序内购买xcodeproj项目,然后使用此命令存档它们

xcodebuild -scheme $nameOfProject archive 

$ nameOfProject是一个variables,在循环中保存与应用内购买相对应的xcodeproj文件的名称。

这样做后,我必须打开Xcode的归档部分,并手动导出所有档案,以创build我需要上传到iTC的pkg文件。

是否有任何命令,我可以使用从terminal自动执行此操作?

另一件可以提供相同解决scheme的方法是:如何将xcarchive文件转换为pkg文件?

一些谷歌search和一些testing与“应用程序内购”内容项目,我认为你需要使用的是产品productbuild命令行工具。 由于我自己只是iOS开发人员,所以我没有创build安装程序的经验,但是我非常确定应用程序内容的“pkg”文件是使用此命令行工具创build的。

要find正确的参数,可以参考https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/OSXWorkflowGuide/DistributingApplications/DistributingApplications.html#//apple_ref/doc/uid/TP40011201-CH5- SW1

man

编辑:
为了testingXCode的function,我创build了一个简单的项目
项目

我将其归档: 存档内容

然后我创build了一个简单的程序,我们称之为ArgumentLogger ,代码是

 int main(int argc, const char* argv[]) { //Open a file for logging FILE* file = fopen("/Users/Sulthan/Desktop/log.txt","a+"); for (int i = 0; i < argc; i++) { //log all parameters fprintf(file, "%s\n", argv[i]); } //end fclose(file); return 0; } 

让我们举个例子 – 对于bash命令:

 ArgumentLoggger --arg test1 test2 test3 

log.txt将包含

  ArgumentLogger
 --arg
 TEST1
 TEST2
 TEST3

现在,让我们用这个程序replace/usr/bin/productbuild

 sudo mv /usr/bin/productbuild /usr/bin/productbuild_old sudo mv ArgumentLogger /usr/bin/productbuild 

然后在XCode中点击“Distribute”。 分发 并导出包裹。

现在包含log.txt

在/ usr / bin中/ productbuild
 - 内容
的/ var /文件夹/ V5 / wwrmfpqx2mx1q5sf67_6vgg00000gn / T / FDCEA38E-1EF6-490B-8C30-8B0675C56CC8-47322-00014822C462D3CD / TestContent
 /var/folders/v5/wwrmfpqx2mx1q5sf67_6vgg00000gn/T/FDCEA38E-1EF6-490B-8C30-8B0675C56CC8-47322-00014822C462D3CD/TestContent.pkg

现在我们看到XCode究竟做了什么。

第二个文件是生成的文件,我不知道是否有更多的文件做了,但用pkgutil ,内容似乎是从XCode创build的pkg的内容相同。

第一个文件是一个似乎直接从xcarchive文件中xcarchive目录。 让我们看看它的内容
临时目录内容

编辑2:
总之, bash脚本应该是以下内容:

 CONTENTS_DIR = $( find "$nameOfProject.xcarchive" -name "InAppPurchaseContent" -type d ) PKG_FILE = "$nameOfProject.pkg" productbuild --content "$CONTENTS_DIR" "$PKG_FILE"