Showing posts with label XCode. Show all posts
Showing posts with label XCode. Show all posts

Tuesday, January 30, 2018

Userful xcodebuild command lines

I setup Jenkins jobs to build iOS project for QA and release. Here are some useful xcodebuild commands that I use. Tested with XCode 9.

Create a xcarchive file
xcodebuild -project ${APPNAME}.xcodeproj -scheme ${APPSCHEME} -configuration Release clean -archivePath "${WORKSPACE}/${APPNAME}.xcarchive" archive

Create an IPA from xcarchive file with exportOptions.
xcodebuild -exportArchive -archivePath "${APPNAME}.xcarchive" -exportPath "${WORKSPACE}" -exportOptionsPlist exportOptions.plist -allowProvisioningUpdates

If the above command doesn't create an IPA, try putting xcrun in front. To generate an IPA with the correct certificate and provision profile, you must set them correctly in exportOptions.plist. See example below.

Create an APP file for simulator
xcodebuild -project ${APPNAME}.xcodeproj -scheme ${APPSCHEME} -configuration Debug -sdk iphonesimulator clean build


Sample exportOptions.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>method</key>
 <string>enterprise</string> //app-store, enterprise, ad-hoc or development
 <key>signingCertificate</key>
 <string>iPhone Distribution</string> //Certificate name
 <key>teamID</key>
 <string>T7L12345678</string> //The development program team identifier.
 <key>uploadBitcode</key>
 <false>
 <key>uploadSymbols</key>
 <false>
 <key>provisioningProfiles</key>
 <dict>
  <key>com.sample</key>
  <string>fe26f4e4-11d0-4054-898c-144a8se030a1</string> //Provision profile UUID
 </dict>
</dict>
</plist>

Update build version in Info.plist
/usr/libexec/Plistbuddy -c "Set CFBundleVersion ${BUILD_NUMBER}" "${WORKSPACE}/${APPNAME}/Info.plist"