Xcode 9でのexportOptions.plist


CIサービス(TravisCI)上でXcode9でビルドする場合、Xcode8の時より多くの設定をplistに設定しないといけないようです。

下記の様なShellで通りました。

generate_exportoptions_plist.sh
TEAM_ID=$1
BUNDLE_ID=$2
PROFILE_NAME=$3
METHOD=$4
CER=$5

cat > "$(PWD)/script/exportOptions.plist" <<EOF
<?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>${METHOD}</string>
      <key>teamID</key>
      <string>${TEAM_ID}</string>
      <key>uploadBitcode</key>
      <false />
      <key>uploadSymbols</key>
      <true />
      <key>provisioningProfiles</key>
      <dict>
        <key>${BUNDLE_ID}</key>
        <string>${PROFILE_NAME}</string>
      </dict>
      <key>signingCertificate</key>
      <string>${CER}</string>
      <key>signingStyle</key>
      <string>manual</string>
      <key>stripSwiftSymbols</key>
      <true/>
      <key>thinning</key>
      <string>&lt;none&gt;</string>
   </dict>
</plist>
引数 シェル内変数 設定内容
第一引数 TEAM ID Xcode上で設定したチームID
第二引数 BUNDLE ID Xcode上で設定したBundle ID
第三引数 PROFILE NAME https://developer.apple.com で設定したProfile名(下記参照)
第四引数 METHOD development, app-store, ad-hoc, enterpriseといった適切なものを設定
第五引数 CER "iPhone Distribution"という文字列