将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的。
或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"