在命令行打包的过程中,出现如下的错误:
“error: Specified application doesn’t exist or isn’t a bundle directory : ‘build/Products/Release-iphoneos/xxx.app”
这样的error。
很明显这个原因是因为在项目目录下的build文件下找不到相应的.app文件。
但是当时还是有点摸不着头脑的。因为两边的代码一样,打包脚本都是一样的,而且因为用的是cocoapod做的第三方托管,所以相对来说工程文件的差异我当时觉得也是没有的。但是不得不承认问题是出在工程文件上。
之后用
xcodebuild -showBuildSettings
分别查看了下当前项目下的build setting的配置。
发现BUILD_DIR和 BUILD_ROOT
这两项在两台电脑是不一样的:
一个是在项目下
另一个是在 /Users/xxx/Library/Developer/Xcode/DerivedData下。
当时就郁闷了,不知道什么时候设置了这个路径。看了关于BuildSetting的设置之后发现,在xcode->preference->locations里面有个advanced的设置build location 里面的说明也很明了,选择自定义custom 里面的 “relative to workspace”就可以了。其中下面还可以自定义文件路径。具体如下图所示:
看了图片之后其实已经是一目了然了。当选择Relative to Derived Data的时候,打包的build文件会在xcode应用的derivedData下,而选择Relative to Workspace的时候build的文件是在项目目录下的build下。
而之前我所使用的打包脚本,所取的文件地址就是项目目录下的。看完之后才恍然大悟,但是我现在还是没有想起来当时是什么时候修改的这个参数。这个东西平常的时候也不会去关注。
那么既然说到了这个打包时候的build文件,就顺带介绍一下build文件夹下到底有哪些东西。
一般情况下build下面主要的是下面两个文件夹
Intermediates ————主要是编译中产生的一些文件
Products ————编译最终产品的文件(如果是debug下的编译 那么是Debug-xxx,相对的如果是release下的是Release-xxx)。
关于xcode的buildSetting的东西还有很多。大家可以进到项目文件下 用 xcodebuild -showBuildSettings自己去看看