Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过终端批量构建和归档iOS应用程序_Ios_Bash_Shell_Xcode4.2_.bash Profile - Fatal编程技术网

通过终端批量构建和归档iOS应用程序

通过终端批量构建和归档iOS应用程序,ios,bash,shell,xcode4.2,.bash-profile,Ios,Bash,Shell,Xcode4.2,.bash Profile,我正在尝试简化iOS应用程序发布的构建->归档->提交过程。 我们有50多个移动应用程序,它们的框架几乎相同,但艺术品和配置设置不同 我通常会在xcode 4.2中加载每个项目,然后使用xcode GUI以通常的方式构建->归档->提交,但我们现在已经开发了50多个应用程序,这个过程在我们推出更新时非常烦人 也就是说,我正试图通过使用shell函数来加速这个过程。 我做了大量的研究,发现(见Reid的答案)应该可以工作,但是归档选项不起作用,因为我遇到了以下错误: unsupported bui

我正在尝试简化iOS应用程序发布的构建->归档->提交过程。 我们有50多个移动应用程序,它们的框架几乎相同,但艺术品和配置设置不同

我通常会在xcode 4.2中加载每个项目,然后使用xcode GUI以通常的方式构建->归档->提交,但我们现在已经开发了50多个应用程序,这个过程在我们推出更新时非常烦人

也就是说,我正试图通过使用shell函数来加速这个过程。 我做了大量的研究,发现(见Reid的答案)应该可以工作,但是归档选项不起作用,因为我遇到了以下错误:

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_配置文件中,所有东西都像我预期的那样正常运行,只是我没有复制正确的“Info.plist”,我不知道从何处复制它,也不知道如何生成它。所以现在我被卡住了

Xcode将识别归档文件,但它会在组织者的“未知模式”和“未命名归档文件”下列出它们

非常感谢您为获取正确信息而提供的任何帮助。

我还欢迎关于如何改进脚本和/或以更高效的方式批量构建并归档这些iOS应用程序的建议

注意:

  • 我无法升级到Xcode 4.2之外,因为这需要(据我所知)OS X 10.7+,但我还无法获得(公司计算机)

  • 我仍然是bash/shell的新手,所以我为上面任何难看的代码/实践道歉

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


再次感谢您的帮助。

好的,我找到了一个可行的解决方案。在做了更多的搜索和大量的猜测和检查之后,我发现我仍然可以使用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

我对存档命令也有同样的问题,并且通过谷歌发现了这个问题。使用此生成命令将失败:

xcodebuild -verbose -project $ProductName.xcodeproj -target $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"
xcodebuild -verbose -project $ProductName.xcodeproj -scheme $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"
但是,使用这个build命令它会成功:

xcodebuild -verbose -project $ProductName.xcodeproj -target $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"
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

事实上,这也是我的发现。我仍然没有找到对此的解释,但我的假设是,这就是程序的设计执行方式,需要一个方案。。。但这并不能解释为什么返回的错误消息如此含糊…@mason81但是,当您混乱不堪时,最令人困惑的是,如果您只是在构建,而不是试图将该构建存档以供存储提交,那么top命令(失败)可以正常工作。哦,这确实令人困惑(而且非常有趣)。我并没有为了非归档目的而尝试过它,但只是测试了一下,你是对的,它工作得很好。。。真奇怪!