gpt4 book ai didi

iphone - 从终端 (Bash) 将应用程序内购买的 xcodeproj 转换为 pkg 文件,或者如何将 xcarchive 文件转换为 pkg 文件?

转载 作者:可可西里 更新时间:2023-11-01 05:13:34 29 4
gpt4 key购买 nike

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

我正处于脚本成功创建所有应用内购买 xcodeproj 项目然后使用此命令将它们存档

xcodebuild -scheme $nameOfProject archive

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

完成此操作后,我必须打开 Xcode 的存档部分并手动导出所有存档以创建我需要上传到 iTC 的 pkg 文件。

我可以使用任何命令从终端自动执行此操作吗?

另一个提供相同解决方案的是:如何将 xcarchive 文件转换为 pkg 文件?

最佳答案

在对“应用内购买内容”项目进行一些谷歌搜索和一些测试后,我认为您需要使用的是 productbuild 命令行工具。由于我自己只是 iOS 开发人员,所以我没有创建安装程序的经验,但我很确定应用内内容的“pkg”文件是使用此命令行工具创建的。

要找到正确的参数你可以引用 https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/OSXWorkflowGuide/DistributingApplications/DistributingApplications.html#//apple_ref/doc/uid/TP40011201-CH5-SW1

编辑:
为了测试 XCode 的功能,我创建了一个简单的项目
Project

然后我将其存档: Archive contents

然后我创建了一个简单的程序,我们称之为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--argtest1test2test3

Now, let's replace /usr/bin/productbuild with this program

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

Now we see exactly what XCode did.

The second file is the resulting file, I am not sure whether there is something more done with the file or not, but after expanding it with pkgutil, the contents seem to be the same as the ones in the pkg created from XCode.

The first file is a directory which seems to be taken directly from the xcarchive file.Let's see its contents
Temp dir contents

Edit 2:
In summary, the bash script should be something along the lines of:

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

productbuild --content "$CONTENTS_DIR" "$PKG_FILE"

关于iphone - 从终端 (Bash) 将应用程序内购买的 xcodeproj 转换为 pkg 文件,或者如何将 xcarchive 文件转换为 pkg 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688990/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com