命令行创建的ipa小于xcode6创建的ipa,为什么?

时间:2015-07-09 05:48:34

标签: xcode command-line

命令行脚本:

xcodebuild联编

  xcodebuild -verbose ARCHS="armv7 arm64" VALID_ARCHS="armv7 armv7s arm64" ONLY_ACTIVE_ARCH=NO DEPLOYMENT_POSTPROCESSING=YES \
    -configuration Release PROVISIONING_PROFILE="${profilename}" CODE_SIGN_IDENTITY="${codesign}" \
     clean build OBJROOT=${distDir}/Obj.root SYMROOT=${distDir}/Sym.root

# ipa
appname=$(basename ${distDir}/Sym.root/Release-iphoneos/*.app*)
target_name=$(echo $appname | awk -F. '{print $1}')
mkdir -p $project_path/package/Products
xcrun -sdk iphoneos PackageApplication -v "${distDir}/Sym.root/Release-iphoneos/${target_name}.app" -o "$project_path/package/Products/${ipaName}" --embed "${profile}"

结果是:命令行的ipa比xcode小8M,为什么?

1 个答案:

答案 0 :(得分:0)

可悲的是,从命令行生成的ipa文件与Xcode应用程序生成的文件不同。

正如您已经指出的那样,命令行1有一些缺少的项目。

除了SwiftSupport之外,如果你的应用程序是用Swift编写的,那么会有一个WatchKitSupport文件夹,其中包含由Xcode应用程序生成的ipa中的一些库,但不是命令行一个。同样,如果您的应用包含Watch App,则会丢失xcodebuild个文件夹。

在将ipa上传到iTunes Connect时,其中一些缺失的项目会出现问题。您将找到关于这些问题的大量帖子以及正在采用的变通方法 - 但这一切都归结为此问题的命令行构建缺少应用程序分发所需的所有内容。

幸运的是,Xcode 7中的新版{{1}}可以解决大多数这些问题,但尚未记录。如果您有兴趣,请点击此处some details