批生成和iOS的归档通过终端应用程式(Batch Build and Archive of iOS

2019-07-30 11:38发布

我试图简化iOS应用发布的建设 - > archive->提交过程。 我们有几乎相同的框架50移动应用,但具有不同的艺术品和配置设置。

我通常会加载每个项目在Xcode 4.2和建设 - > archive->提交与Xcode的GUI通常的方式,但是我们比起来,现在50级的应用程序和这个过程很烦人,我们推出一个更新的任何时间。

话虽这么说,我试图加快与使用shell函数这一过程。 我做了很多的研究,发现xcodebuild联编 (见里德的回答)应该工作,但是存档选项没有工作,我得到以下错误:

unsupported build action 'archive'

所以我写了以下内容:

# $1 should be a date like: 2012-07-17
# $2 should be a time like: 10.31AM
# $mybase will be the current directory at the time the function was called
# so make sure to cd into the folder containing the xcode project folders first

function xcodeArchive {
    mkdir ~/Library/Developer/Xcode/Archives/$1
    mybase=$PWD
    for x in `ls`
    do
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications
        cd $mybase/$x
        xcodebuild
        #read -p "Press [Enter] to continue"
        cd $mybase/$x
        cp $x/$x-Info.plist ~/Library/Developer/Xcode/Archives/$1/$x/Info.plist
        cp -r build/Release-iphoneos/$x.app.dSYM ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs/$x.app.dSYM
        cp -r build/Release-iphoneos/$x.app ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications/$x.app
        cd ~/Library/Developer/Xcode/Archives/$1/
        mv $x $x\ $1\ $2.xcarchive
        cd $mybase
    done
}
export -f xcodeArchive

我把这个在我的.bash_profile,一切运行正常,因为我所期望的,除了我没有复制正确“的Info.plist”,我想不出哪里它或如何产生的呢复制。 所以,现在我卡住了。

Xcode中会认识到档案,但在主办方列出了他们在“未知模式”和“无名归档”。

任何现在就来获取正确的Info.plist帮助是极大的赞赏。

我还就如何提高脚本和/或更有效的方式来批量构建+欢迎推荐存档这些iOS应用。

注意:

  • 我无法超越的Xcode 4.2升级为需要(据我所知)OS X 10.7以上版本,我现在无法获得,但(公司电脑)。

  • 我仍然非常一个bash /壳新手,所以我对任何丑陋的代码/上述做法道歉。

  • 此外,这是官方的应用程序提交,而不是临时或类似的东西。

再次感谢你的帮助。

Answer 1:

我曾与归档命令相同的问题,并通过谷歌发现了这个问题。 它会失败,此版本的命令:

xcodebuild -verbose -project $ProductName.xcodeproj -target $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"

然而,它将与此build命令成功:

xcodebuild -verbose -project $ProductName.xcodeproj -scheme $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"

唯一的区别是代替目标打造的指定方案。 如果有合理的原因,这种行为,我会喜欢听。

我在Mac OS X 10.7.5上运行的XCode 4.5.1



Answer 2:

OK我发现了一个解决方案,将工作。 做更多的搜索和大量的猜测和检查后,我发现我仍然可以使用与xcodebuild联编的“档案”选项,我只需要指定一个工作空间和方案,显然我没有做之前正确,因为它现在作品。

因此,为寻找类似的解决方案(批次档案的Xcode项目),这里是我的功能:

# $mybase will be the current directory at the time the function was called
# so make sure to cd into the folder containing the xcode project folders first

function xcodeArchive {
    mybase=$PWD
    for x in `ls`
    do
        cd $mybase/$x
        xcodebuild -workspace $x.xcodeproj/project.xcworkspace -scheme $x archive
        cd $mybase
    done
}
export -f xcodeArchive


文章来源: Batch Build and Archive of iOS apps via Terminal