แแ แกแขแแขแแแจแ แฉแแแ แแแแแแ แแแ iOS แแแแแแแชแแแแแก แแแแฎแแแ แแแแแแแกแแแแก แแฌแงแแแแกแ แแ แแแฌแแแแแแก แแแแแชแแแแแแแก, แ แแแแแแช Plarium Krasnodar-แแก แกแขแฃแแแแ แแแแแ แแแ CI/CD แแแแแ แแแแก แแ แแชแแกแจแ.
แกแแกแฌแแแแ
แงแแแแ แแแแแแแแ, แ แแแแแแช แแแ แแฃ แแ แแแแ แแ แแก แฉแแ แแฃแแ Apple แแแฌแงแแแแแแแแแแก แแแแแแแชแแแแแก แจแแแฃแจแแแแแแจแ, แฃแแแ แแคแแกแแแก แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แกแแแแแแแ แแแฎแแ แฎแแแฃแแแแแก. แกแแ แแฃแแแแแ แงแแแแแแ แแแฎแแแแแ: แแแแแแแแแ แแก แแ แแคแแแแก แแแแแฃแแแ แแแแแ แแแแกแ แแ แแแแกแขแ แฃแฅแชแแแก แแแกแขแ แฃแแแแขแแแแแแ.
แแแขแแ แแแขแจแ แฃแแแ แแแ แกแขแแขแแแ โแกแแคแฃแซแแแแแแกโ แจแแกแแฎแแ, แแแแขแแ แจแแแแชแแแแแ แแแแแแงแแ แแแแแแ แ. แแ, แ แ แแญแแ แแแแแ แแฅแแแแ แแแแแแแชแแแก แฌแแ แแแขแแแแ แจแแกแแฅแแแแแแ:
แแแแแแแแแ แแก แแแแแ แแจแ ;- macOS-แแ แแแคแฃแซแแแแฃแแ แแแฌแงแแแแแแแ, แ แแแแแแช แแแฅแแแแแแก แ แแแแ แช build แกแแ แแแ แ;
- แแแแแ แแ แแแฃแแ
แแแแแแแแแ แแก แกแแ แแแคแแแแขแ , แ แแแแแแช แจแแแแแแแจแ แแแแแงแแแแแฃแแ แแฅแแแแ แแแแแชแฎแแแแ แฎแแแแแฌแแ แแกแแแแก; - แจแแฅแแแแแ แแแแแแแชแแ แฃแแแแแแฃแ แแ
ID (แแฆแกแแแแจแแแแแ Bundle Identifier-แแก แแแแจแแแแแแแ, แ แแแแแ wildcard ID-แแก แแแแแงแแแแแ แจแแฃแซแแแแแแก แฎแแแก แแแแแแแชแแแก แแ แแแแแ แคแฃแแฅแชแแแก แแแแแงแแแแแแก, แแแแแแแแแ: แแกแแชแแ แแแฃแแ แแแแแแแแ, Push Notifications, Apple Sign In แแ แกแฎแแ); แแ แแคแแแ แแแแแชแฎแแแแก แฎแแแแแฌแแ แแแ.
แแแแแแแแแ แแก แกแแ แแแคแแแแขแ แฃแแแ แจแแแฅแแแแก Keychain-แแก แแแจแแแแแแ แแแแแกแแแแ macOS แแแฌแงแแแแแแแแแ. แกแแ แขแแคแแแแขแแก แขแแแ แซแแแแแ แแแแจแแแแแแแแแแ. แแแแแแแชแแแก แแแ แแแแแแ แแแแแแแแแแ แ (Dev, QA, Staging, Production) แแก แแแแกแฎแแแแแแแ (แแแแแแแแ แแแ แแ แแแแแฌแแแแแ), แแกแแแ แ แแแแ แช แแแแแชแฎแแแแก แฎแแแแแฌแแ แแก แแ แแคแแแแก แขแแแ.
แแ แแคแแแแแแก แซแแ แแแแแ แขแแแแแ:
- แแแแแแแแแแแขแ - แแแแแฃแแแแแแแ แแแแแแแแแ แฃแแ แแฃแแแแก แแแแแแแชแแแแ แฎแแแแแฌแแ แแกแแแแก, แแแแแแงแแแแแ แแแแแแแแแแแขแแก แกแแ แขแแคแแแแขแ (แขแแแแก แกแแฎแแแ iPhone Developer: XXXXX);
- Ad Hoc - แแแแแฃแแแแแแแ แกแแขแแกแขแ แแแแแชแฎแแแแก แฎแแแแแฌแแ แแกแ แแ แฎแแ แแกแฎแแก แแแแขแ แแแแก แแแแแ แขแแแแแขแแก แแแแ แจแแแ แแแแแแแฌแแแแแกแแแแก, แแแแแแงแแแแแ แแแแแแแแแ แแก แแแกแขแ แแแฃแชแแแก แกแแ แขแแคแแแแขแ (แขแแแแก แกแแฎแแแ iPhone Distribution: XXXXX);
- App Store - แแแแแจแแแแ แแแ แ แขแแกแขแแ แแแแกแแแแก TestFlight-แแก แกแแจแฃแแแแแแ แแ App Store-แจแ แแขแแแ แแแแกแแแแก, แแแแแแงแแแแแ แแแแแแแแแ แแก แแแกแขแ แแแฃแชแแแก แกแแ แขแแคแแแแขแ.
แแแแแแแแ แแแแก แแ Ad Hoc แแ แแคแแแแแแก แแแแแ แแ แแแแกแแก แแกแแแ แแแแแแแแฃแแแ
แกแแชแฎแแแแกแแแแก, แจแแแแซแแแแ แฌแแ แแแแแแแแแ แแแแแแแแแ แแก แแ แแคแแแ แฅแแแแแ แแแชแแแฃแแ แชแฎแ แแแแก แกแแฎแแ. แแก แแแแแแแแแก แแแแก แแแแแแแก, แแฃ แ แ แแแ แแแแขแ แแแ แแแญแแ แแแแ แจแแแ แแแแกแแแแก แแ แกแแแแแ แแแแแฆแแ แแกแแแ.
แแกแแแแแแ
แแแแกแแแแแก, แ แแ แแแแแแแแแแแ แจแแแ แแแแแแก แแแแแงแแคแ แแ แแแฅแขแแกแ แแ แแแ แแแแก แแแฎแแแแแ, แฉแแแ แแแงแแแแแ แแ แแคแแแแก แกแแฎแแแแแก, แ แแแแ แแชแแ ${ProjectName}_${Instance}
, แแแฃ แแ แแแฅแขแแก แกแแฎแแแ + แแแกแขแแแชแแ (แแแแแแแแแแฃแแแ แแแแแแแชแแแก แแแ แแแแแ: Dev, QA, GD, Staging, Live แแ แ.แจ.).
build แกแแ แแแ แแ แแแแแ แขแแกแแก, แแ แแคแแแ แแชแแแแก แกแแฎแแแก แฃแแแแแแฃแ ID-แแ แแ แแแแแแแก แกแแฅแแฆแแแแแจแ /Users/$Username/Library/MobileDevice/Provisioning Profiles
(แกแแ $Username
แจแแแกแแแแแแแ build แกแแ แแแ แแก แแแแฎแแแ แแแแแก แแแแแ แแจแแก แกแแฎแแแก).
*.ipa แคแแแแแก แจแแฅแแแแก แแ แ แแแ แแ แกแแแแแก - legacy (PackageApplication) แแ แแแแแแแแ แแแ (XcAchive แจแแฅแแแแกแ แแ แแฅแกแแแ แขแแก แกแแจแฃแแแแแแ). แแแ แแแแ แแแแแแ แแแแแแแ แแแซแแแแแแฃแแแ, แ แแแแแ 8.3 แแแ แกแแแแแ แแแแก แคแแแแแก แจแแคแฃแแแแก แแแแฃแแ แแแแฆแแแฃแแแ Xcode แแแกแขแ แแแฃแชแแแแแ. แแแก แแแแแกแแงแแแแแแแ, แแฅแแแ แฃแแแ แแแแแแแแ แแ แแแแฃแแ แซแแแแ Xcode-แแแ (แแแ แกแแ 8.2 แแ แฃแคแ แ แแแ แ) แกแแฅแแฆแแแแแจแ:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
แแ แจแแแแแ แแแฃแจแแแ แแ แซแแแแแ:
chmod +x /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/*
แจแแแแแ แแฅแแแ แฃแแแ แจแแแแ แแแแ แแแแแแแชแแแก *.app แคแแแแ:
xcodebuild
-workspace $ProjectDir/$ProjectName.xcworkspace
-scheme $SchemeName
-sdk iphoneos
build
-configuration Release
-derivedDataPath build
CODE_SIGN_IDENTITY=โ$DevAccNameโ
PROVISIONING_PROFILE=โ$ProfileIdโ
DEPLOYMENT_POSTPROCESSING=YES
SKIP_INSTALL=YES
ENABLE_BITCODE=NO
แกแแ:
-workspace
- แแแ แแ แแแฅแขแแก แคแแแแแแแ.
-scheme
- แแแแแงแแแแแฃแแ แกแฅแแแ, แ แแแแแแช แแแแแแแแฃแแแ แแ แแแฅแขแจแ.
-derivedDataPath
โ แแฌแงแแแแแ แแแแแแแชแแแก แฉแแแแขแแแ แแแแก แแแ (*.app).
CODE_SIGN_IDENTITY
โ แแแแแแแแแ แแก แแแแแ แแจแแก แกแแฎแแแ, แ แแแแแก แจแแแแฌแแแแแช แจแแกแแซแแแแแแแ Keychain-แจแ (iPhone Developer: XXXX XXXXXXX, TeamID-แแก แแแ แแจแ แคแ แฉแฎแแแแแจแ).
PROVISIONING_PROFILE
โ แแแแแชแฎแแแแก แฎแแแแแฌแแ แแก แแ แแคแแแแก ID, แ แแแแแก แแแฆแแแแช แจแแกแแซแแแแแแแ แแ แซแแแแแแ:
cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'
แแฃ แแแแแแแชแแ แแงแแแแแก แแแแแขแแแแ แแ แแคแแแก (แแแแแแแแแ, Push แจแแขแงแแแแแแแแแแกแแแแก), แแแจแแ แแแแก แแแชแแแแ PROVISIONING_PROFILE
แแแฃแแแแแ:
APP_PROFILE=โ$AppProfileโ
EXTENSION_PROFILE=โ$ExtProfileโ
แจแแแแแแ, แแแฆแแแฃแแ *.app แคแแแแ แฃแแแ แจแแคแฃแแฃแแ แแงแแก *.ipa-แจแ. แแแแกแแแแแก แจแแแแซแแแแ แแแแแแงแแแแ แแ แซแแแแแ, แ แแแแ แแชแแ:
/usr/bin/xcrun --sdk iphoneos PackageApplication
-v $(find "$ProjectDir/build/Build/Products/Release-iphoneos" -name "*.app")
-o "$ProjectDir/$ProjectName_$Instance.ipa"
แแฃแแชแ แแก แแแแแแ Apple-แแก แแแแแกแแแ แแกแแ แแแซแแแแแแฃแแแ แแแแแแแ. แแฅแขแฃแแแฃแ แแ *.ipa-แก แแแฆแแแ แแแแแแแชแแแก แแ แฅแแแแแแ แแฅแกแแแ แขแแ.
แฏแแ แแฅแแแ แฃแแแ แจแแแแ แแแแ แแ แฅแแแ แแ แซแแแแแแ:
xcodebuild
-workspace $ProjectDir/$ProjectName.xcworkspace
-scheme $SchemeName
-sdk iphoneos
-configuration Release
archive
-archivePath $ProjectDir/build/$ProjectName.xcarchive
CODE_SIGN_IDENTITY=โ$DevAccNameโ
PROVISIONING_PROFILE=โ$ProfileIdโ
ENABLE_BITCODE=NO
SYNCHRONOUS_SYMBOL_PROCESSING=FALSE
แแแแกแฎแแแแแแแแ แแแแแแแ แแแแก แจแแแ แแแแก แแแแแแกแ แแ แแแ แแแแขแแแจแ SYNCHRONOUS_SYMBOL_PROCESSING
, แ แแแแแแช แแแแแ แแแแก แกแแแแแแแแแแก แแแแขแแแ แแแแก แแจแแแแแแก แแ แแก.
แจแแแแแ แฉแแแ แแแญแแ แแแแ แคแแแแแก แแแแแ แแ แแแ แแฅแกแแแ แขแแก แแแ แแแแขแ แแแแ:
ExportSettings="$ProjectDir/exportOptions.plist"
cat << EOF > $ExportSettings
<?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>uploadBitcode</key>
<false/>
<key>uploadSymbols</key>
<false/>
<key>method</key>
<string>$Method</string>
<key>provisioningProfiles</key>
<dict>
<key>$BundleID</key>
<string>$ProfileId</string>
</dict>
<key>signingCertificate</key>
<string>$DevAccName</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>$TeamID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
EOF
แกแแ:
$Method
โ แแแฌแแแแแแก แแแแแแ, แจแแแกแแแแแแแ แแแแแแแชแแแก แฎแแแแแฌแแ แแก แแ แแคแแแแก แขแแแก, แแแฃ แแแแแแแแ แแแแกแแแแก แแแแจแแแแแแแ แแฅแแแแ แแแแแแแแ แแแ, Ad Hoc - ad-hoc, แฎแแแ App Store-แแกแแแแก - app-store.
$BundleID
โ แแแแแแแชแแแก ID, แ แแแแแแช แแแแแแแแฃแแแ แแแแแแแชแแแก แแแ แแแแขแ แแแจแ. แจแแแแซแแแแ แจแแแแแฌแแแ แแ แซแแแแแแ:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName ะธ $ProfileId
โ แแแแแแแแแ แแก แกแแฎแแแ แแ แฎแแแแแฌแแ แแก แแ แแคแแแแก ID แแแ แแแแขแ แแแ, แ แแแแแแแช แแแ แ แแงแ แแแแแงแแแแแฃแแ แแ แฃแแแ แแแแฎแแแแแแก แแฅแกแแแ แขแแก แแแ แแแแขแ แแแจแ แแ แกแแแฃแ แแแแจแแแแแแแแแก.
$TeamID
โ แแแแแจแแ ID แคแ แฉแฎแแแแแจแ แแแแแแแแแ แแก แกแแฎแแแแก แจแแแแแ, แแแแแแแแแ: iPhone แแแแแแแแแ แ: โฆโฆ (XXXXXXXXXX); แจแแแซแแแแ แจแแแแฌแแแแก Keychain-แจแ.
แจแแแแแ, แแฅแกแแแ แขแแก แแ แซแแแแแแก แแแแแงแแแแแแ, แแแฆแแแ แกแแญแแ แ *.ipa แคแแแแก:
xcodebuild
-exportArchive
-archivePath $ProjectDir/build/$ProjectName.xcarchive
-exportPath $ProjectDir
-exportOptionsPlist $ExportSettings
ะะพััะฐะฒะบะฐ
แแฎแแ แจแแแ แแแแแฃแแ แคแแแแ แฃแแแ แแแแแแชแแก แกแแแแแแ แแแแฎแแแ แแแแแก, แแแฃ แแแแแกแขแแแแ แแแก แแแฌแงแแแแแแแแแ.
แแ แกแแแแแก แแ แแแแแ แกแแ แแแกแ แแแแแแแแแแแขแแกแ แแ Ad Hoc build-แแแแก แแแกแขแ แแแฃแชแแแกแแแแก, แ แแแแ แแชแแ HockeyApp, AppBlade แแ แกแฎแแ, แแแแ แแ แแ แกแขแแขแแแจแ แแแกแแฃแแ แแแ แแแแแแแชแแแแแก แแแแแฌแแแแแแก แแแแแฃแแแแแแแ แกแแ แแแ แแ.
iOS-แแกแแแแก แแแแแแแชแแแก แแแกแขแแแแชแแ แฎแแแแ 2 แแขแแแแ:
- แแแแแแแชแแแก แแแกแขแแแแชแแแก แแแแแคแแกแขแแก แแแฆแแแ Items Service-แแก แแแจแแแแแแ.
- *.ipa แคแแแแแก แแแกแขแแแแชแแ แแแแแคแแกแขแจแ แแแแแแแแฃแแ แแแคแแ แแแชแแแก แแแฎแแแแแ HTTPS-แแก แกแแจแฃแแแแแแ.
แแแแแแ แแ, แฉแแแ แฏแแ แฃแแแ แจแแแฅแแแแ แแแกแขแแแแชแแแก แแแแแคแแกแขแ (แคแแแแแก แขแแแ *.plist) แแ แซแแแแแแ:
cat << EOF > $manifest
<?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>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>$ipaUrl</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>$BundleID</string>
<key>bundle-version</key>
<string>$AppVersion</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>$ProjectName_$Instance</string>
<key>subtitle</key>
<string>$Instance</string>
</dict>
</dict>
</array>
</dict>
</plist>
EOF
แ แแแแ แช แฎแแแแแ, แแแแแคแแกแขแ แจแแแชแแแก แแแแฅแแแก แงแแแแ แแแ แแแแขแ แก, แ แแแแแแช แแแแแฌแแแแแแก แแแแแแแชแแแก แจแแฅแแแแจแ.
แแแแแแแชแแแก แแแ แกแแ ($AppVersion
) แจแแแซแแแแ แจแแแแฌแแแแก แแ แซแแแแแแ:
defaults read $ProjectDir/Info CFBundleVersion
แแแ แแแแขแ แแก $ipaUrl
แจแแแชแแแก แแแ แแแแแ แแแฃแแก *.ipa แคแแแแแก แแแแแแกแแฌแแ แแ. iOS-แแก แแแจแแแแ แแแ แกแแแแแ, แแแแแแแชแแ แฃแแแ แแงแแก แแแแแกแขแแแแ แแแฃแแ HTTPS-แแก แกแแจแฃแแแแแแ. แแแ แแ แแแ แกแแแจแ, แแแแแคแแกแขแแก แคแแ แแแขแ แแแแแ แจแแแชแแแแ: แแแแแแแ แแแแแแแชแแแก แฎแแขแฃแแแแแก แแแ แแแแขแ แแแแ, แ แแแแ แแชแแ
<images>
<image>...</image>
</images>
แแแ แแแแ, แแแแแแแชแแแก แแแกแขแแแแชแแแกแแแแก แกแแแแแ แแกแแ แแแ แขแแแ HTML แแแแ แแ แแกแแแแกแ แแแฃแแแ:
itms-services://?action=download-manifest&url=https://$ServerUrl/$ProjectName/$Instance/iOS/$AppVersion/manifest.plist
แแแแแแแแ แแแแกแ แแ แขแแกแขแแ แแแแก แแแแงแแคแแแแแแแแก แกแแญแแ แแแแแแแกแแแแก Plarium-แแ แจแแฅแแแ แกแแแฃแแแ แ build-แแก แแแกแขแแแแชแแแก แแแแแแแชแแ, แ แแแแแแช แแแแซแแแแก:
- แแแขแแแแแแ แแ แแแแแฃแแแแแแแแแ,
- แฌแแแแแแก แแแแขแ แแแแก แชแแแขแ แแแแแแชแแ แแ แแแแแแแชแแแแแก แฃแกแแคแ แแฎแ แแแกแขแแแแชแแ โแแ แแแแแแโ แแแแแแแฃแ แแ แจแแฅแแแแแ แแแฃแแแแแก แกแแจแฃแแแแแแ,
- แแแคแแ แแแแแแแ แคแฃแแฅแชแแแแแ แแแ (แแแฃ, แแแแแแแแ แแแแก แแฃแแแก, แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, แจแแฃแซแแแ แแแแแ แแฃแแ แคแฃแแฅแชแแแแแก แแแขแแแ แแ แแแ แแ แกแแแฃแ แแแแแแแชแแแจแ).
แขแแกแขแแ แแแ
แแฎแแ แฉแแแ แแแกแแฃแแ แแแ แแแแแแแชแแแก แฌแแแแกแฌแแ แแแแแจแแแแแก แขแแกแขแแ แแแแแ
แฉแแแแขแแแ แแแแก แแฃแชแแแแแแแ แแแ แแแแแแ App Store แฎแแแแแฌแแ แแก แแ แแคแแแแก แขแแแ แแ แแแแแ แแ แแแฃแแ API แแแแแแจแแแแก แแ แกแแแแแ.
แแแแแแแชแแแก แฉแแแแขแแแ แแแแก แ แแแแแแแแ แแแ แแ แกแแแแแก:
- Xcode-แแก (แแ แแแแแแแขแแ แ) แกแแจแฃแแแแแแ,
- แแแกแขแ แฃแแแแขแแก แกแแจแฃแแแแแแ,
- Application Loader-แแก แแแจแแแแแแ Xcode-แแก แซแแแแ แแแ แกแแแแแกแแแแก (แแฎแแ Transporter).
แแแขแแแแขแฃแ แ แแแแแแขแแแ แแแแกแแแแก แแแแแแงแแแแแ altool, แ แแแแแกแแช แแกแแแ แแฅแแก แแแขแแ แแแแชแแแก แแ แ แแแแแแ:
- แแแแแแแชแแแก แกแแแชแแคแแแฃแ แ แแแ แแแ,
- API แแแกแแฆแแแ.
แกแแกแฃแ แแแแแ แแแแแแแชแแแก แฉแแแแขแแแ แแแ API แแแกแแฆแแแแก แแแแแงแแแแแแ.
API แแแกแแฆแแแแก แแแกแแฆแแแแ แแแแแแแ
แจแแแแแแ, แแแแแแฌแแ แแแ แแแกแแฆแแแแก แแแแแ แขแ build แกแแ แแแ แแ:
mkdir -p ~/.appstoreconnect/private_keys
mv ~/Downloads/AuthKey_${KeyID}.p8 ~/.appstoreconnect/private_keys/
แแแแแแแชแแแก TestFlight-แแ แแขแแแ แแแแแแ, แแฅแแแ แฃแแแ แแแแแแกแขแฃแ แแ แแแแแแแชแแ, แฉแแแ แแแแก แแแแแแแแ แแ แซแแแแแแ:
xcrun altool
--validate-app
-t ios
-f $(find "$ProjectDir" -name "*.ipa")
--apiKey โ$KeyIDโ
--apiIssuer โ$IssuerIDโ
ะะดะต apiKey
ะธ apiIssuer
แแฅแแก แแแแแก แแแแจแแแแแแแแแ API แแแกแแฆแแแแก แแแแแ แแ แแแแก แแแแ แแแแแ.
แจแแแแแแ, แฌแแ แแแขแแแฃแแ แแแแแแแชแแแก แจแแแแแ, แฉแแแ แแขแแแ แแแแ แแแแแแแชแแแก แแ แซแแแแแแ --upload-app
แแแแแ แแแ แแแแขแ แแแแ.
แแแแแแแชแแ Apple-แแก แแแแ แแ แแ แแ แแ แ แแฆแแก แแแแแแแแแแแจแ แจแแแแฌแแแแแ แแ แจแแแแแ แฎแแแแแกแแฌแแแแแ แแแฎแแแแ แแแ แ แขแแกแขแแ แแแแกแแแแก: แแแ แแแแแแแแแแ แแแแแแแ แแแกแขแแแแชแแแกแแแแก.
แแแแแแแชแแแก altool-แแก แกแแจแฃแแแแแแ แฉแแแแขแแแ แแแแก แแแแแ แแ แแ แแแแ แแแแก แกแแแชแแคแแแฃแ แ แแแ แแแแก แแแแแงแแแแแ.
แแแแแแแชแแแก แกแแแชแแคแแแฃแ แ แแแ แแแแก แแแกแแฆแแแแ แแฅแแแ แฃแแแ แจแแฎแแแแแ
แจแแแแแแ, แแฅแแแ แฃแแแ แจแแฅแแแแ build แกแแ แแแ แแก แฉแแแแฌแแ แ Keychain-แจแ แแ แแแ แแแแ. Xcode-แแก 11 แแแ แกแแแแแ แแก แจแแแซแแแแ แแแแแแแแก แแ แซแแแแแแ:
xcrun altool --store-password-in-keychain-item "Altool" -u "$DeveloperName" -p $AppPswd
แกแแ:
$DeveloperName
โ iOS แแแแแแแแแ แแก แแแแแ แแจแแก แกแแฎแแแ, แ แแแแแแช แแแแแแงแแแแแ Apple แกแแ แแแกแแแจแ แจแแกแแกแแแแแแ.
$AppPswd
- แแแแแ แแ แแแฃแแ แแแแกแแแแก แกแแแชแแคแแแฃแ แ แแแ แแแ.
แจแแแแแแ, แฉแแแ แแแฆแแแ asc-provider แแแ แแแแขแ แแก แแแแจแแแแแแแแก แแ แแแแแฌแแแแ แแแ แแแแก แแแแแ แขแแก แฌแแ แแแขแแแแก แแ แซแแแแแแ:
xcrun altool --list-providers -u "$DeveloperName" -p "@keychain:Altool"
แฉแแแ แแแฆแแแ แแแแแกแแแแแก:
Provider listing:
- Long Name - - Short Name -
XXXXXXX XXXXXXXXX
แ แแแแ แช แฎแแแแแ, แกแแญแแ แ Short Name แแแแจแแแแแแแ (asc-provider) แแแแฎแแแแ $TeamID แแแ แแแแขแ แก, แ แแแแแแช แแแแแแแงแแแแ แแแแแแแชแแแก แจแแฅแแแแกแแก.
แแแแแแแชแแแก แขแแกแขแแ แแแ แแ แฉแแกแแขแแแ แแแ TestFlight-แจแ แแแแแแงแแแแ แแ แซแแแแแ:
xcrun altool
--(validate|upload)-app
-f $(find "$ProjectDir" -name "*.ipa")
-u "$DeveloperName"
-p "@keychain:Altool"
แ แแแแ แช แแแ แแแแขแ แแก แแแแจแแแแแแแ -p
แจแแแแซแแแแ แแแฆแแ แฆแแ แแแฃแแแแ $AppPswd
แแแฃแจแแคแ แแแ (แแแแแแแแแแแ) แคแแ แแแ.
แแฃแแชแ, แ แแแแ แช แฃแแแ แแฆแแแแจแแแ, แจแแกแ แฃแแแแแก แแแแแกแแแ แแกแแ, แฃแแฏแแแแกแแ แแแ แฉแแแ API Key altool แแแขแแ แแแแชแแแกแแแแก, แ แแแแแ Xcode-แแก แกแฎแแแแแกแฎแแ แแแ แกแแแก แแฅแแก แแแ แแแแฃแแ แแ แแแแแแแแ (โแแแ แฎแแแแแกโ Keychain, แแแขแแ แแแแชแแแก แจแแชแแแแแแก แแขแแแ แแแแกแแก แแ แ.แจ.).
แแก แงแแแแแคแแ แ, แคแแฅแขแแแ แแแแ. แงแแแแ แแแแแฌแแแแก แแฃแกแฃแ แแแ แฌแแ แแแขแแแฃแ แแจแแแแแแแก แแ แฃแแ แแแแแแแ แแแแแจแแแแแก App Store-แจแ.
แฌแงแแ แ: www.habr.com