[iOS]Xcode升级到Xcode9,xcodebuild -exportArchive导出ipa文件exportOptionsPlist

2017年12月09日 iOS 暂无评论 阅读1579次

[iOS]Xcode升级到Xcode9,xcodebuild -exportArchive导出ipa文件exportOptionsPlist


之前做的打包ipa用的shell文件,好久没使用了,今天拿出来看看还好用不。
由于Xcode的版本升级,现在已经是Xcode9了,之前Xcode7下的命令还确实发生问题了。


问题:xcrun中PackageApplication不再可用

较老版本的打包ipa命令中我们经常是xcodebuild + xcrun 配合,先生成xcarchive,在导出为ipa,但现在使用xcrun 后有了这个错误:

xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH


网上说现在新版本的Xcode已经删除PackageApplication了,PackageApplication在前几个版本已被废弃,从Xcode8.3开始彻底删除了。

相应的对策:在旧版本的Xcode的/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/下能找到PackageApplication这个文件,可以复制这个文件到当前使用的Xcode相应目录下,或从网上下载该文件。然后执行命令:



sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication

苹果已经删除的东西最好还是不要继续使用了,接下来探索新的方法。

在终端中输入xcodebuild -help之后


xcodebuild-help.png

xcodebuild [-project <projectname>] [[-target <targetname>]...|-alltargets] [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings] [<buildsetting>=<value>]... [<buildaction>]...
       xcodebuild [-project <projectname>] -scheme <schemeName> [-destination <destinationspecifier>]... [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings] [<buildsetting>=<value>]... [<buildaction>]...
       xcodebuild -workspace <workspacename> -scheme <schemeName> [-destination <destinationspecifier>]... [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [-showBuildSettings] [<buildsetting>=<value>]... [<buildaction>]...
       xcodebuild -version [-sdk [<sdkfullpath>|<sdkname>] [<infoitem>] ]
       xcodebuild -list [[-project <projectname>]|[-workspace <workspacename>]] [-json]
       xcodebuild -showsdks
       xcodebuild -exportArchive -archivePath <xcarchivepath> -exportPath <destinationpath> -exportOptionsPlist <plistpath>
       xcodebuild -exportLocalizations -localizationPath <path> -project <projectname> [-exportLanguage <targetlanguage>...]
       xcodebuild -importLocalizations -localizationPath <path> -project <projectname>



发现有xcodebuild -exportArchive -archivePath <xcarchivepath> -exportPath <destinationpath> -exportOptionsPlist <plistpath>的一个命令

根据提示配置即可,值得注意的是最后一个exportOptionsPlist参数。

exportOptionsPlist没从苹果官网上找到相关资料,好在全网中有前辈已经探出一条路来,用网上提供的plist文件,出现了各种各样错误。
听说自己手动在Xcode9中Archive并且导出一次,在保存ipa的文件夹下,除ipa文件之外,还有两个plist文件,其中ExportOptions.plist就是命令行参数中需要指定的plist文件。

这里把我的plist文件放上,需要时可以直接修改里面的几个参数就能用了。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>enterprise</string>
    <key>provisioningProfiles</key>
    <dict>
        <key>net.jileniao.app【应用BundleID】</key>
        <string>net.jileniao.app_dis【描述文件名称】</string>
    </dict>
    <key>signingCertificate</key>
    <string>iPhone Distribution</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>stripSwiftSymbols</key>
    <true/>
    <key>teamID</key>
    <string>H1PWD0G6DA</string>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>


这样,最后把我的整个shell文件贴出来。



#!/bin/bash
#Author jileniao.net
SCHEMENAME='JILENIAO.NET'
DATE=`date +%Y%m%d_%H%M`
SOURCEPATH=$( cd "$( dirname $0 )" && pwd)
IPAPATH=$SOURCEPATH
DISNAME=$SCHEMENAME"_"$DATE
ARCHNAME=$DISNAME.xcarchive
IPANAME=$DISNAME
#rm -rf ./build
#构建
xcodebuild archive \
 -project JILENIAO.NET.xcodeproj \
 -scheme JILENIAO.NET \
 -configuration Release \
 -archivePath $ARCHNAME \
 clean \
 build \
 -derivedDataPath ./
if [ -e $ARCHNAME ]; then
  echo "xcodebuild archive Successful"
else
  echo "xcodebuild archive Failed"
  exit 1
fi
#生成ipa
xcodebuild -exportArchive \
 -archivePath $ARCHNAME \
 -exportPath $IPANAME \
 -exportOptionsPlist ./ExportOptions.plist
if [ -e $IPANAME ]; then
  echo "Export ipa Successful"
  open $IPAPATH
else
  echo "Export ipa Failed"
fi







分享本文至:

WRITTEN BY

avatar
本文标签:XCodexcodebuild
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

欢迎留言




用户登录

sitemap