Xcode";“建立和归档”;从命令行
Xcode 3.2在Build菜单下提供了一个非常棒的新功能,“Build and Archive”,它生成一个适合临时分发的.ipa文件。您还可以打开组织者,转到“存档的应用程序”和“将应用程序提交到iTunesConnect” 有没有办法从命令行使用“构建和归档”(作为构建脚本的一部分)?我假设Xcode";“建立和归档”;从命令行,xcode,command-line,build,Xcode,Command Line,Build,Xcode 3.2在Build菜单下提供了一个非常棒的新功能,“Build and Archive”,它生成一个适合临时分发的.ipa文件。您还可以打开组织者,转到“存档的应用程序”和“将应用程序提交到iTunesConnect” 有没有办法从命令行使用“构建和归档”(作为构建脚本的一部分)?我假设xcodebuild会以某种方式参与进来,但是man页面似乎没有对此做任何说明 更新Michael Grinich要求澄清;下面是命令行构建所不能做的事情,这些功能只有在“构建并存档”之后才能使用Xc
xcodebuild
会以某种方式参与进来,但是man
页面似乎没有对此做任何说明
更新Michael Grinich要求澄清;下面是命令行构建所不能做的事情,这些功能只有在“构建并存档”之后才能使用Xcode的Organizer
我希望有人来证明我错了:这两个功能在Xcode GUI中都非常有效,无法从命令行复制。转到项目根所在的文件夹,然后:
xcodebuild -project projectname -activetarget -activeconfiguration archive
转到项目根目录所在的文件夹,然后:
xcodebuild -project projectname -activetarget -activeconfiguration archive
我一直在使用自己的构建脚本来生成临时分发的ipa包
die() {
echo "$*" >&2
exit 1
}
appname='AppName'
config='Ad Hoc Distribution'
sdk='iphoneos3.1.3'
project_dir=$(pwd)
echo using configuration $config
echo updating version number
agvtool bump -all
fullversion="$(agvtool mvers -terse1)($(agvtool vers -terse))"
echo building version $fullversion
xcodebuild -activetarget -configuration "$config" -sdk $sdk build || die "build failed"
echo making ipa...
# packaging
cd build/"$config"-iphoneos || die "no such directory"
rm -rf Payload
rm -f "$appname".*.ipa
mkdir Payload
cp -Rp "$appname.app" Payload/
if [ -f "$project_dir"/iTunesArtwork ] ; then
cp -f "$project_dir"/iTunesArtwork Payload/iTunesArtwork
fi
ipaname="$appname.$fullversion.$(date -u +%Y%m%d%H%M%S).ipa"
zip -r $ipaname Payload
echo finished making $ipaname
脚本还会增加版本号。如果不需要,您可以删除该部分。希望能有所帮助。我一直在使用自己的构建脚本为临时分发生成ipa包
die() {
echo "$*" >&2
exit 1
}
appname='AppName'
config='Ad Hoc Distribution'
sdk='iphoneos3.1.3'
project_dir=$(pwd)
echo using configuration $config
echo updating version number
agvtool bump -all
fullversion="$(agvtool mvers -terse1)($(agvtool vers -terse))"
echo building version $fullversion
xcodebuild -activetarget -configuration "$config" -sdk $sdk build || die "build failed"
echo making ipa...
# packaging
cd build/"$config"-iphoneos || die "no such directory"
rm -rf Payload
rm -f "$appname".*.ipa
mkdir Payload
cp -Rp "$appname.app" Payload/
if [ -f "$project_dir"/iTunesArtwork ] ; then
cp -f "$project_dir"/iTunesArtwork Payload/iTunesArtwork
fi
ipaname="$appname.$fullversion.$(date -u +%Y%m%d%H%M%S).ipa"
zip -r $ipaname Payload
echo finished making $ipaname
脚本还会增加版本号。如果不需要,您可以删除该部分。希望有帮助。你是说验证/共享/提交选项?我认为这些是特定于Xcode的,不适合命令行构建工具 我敢打赌,只要你聪明一点,你一定能为自己写一个剧本。看起来它们只是用UUDI和plist存储在
~/Library/MobileDevice/Archived Applications/
中。我也无法想象对验证器进行反向工程会有那么困难
我感兴趣的自动化过程是将构建发送给beta测试人员。(由于App Store提交很少发生,我不介意手动提交,特别是因为我经常需要添加新的描述文本。)通过使用Xcode的CLI执行伪构建+归档,我可以从每次代码提交中触发自动构建,使用嵌入式配置文件创建IPA文件,然后通过电子邮件发送给测试人员。你是说验证/共享/提交选项?我认为这些是特定于Xcode的,不适合命令行构建工具 我敢打赌,只要你聪明一点,你一定能为自己写一个剧本。看起来它们只是用UUDI和plist存储在
~/Library/MobileDevice/Archived Applications/
中。我也无法想象对验证器进行反向工程会有那么困难
我感兴趣的自动化过程是将构建发送给beta测试人员。(由于App Store提交很少发生,我不介意手动提交,特别是因为我经常需要添加新的描述文本。)通过使用Xcode的CLI执行伪构建+归档,我可以从每次代码提交中触发自动构建,使用嵌入式配置文件创建IPA文件,然后通过电子邮件发送给测试人员。我从comand系列中找到了如何自动化构建和归档过程,我刚刚写了一篇文章解释了如何实现这一点 您必须使用的命令是
xcrun
:
/usr/bin/xcrun -sdk iphoneos PackageApplication \
-v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" \
-o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" \
--sign "${DEVELOPER_NAME}" \
--embed "${PROVISONING_PROFILE}"
您将在中找到所有详细信息。如果您有任何问题,请随时提问。我从comand系列中找到了如何自动化构建和归档过程,我刚刚写了一篇文章,解释了如何实现这一点 您必须使用的命令是
xcrun
:
/usr/bin/xcrun -sdk iphoneos PackageApplication \
-v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" \
-o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" \
--sign "${DEVELOPER_NAME}" \
--embed "${PROVISONING_PROFILE}"
您将在中找到所有详细信息。如果您有任何问题,请毫不犹豫地提问。您实际上可以放弃构建,就像XCode一样,这样您就可以测试并发布相同的二进制文件。例如,在我的脚本(类似于上面的脚本)中,我构建了作为临时构建签名的发布版本,然后将其作为IPA存档以进行测试,然后提交分发证书并创建一个zip文件,这就是我发送给苹果的文件。相关线路为:
codesign -f -vv -s "$DistributionIdentity" "$APPDIR"
实际上,您可以放弃构建,就像XCode那样,这样您就可以测试并发布相同的二进制文件。例如,在我的脚本(类似于上面的脚本)中,我构建了作为临时构建签名的发布版本,然后将其作为IPA存档以进行测试,然后提交分发证书并创建一个zip文件,这就是我发送给苹果的文件。相关线路为:
codesign -f -vv -s "$DistributionIdentity" "$APPDIR"
我发现其他一些答案很难找到。你为我做了什么。如其他答案所述,某些路径可能需要是绝对路径 命令:
xcrun -sdk iphoneos PackageApplication \
"/path/to/build/MyApp.app" \
-o "output/path/to/MyApp.ipa" \
--sign "iPhone Distribution: My Company" \
--embed "/path/to/something.mobileprovision"
${TARGET}.app == Target path (ex :/Users/XXXXXX/desktop/Application/build/Release-iphoneos/MyApp.app)
${OUTDIR} == Select the output directory(Where you want to save .ipa file)
${IDENTITY} == iPhone Developer: XXXXXXX (XXXXXXXXXX)(which can be obtained from Keychain access)
${PROVISONING_PROFILE} == Path to the provisioning profile(/Users/XXXXXX/Library/MobileDevice/Provisioning Profiles/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.mobileprovision”)
xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'
xcodebuild -exportArchive -exportFormat APP -archivePath MyMacApp.xcarchive -exportPath MyMacApp.pkg -exportSigningIdentity 'Developer ID Application: My Team'
我发现其他一些答案很难找到。你为我做了什么。如其他答案所述,某些路径可能需要是绝对路径 命令:
xcrun -sdk iphoneos PackageApplication \
"/path/to/build/MyApp.app" \
-o "output/path/to/MyApp.ipa" \
--sign "iPhone Distribution: My Company" \
--embed "/path/to/something.mobileprovision"
${TARGET}.app == Target path (ex :/Users/XXXXXX/desktop/Application/build/Release-iphoneos/MyApp.app)
${OUTDIR} == Select the output directory(Where you want to save .ipa file)
${IDENTITY} == iPhone Developer: XXXXXXX (XXXXXXXXXX)(which can be obtained from Keychain access)
${PROVISONING_PROFILE} == Path to the provisioning profile(/Users/XXXXXX/Library/MobileDevice/Provisioning Profiles/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.mobileprovision”)
xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'
xcodebuild -exportArchive -exportFormat APP -archivePath MyMacApp.xcarchive -exportPath MyMacApp.pkg -exportSigningIdentity 'Developer ID Application: My Team'
在Xcode 4.2中,您可以使用-scheme标志执行以下操作:
xcodebuild -scheme <SchemeName> archive
xcodebuild-方案归档
执行此命令后,存档将显示在Xcode Organizer中。对于Xcode 4.2,您可以使用-scheme标志执行此操作:
xcodebuild -scheme <SchemeName> archive
xcodebuild-方案归档
执行此命令后,存档将显示在
xcode-select -switch /Applications/Xcode 9.3.1.app
cd /Users/username/Desktop/MyiOSApp/
xcodebuild -scheme MyiOSApp archive \
-archivePath /Users/username/Desktop/MyiOSApp.xcarchive
xcodebuild -exportArchive -exportFormat ipa \
-archivePath "/Users/username/Desktop/MyiOSApp.xcarchive" \
-exportPath "/Users/username/Desktop/MyiOSApp.ipa" \
-exportProvisioningProfile "MyCompany Distribution Profile"
which ipa 1>/dev/null 2>&1 || echo 'no shenzhen. to install use: sudo gem install shenzhen --no-ri --no-rdoc'
ipa build --verbose --scheme "${schemeName}"
cd MyProjectFolder
xcrun xcodebuild -scheme MyApp -configuration Release archive -archivePath build/MyApp.xcarchive
xcrun xcodebuild -exportArchive -exportPath build/ -archivePath build/MyApp.xcarchive/ -exportOptionsPlist exportOptions.plist
/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool
export PATH=$PATH:/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/
ln -s /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms /usr/local/itms
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}"
xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'
xcodebuild -exportArchive -exportFormat APP -archivePath MyMacApp.xcarchive -exportPath MyMacApp.pkg -exportSigningIdentity 'Developer ID Application: My Team'
Clean : codebuild clean -workspace work-space-name.xcworkspace -scheme scheme-name
Archive : xcodebuild archive -workspace work-space-name.xcworkspace -scheme "scheme-name" -configuration Release -archivePath IPA-name.xcarchive
Export : xcodebuild -exportArchive -archivePath IPA-name.xcarchive -exportPath IPA-name.ipa -exportOptionsPlist exportOptions.plist