我正在尝试创建一个bash脚本来自动创建应用内购买pkg文件。
我的目的是脚本成功创建所有应用内购买xcodeproj项目,然后使用此命令将其归档
xcodebuild -scheme $nameOfProject archive
$ nameOfProject 是一个变量,它在循环内部保存与应用内购买相对应的xcodeproj文件的名称。
执行此操作后,我必须打开Xcode的存档部分并手动导出所有存档以创建我需要上传到iTC的pkg文件。
我可以使用任何命令从终端自动执行此操作吗?
提供相同解决方案的另一件事是:如何将xcarchive文件转换为pkg文件?
答案 0 :(得分:8)
使用“应用内购买内容”项目进行了一些Google搜索和一些测试后,我认为您需要使用的是productbuild
命令行工具。由于我自己只是iOS开发人员,因此我没有创建安装程序的经验,但我非常确定使用此命令行工具创建应用程序内容的“pkg”文件。
或man
。
修改:
为了测试XCode的功能,我创建了一个简单的项目
我存档了它:
然后我创建了一个简单的程序,我们称之为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
现在,让我们用这个程序替换/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 --content /var/folders/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
扩展后,内容似乎与文件中的内容相同{X}创建了pkg
。
第一个文件是一个似乎直接从xcarchive
文件中获取的目录。
让我们看看它的内容
编辑2:
总之,bash
脚本应该是:
CONTENTS_DIR = $( find "$nameOfProject.xcarchive" -name "InAppPurchaseContent" -type d )
PKG_FILE = "$nameOfProject.pkg"
productbuild --content "$CONTENTS_DIR" "$PKG_FILE"