ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ ΠΈ испорукС иОБ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ Π΄Π΅Π»ΠΈΠΌΠΎ искуство склапања ΠΈ испорукС иОБ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° корисницима, којС јС студио ΠŸΠ»Π°Ρ€ΠΈΡƒΠΌ ΠšΡ€Π°ΡΠ½ΠΎΠ΄Π°Ρ€ Π°ΠΊΡƒΠΌΡƒΠ»ΠΈΡ€Π°ΠΎ Ρƒ процСсу ΠΎΡ‚ΠΊΠ»Π°ΡšΠ°ΡšΠ° Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° ЦИ/Π¦Π”.

ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ ΠΈ испорукС иОБ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

ΠžΠ±ΡƒΠΊΠ°

Π‘Π²Π°ΠΊΠ° особа која јС Π½Π° овај ΠΈΠ»ΠΈ онај Π½Π°Ρ‡ΠΈΠ½ ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½Π° Ρƒ Ρ€Π°Π·Π²ΠΎΡ˜ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° АпплС ΡƒΡ€Π΅Ρ’Π°Ρ˜Π΅ Π²Π΅Ρ› јС Ρ†Π΅Π½ΠΈΠ»Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ²Π΅Ρ€Π·Π½Ρƒ погодност инфраструктурС. ΠŸΠΎΡ‚Π΅ΡˆΠΊΠΎΡ›Π΅ сС Π½Π°Π»Π°Π·Π΅ свуда: ΠΎΠ΄ мСнија ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π° Π΄ΠΎ Π°Π»Π°Ρ‚Π° Π·Π° ΠΎΡ‚ΠΊΠ»Π°ΡšΠ°ΡšΠ΅ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° ΠΈ ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅.

На Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ ΠΈΠΌΠ° доста Ρ‡Π»Π°Π½Π°ΠΊΠ° ΠΎ β€žΠΎΡΠ½ΠΎΠ²Π°ΠΌΠ°β€œ, ΠΏΠ° Ρ›Π΅ΠΌΠΎ ΠΏΠΎΠΊΡƒΡˆΠ°Ρ‚ΠΈ Π΄Π° истакнСмо ΠΎΠ½ΠΎ Π³Π»Π°Π²Π½ΠΎ. Π•Π²ΠΎ ΡˆΡ‚Π° Π²Π°ΠΌ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΄Π° бистС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΡΠ²ΠΎΡ˜Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ:

  • Π½Π°Π»ΠΎΠ³ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π°;
  • ΡƒΡ€Π΅Ρ’Π°Ρ˜ заснован Π½Π° ΠΌΠ°Ρ†ΠžΠ‘-Ρƒ који Π΄Π΅Π»ΡƒΡ˜Π΅ ΠΊΠ°ΠΎ сСрвСр Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ;
  • гСнСрисан сСртификат ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π°, који Ρ›Π΅ сС Π΄Π°Ρ™Π΅ користити Π·Π° ΠΏΠΎΡ‚ΠΏΠΈΡΠΈΠ²Π°ΡšΠ΅ ΠΏΡ€ΠΈΡ˜Π°Π²Π΅;
  • ΠΊΡ€Π΅ΠΈΡ€Π°Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° са Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈΠΌ ID (Ρ‚Ρ€Π΅Π±Π° Π½Π°ΠΏΠΎΠΌΠ΅Π½ΡƒΡ‚ΠΈ ваТност Π‘ΡƒΠ½Π΄Π»Π΅ Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠ΅Ρ€-Π°, Ρ˜Π΅Ρ€ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΡŸΠΎΠΊΠ΅Ρ€ Π˜Π”-Π° ΠΎΠ½Π΅ΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠŸΡ€ΠΈΠ΄Ρ€ΡƒΠΆΠ΅Π½ΠΈ Π΄ΠΎΠΌΠ΅Π½ΠΈ, ΠŸΡƒΡΡ… ΠΎΠ±Π°Π²Π΅ΡˆΡ‚Π΅ΡšΠ°, АпплС Π‘ΠΈΠ³Π½ Ин ΠΈ Π΄Ρ€ΡƒΠ³Π΅);
  • ΠΏΡ€ΠΎΡ„ΠΈΠ» потписи Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°.

Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π° ΠΌΠΎΡ€Π° Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ ΠΏΡ€Π΅ΠΊΠΎ ΠšΠ΅ΠΈΡ†Ρ…Π°ΠΈΠ½-Π° Π½Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΠΌΠ°Ρ†ΠžΠ‘ ΡƒΡ€Π΅Ρ’Π°Ρ˜Ρƒ. Врста сСртификата јС Π²Π΅ΠΎΠΌΠ° Π²Π°ΠΆΠ½Π°. Π£ зависности ΠΎΠ΄ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ (Π”Π΅Π², КА, Π‘Ρ‚Π°Π³ΠΈΠ½Π³, ΠŸΡ€ΠΎΠ΄ΡƒΡ†Ρ‚ΠΈΠΎΠ½) ΠΎΠ½ΠΎ Ρ›Π΅ сС Ρ€Π°Π·Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΠΈ (Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈΠ»ΠΈ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°), ΠΊΠ°ΠΎ ΠΈ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° потписа Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π“Π»Π°Π²Π½Π΅ врстС ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°:

  • Развој – намСњСн Π·Π° ΠΏΠΎΡ‚ΠΏΠΈΡΠΈΠ²Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΎΠ³ Ρ‚ΠΈΠΌΠ°, користи сС Развојни сСртификат (Π½Π°Π·ΠΈΠ² Ρ‚ΠΈΠΏΠ° ΠΈΠŸΡ…ΠΎΠ½Π΅ Π”Π΅Π²Π΅Π»ΠΎΠΏΠ΅Ρ€: КБКБКБКБКБ);
  • Ад Π₯ΠΎΡ† - намСњСн Π·Π° ΠΏΠΎΡ‚ΠΏΠΈΡΠΈΠ²Π°ΡšΠ΅ тСст Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Ρƒ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΎΠ΄ странС КА ΠΎΠ΄Π΅Ρ™Π΅ΡšΠ°, користи сС сСртификат ΠΎ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π° (Π½Π°Π·ΠΈΠ² Ρ‚ΠΈΠΏΠ° ΠΈΠŸΡ…ΠΎΠ½Π΅ Дистрибутион: КБКБКБКБКБ);
  • Апп Π‘Ρ‚ΠΎΡ€Π΅ - Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π·Π° СкстСрно Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΏΡ€Π΅ΠΊΠΎ ВСстЀлигхт-Π° ΠΈ ΠΎΡ‚ΠΏΡ€Π΅ΠΌΠ°ΡšΠ΅ Ρƒ Апп Π‘Ρ‚ΠΎΡ€Π΅, користи сС сСртификат ΠΎ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π°.

ΠŸΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡΠ°ΡšΠ° Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈΡ… ΠΈ Π°Π΄ Ρ…ΠΎΡ† ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°, Ρ‚ΠΎ јС Ρ‚Π°ΠΊΠΎΡ’Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ листа ΡƒΡ€Π΅Ρ’Π°Ρ˜Π°, Π½Π° који ΠΌΠΎΠΆΠ΅Ρ‚Π΅ инсталирати Π±ΡƒΠΈΠ»Π΄, ΡˆΡ‚ΠΎ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Π΄ΠΎΠ΄Π°Ρ‚Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ приступ корисницима. НС ΠΏΠΎΡΡ‚ΠΎΡ˜ΠΈ листа ΡƒΡ€Π΅Ρ’Π°Ρ˜Π° Ρƒ Апп Π‘Ρ‚ΠΎΡ€Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»Ρƒ, ΠΏΠΎΡˆΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρƒ приступа Ρ‚ΠΎΠΊΠΎΠΌ Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ΠΎΠ³ Π±Π΅Ρ‚Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ° ΠΎΠ±Π°Π²Ρ™Π° ВСстЀлигхт, ΠΎ Ρ‡Π΅ΠΌΡƒ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ Ρ€Π΅Ρ‡ΠΈ каснијС.

Π Π°Π΄ΠΈ Ρ˜Π°ΡΠ½ΠΎΡ›Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ прСдставити ΠΏΡ€ΠΎΡ„ΠΈΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π° Ρƒ ΠΎΠ±Π»ΠΈΠΊΡƒ Ρ‚Π°Π±Π΅Π»Π΅ испод. Π’Π°ΠΊΠΎ јС лакшС Ρ€Π°Π·ΡƒΠΌΠ΅Ρ‚ΠΈ који су Π½Π°ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π·Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΡƒ ΠΈ ΠΎΠ΄Π°ΠΊΠ»Π΅ Π΄Π° ΠΈΡ… Π½Π°Π±Π°Π²ΠΈΠΌΠΎ.

ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ ΠΈ испорукС иОБ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

Π‘ΠΊΡƒΠΏΡˆΡ‚ΠΈΠ½Π°

Π”Π° бисмо олакшали одвајањС склопова ΠΏΠΎ ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Ρƒ ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΡƒ, користимо ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су ${ProjectName}_${Instance}, односно Π½Π°Π·ΠΈΠ² ΠΏΡ€ΠΎΡ˜Π΅ΠΊΡ‚Π° + инстанца (зависи ΠΎΠ΄ ΠΎΠΊΡ€ΡƒΠΆΠ΅ΡšΠ° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅: Π”Π΅Π², КА, Π“Π”, Π‘Ρ‚Π°Π³ΠΈΠ½Π³, Π›ΠΈΠ²Π΅, ΠΈΡ‚Π΄.).

Када сС ΡƒΠ²Π΅Π·Π΅ Π½Π° сСрвСр Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ, ΠΏΡ€ΠΎΡ„ΠΈΠ» мСња својС ΠΈΠΌΠ΅ Ρƒ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈ Π˜Π” ΠΈ ΠΏΡ€Π΅ΠΌΠ΅ΡˆΡ‚Π° сС Ρƒ фасциклу /Users/$Username/Library/MobileDevice/Provisioning Profiles (Π“Π΄Π΅ $Username ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° ΠΈΠΌΠ΅Π½Ρƒ корисничког Π½Π°Π»ΠΎΠ³Π° сСрвСра Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ).

ΠŸΠΎΡΡ‚ΠΎΡ˜Π΅ Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° ΠΏΡ€Π°Π²Ρ™Π΅ΡšΠ΅ *.ΠΈΠΏΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ – ΡΡ‚Π°Ρ€ΠΈΡ˜Π° (ΠŸΠ°Ρ†ΠΊΠ°Π³Π΅ΠΠΏΠΏΠ»ΠΈΡ†Π°Ρ‚ΠΈΠΎΠ½) ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½Π° (ΠΏΡ€Π΅ΠΊΠΎ ΠšΡΡ†ΠΡ†Ρ…ΠΈΠ²Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ° ΠΈ ΠΈΠ·Π²ΠΎΠ·Π°). ΠŸΡ€Π²ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ сС сматра застарСлим, ΠΏΠΎΡˆΡ‚ΠΎ јС ΠΎΠ΄ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ 8.3 ΠΌΠΎΠ΄ΡƒΠ» Π·Π° паковањС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΡƒΠΊΠ»ΠΎΡšΠ΅Π½ ΠΈΠ· ΠšΡΡ†ΠΎΠ΄Π΅ Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π΅. Π”Π° бистС Π³Π° користили, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ» ΠΈΠ· старог ΠšΡΡ†ΠΎΠ΄Π΅-Π° (Π²Π΅Ρ€Π·ΠΈΡ˜Π° 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/*

Π—Π°Ρ‚ΠΈΠΌ ΠΌΠΎΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠΊΡƒΠΏΠΈΡ‚ΠΈ *.Π°ΠΏΠΏ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅:

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 β€” ΠΏΡƒΡ‚Π°ΡšΠ° Π·Π° ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ састављСнС Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ (*.Π°ΠΏΠΏ).

CODE_SIGN_IDENTITY β€” Π½Π°Π·ΠΈΠ² Π½Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π°, који сС ΠΌΠΎΠΆΠ΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠΎΠ²Π°Ρ‚ΠΈ Ρƒ ΠšΠ΅ΠΈΡ†Ρ…Π°ΠΈΠ½-Ρƒ (ΠΈΠŸΡ…ΠΎΠ½Π΅ Π”Π΅Π²Π΅Π»ΠΎΠΏΠ΅Ρ€: КБКБКБКБ КБКБКБКБКБКБКБ, Π±Π΅Π· Π’Π΅Π°ΠΌΠ˜Π”-Π° Ρƒ Π·Π°Π³Ρ€Π°Π΄Π°ΠΌΠ°).

ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ ΠΈ испорукС иОБ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

PROVISIONING_PROFILE β€” Π˜Π” ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° Π·Π° ΠΏΠΎΡ‚ΠΏΠΈΡΠΈΠ²Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, који сС ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠ±ΠΈΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

cd "/Users/$Username/Library/MobileDevice/Provisioning Profiles/" && find *.mobileprovision -type f | xargs grep -li ">${ProjectName}_${Instance}<" | sed -e 's/.mobileprovision//'

Ако Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° користи Π΄ΠΎΠ΄Π°Ρ‚Π½ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ» (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΠŸΡƒΡΡ… ΠΎΠ±Π°Π²Π΅ΡˆΡ‚Π΅ΡšΠ°), ΠΎΠ½Π΄Π° умСсто PROVISIONING_PROFILE Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΠΈ:

APP_PROFILE=”$AppProfile” 
EXTENSION_PROFILE=”$ExtProfile” 

Π—Π°Ρ‚ΠΈΠΌ, Ρ€Π΅Π·ΡƒΠ»Ρ‚ΡƒΡ˜ΡƒΡ›Ρƒ *.Π°ΠΏΠΏ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρ‚Ρ€Π΅Π±Π° ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΠΈ Ρƒ *.ΠΈΠΏΠ°. Π”Π° бистС Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ користити ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС:

/usr/bin/xcrun --sdk iphoneos PackageApplication 
-v $(find "$ProjectDir/build/Build/Products/Release-iphoneos" -name "*.app") 
-o "$ProjectDir/$ProjectName_$Instance.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 β€” Π½Π°Ρ‡ΠΈΠ½ испорукС, ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Ρ‚ΠΈΠΏΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ потписа, односно Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Ρ›Π΅ врСдност Π±ΠΈΡ‚ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜, Π·Π° Ад Π₯ΠΎΡ† - Π°Π΄-Ρ…ΠΎΡ†, Π° Π·Π° Апп Π‘Ρ‚ΠΎΡ€Π΅ - ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°.

$BundleID β€” Π˜Π” Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅, који јС Π½Π°Π²Π΅Π΄Π΅Π½ Ρƒ подСшавањима Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

defaults read $ProjectDir/Info CFBundleIdentifier

$DevAccName ΠΈ $ProfileId β€” подСшавања ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π° ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° потписа која су ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅Π½Π° ΠΈ ΠΌΠΎΡ€Π°Ρ˜Ρƒ Π΄Π° ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°Ρ˜Ρƒ врСдностима Ρƒ подСшавањима ΠΈΠ·Π²ΠΎΠ·Π°.

$TeamID β€” дСсСтоцифрСни Π˜Π” Ρƒ Π·Π°Π³Ρ€Π°Π΄Π°ΠΌΠ° ΠΈΠ·Π° ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΈΠŸΡ…ΠΎΠ½Π΅ Π”Π΅Π²Π΅Π»ΠΎΠΏΠ΅Ρ€: …… (КБКБКБКБКБКБКБКБКБКБ); ΠΌΠΎΠΆΠ΅ сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΠΈ Ρƒ ΠšΠ΅ΠΈΡ†Ρ…Π°ΠΈΠ½-Ρƒ.

Π—Π°Ρ‚ΠΈΠΌ, користСћи ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π° ΠΈΠ·Π²ΠΎΠ·, добијамо Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½Ρƒ *.ΠΈΠΏΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ:

xcodebuild 
-exportArchive 
-archivePath $ProjectDir/build/$ProjectName.xcarchive 
-exportPath $ProjectDir 
-exportOptionsPlist $ExportSettings

Π˜ΡΠΏΠΎΡ€ΡƒΠΊΠ°

Π‘Π°Π΄Π° ΠΏΡ€ΠΈΠΊΡƒΠΏΡ™Π΅Π½Ρƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΡƒ Ρ‚Ρ€Π΅Π±Π° доставити ΠΊΡ€Π°Ρ˜ΡšΠ΅ΠΌ кориснику, односно инсталирати Π½Π° ΡƒΡ€Π΅Ρ’Π°Ρ˜.

ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ сСрвиса Π·Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Ρƒ Π”Π΅Π²Π΅Π»ΠΎΠΏΠΌΠ΅Π½Ρ‚ ΠΈ Ад Π₯ΠΎΡ† Π±ΡƒΠΈΠ»Π΄-ΠΎΠ²Π°, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ су Π₯оцкСиАпп, АппБладС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ, Π°Π»ΠΈ Ρƒ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ Ρ›Π΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΎ самосталном сСрвСру Π·Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π·Π° иОБ одвија сС Ρƒ 2 Ρ„Π°Π·Π΅:

  1. ΠŸΡ€ΠΈΡ˜Π΅ΠΌ манифСста Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΏΡ€Π΅ΠΊΠΎ услугС Π˜Ρ‚Π΅ΠΌΡ.
  2. Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° *.ΠΈΠΏΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ Ρƒ складу са ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΌ Ρƒ манифСсту ΠΏΡ€Π΅ΠΊΠΎ Π₯ВВПБ-Π°.

Π”Π°ΠΊΠ»Π΅, ΠΏΡ€Π²ΠΎ ΠΌΠΎΡ€Π°ΠΌΠΎ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ΠΌΠΎ инсталациони манифСст (Ρ‚ΠΈΠΏ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅ *.плист) са ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

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 садрТи Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Ρƒ Π²Π΅Π·Ρƒ Π·Π° ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ *.ΠΈΠΏΠ° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ΅. Од сСдмС Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ иОБ-Π°, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΌΠΎΡ€Π° Π±ΠΈΡ‚ΠΈ инсталирана ΠΏΡ€Π΅ΠΊΠΎ Π₯ВВПБ-Π°. Π£ осмој Π²Π΅Ρ€Π·ΠΈΡ˜ΠΈ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ манифСста јС ΠΌΠ°Π»ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΡšΠ΅Π½: Π±Π»ΠΎΠΊΠΎΠ²ΠΈ са подСшавањима Π·Π° ΠΈΠΊΠΎΠ½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΠΎΠΏΡƒΡ‚

<images>
   <image>...</image>
</images>

Π”Π°ΠΊΠ»Π΅, Π·Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ Π΄ΠΎΠ²ΠΎΡ™Π½Π° јС Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π° Π₯Π’ΠœΠ› страница са ΠΎΠ²Π°ΠΊΠ²ΠΎΠΌ Π²Π΅Π·ΠΎΠΌ:

itms-services://?action=download-manifest&url=https://$ServerUrl/$ProjectName/$Instance/iOS/$AppVersion/manifest.plist

Π—Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅ ΠΎΠ΄Π΅Ρ™Π΅ΡšΠ° Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅, ΠŸΠ»Π°Ρ€ΠΈΡƒΠΌ јС ΠΊΡ€Π΅ΠΈΡ€Π°ΠΎ сопствСну Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π·Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΡƒ која Π½Π°ΠΌ дајС:

  • самосталност ΠΈ нСзависност,
  • Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ приступа ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ΠΏΡ€Π΅ΠΊΠΎ β€žΠΏΡ€ΠΈΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ…β€œ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈΡ… Π²Π΅Π·Π°,
  • ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈΠ²Π° функционалност (Ρ‚ΠΎ Ρ˜Π΅ΡΡ‚, Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈ Ρ‚ΠΈΠΌ, Π°ΠΊΠΎ јС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ, ΠΌΠΎΠΆΠ΅ интСгрисати Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ˜ΡƒΡ›Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Ρƒ ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅Ρ›Ρƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ).

Π’Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅

Π‘Π°Π΄Π° Ρ›Π΅ΠΌΠΎ ΠΏΡ€ΠΈΡ‡Π°Ρ‚ΠΈ ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΡƒ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΏΡ€Π΅ ΠΏΡƒΡˆΡ‚Π°ΡšΠ° Ρƒ ΠΏΡ€ΠΎΠ΄Π°Ρ˜Ρƒ ВСстЀлигхт.

НСопходни услови Π·Π° ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ су Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° потписа Ρƒ Апп Π‘Ρ‚ΠΎΡ€Π΅-Ρƒ ΠΈ присуство гСнСрисаних АПИ ΠΊΡ™ΡƒΡ‡Π΅Π²Π°.

ΠŸΠΎΡΡ‚ΠΎΡ˜ΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅:

  • ΠΏΡ€Π΅ΠΊΠΎ ΠšΡΡ†ΠΎΠ΄Π΅-Π° (ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€),
  • ΠΏΡ€Π΅ΠΊΠΎ Π°Π»Π°Ρ‚Π°,
  • ΠΏΡ€Π΅ΠΊΠΎ Апплицатион Π›ΠΎΠ°Π΄Π΅Ρ€-Π° Π·Π° ΡΡ‚Π°Ρ€ΠΈΡ˜Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ ΠšΡΡ†ΠΎΠ΄Π΅-Π° (сада ВранспортСр).

Π—Π° аутоматско ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ сС користи Π°Π»Ρ‚ΠΎΠΎΠ», који Ρ‚Π°ΠΊΠΎΡ’Π΅ ΠΈΠΌΠ° Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π° Π°ΡƒΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅:

  • ПосСбна Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ,
  • АПИ ΠΊΡ™ΡƒΡ‡.

ΠŸΠΎΠΆΠ΅Ρ™Π½ΠΎ јС Π΄Π° ΠΏΡ€Π΅ΡƒΠ·ΠΌΠ΅Ρ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ користСћи АПИ ΠΊΡ™ΡƒΡ‡.

Π”Π° бистС Π΄ΠΎΠ±ΠΈΠ»ΠΈ АПИ ΠΊΡ™ΡƒΡ‡, ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° Π²Π΅Π·Π° ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠ΅ ΠΊΡ™ΡƒΡ‡. ΠŸΠΎΡ€Π΅Π΄ самог ΠΊΡ™ΡƒΡ‡Π° Ρƒ *.ΠΏ8 Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ, Π±ΠΈΡ›Π΅ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: Π˜ΡΡΡƒΠ΅Ρ€Π˜Π” ΠΈ ΠšΠ΅ΠΈΠ˜Π”.

ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ ΠΈ испорукС иОБ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

Π—Π°Ρ‚ΠΈΠΌ ΡƒΠ²Π΅Π·ΠΈΡ‚Π΅ ΠΏΡ€Π΅ΡƒΠ·Π΅Ρ‚ΠΈ ΠΊΡ™ΡƒΡ‡ Π½Π° сСрвСр Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ:

mkdir -p ~/.appstoreconnect/private_keys
mv ~/Downloads/AuthKey_${KeyID}.p8 ~/.appstoreconnect/private_keys/

ΠŸΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π΅ΠΌΠΈΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Π½Π° ВСстЀлигхт, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ јС Π΄Π° ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ, ΠΌΠΈ Ρ‚ΠΎ Ρ€Π°Π΄ΠΈΠΌΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

xcrun altool 
--validate-app 
-t ios 
-f $(find "$ProjectDir" -name "*.ipa") 
--apiKey β€œ$KeyID” 
--apiIssuer β€œ$IssuerID” 

Π³Π΄Π΅ apiKey ΠΈ apiIssuer ΠΈΠΌΠ°Ρ˜Ρƒ врСдности ΠΏΠΎΡ™Π° са страницС Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡΠ°ΡšΠ΅ АПИ ΠΊΡ™ΡƒΡ‡Π΅Π²Π°.

Π—Π°Ρ‚ΠΈΠΌ, Π½Π°ΠΊΠΎΠ½ ΡƒΡΠΏΠ΅ΡˆΠ½Π΅ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡ˜Π΅, ΡƒΡ‡ΠΈΡ‚Π°Π²Π°ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ са ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ --upload-app са истим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠΌΠ°.

ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Ρ›Π΅ АпплС тСстирати Ρƒ Ρ€ΠΎΠΊΡƒ ΠΎΠ΄ јСдног ΠΈΠ»ΠΈ Π΄Π²Π° Π΄Π°Π½Π°, Π° Π·Π°Ρ‚ΠΈΠΌ Ρ›Π΅ постати доступна спољним тСстСрима: Π±ΠΈΡ›Π΅ ΠΈΠΌ послатС Π²Π΅Π·Π΅ Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Ρƒ ΠΏΡƒΡ‚Π΅ΠΌ Π΅-ΠΏΠΎΡˆΡ‚Π΅.

Π”Ρ€ΡƒΠ³ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΏΡ€Π΅ΡƒΠ·ΠΈΠΌΠ°ΡšΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΏΡ€Π΅ΠΊΠΎ Π°Π»Ρ‚ΠΎΠΎΠ»-Π° јС ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π»ΠΎΠ·ΠΈΠ½ΠΊΠ΅ спСцифичнС Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ.

Π”Π° бистС Π΄ΠΎΠ±ΠΈΠ»ΠΈ посСбну Π»ΠΎΠ·ΠΈΠ½ΠΊΡƒ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ, ΠΌΠΎΡ€Π°Ρ‚Π΅ Π΄Π° ΠΎΠ΄Π΅Ρ‚Π΅ Π½Π° Π²Π΅Π·Π° ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡˆΠΈΡ‚Π΅ Π³Π° Ρƒ ΠΎΠ΄Π΅Ρ™ΠΊΡƒ БСзбСдност.

ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ ΠΈ испорукС иОБ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

Π—Π°Ρ‚ΠΈΠΌ Π±ΠΈ Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ запис сСрвСра Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄ΡšΡƒ Ρƒ ΠšΠ΅ΠΈΡ†Ρ…Π°ΠΈΠ½-Ρƒ са ΠΎΠ²ΠΎΠΌ Π»ΠΎΠ·ΠΈΠ½ΠΊΠΎΠΌ. Од Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ 11 ΠšΡΡ†ΠΎΠ΄Π΅-Π° ΠΎΠ²ΠΎ сС ΠΌΠΎΠΆΠ΅ ΡƒΡ€Π°Π΄ΠΈΡ‚ΠΈ ΠΏΠΎΠΌΠΎΡ›Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:

xcrun altool --store-password-in-keychain-item "Altool" -u "$DeveloperName" -p $AppPswd

Π“Π΄Π΅ јС:

$DeveloperName β€” Π½Π°Π·ΠΈΠ² Π½Π°Π»ΠΎΠ³Π° иОБ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€Π° који сС користи Π·Π° ΠΏΡ€ΠΈΡ˜Π°Π²Ρƒ Π½Π° АпплС услугС.

$AppPswd β€” гСнСрисана посСбна Π»ΠΎΠ·ΠΈΠ½ΠΊΠ° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ.

Π—Π°Ρ‚ΠΈΠΌ добијамо врСдност ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° асц-ΠΏΡ€ΠΎΠ²ΠΈΠ΄Π΅Ρ€ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π°Π²Π°ΠΌΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ ΡƒΠ²ΠΎΠ·Π° Π»ΠΎΠ·ΠΈΠ½ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:

xcrun altool --list-providers -u "$DeveloperName" -p "@keychain:Altool"

Π”ΠΎΠ±ΠΈΡ˜Π°ΠΌΠΎ ΠΈΠ·Π»Π°Π·:

Provider listing:
- Long Name - - Short Name -
XXXXXXX        XXXXXXXXX

Као ΡˆΡ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° врСдност ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ ΠΈΠΌΠ΅Π½Π° (асц-ΠΏΡ€ΠΎΠ²ΠΈΠ΄Π΅Ρ€) ΠΏΠΎΠΊΠ»Π°ΠΏΠ° сС са ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ $Π’Π΅Π°ΠΌΠ˜Π” који смо користили ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΈΠ·Ρ€Π°Π΄Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅.

Π”Π° бистС ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈΠ»ΠΈ ΠΈ ΡƒΡ‡ΠΈΡ‚Π°Π»ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Ρƒ Ρƒ ВСстЀлигхт, користитС Π½Π°Ρ€Π΅Π΄Π±Ρƒ:

xcrun altool 
--(validate|upload)-app   
-f $(find "$ProjectDir" -name "*.ipa") 
-u "$DeveloperName" 
-p "@keychain:Altool" 

Као врСдност ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -p ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π΅Ρ‚ΠΈ врСдност $AppPswd Ρƒ Π½Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΎΠΌ (Сксплицитном) ΠΎΠ±Π»ΠΈΠΊΡƒ.

ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС Π²Π΅Ρ› ΠΏΠΎΠΌΠ΅Π½ΡƒΡ‚ΠΎ, са ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡˆΡ‚Π° пСрформанси, Π±ΠΎΡ™Π΅ јС ΠΈΠ·Π°Π±Ρ€Π°Ρ‚ΠΈ АПИ ΠΊΡ™ΡƒΡ‡ Π·Π° Π°Π»Ρ‚ΠΎΠΎΠ» Π°ΡƒΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Ρƒ, Ρ˜Π΅Ρ€ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ ΠšΡΡ†ΠΎΠ΄Π΅-Π° ΠΈΠΌΠ°Ρ˜Ρƒ ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ (β€žΠ½Π΅ Π²ΠΈΠ΄ΠΈβ€œ ΠšΠ΅ΠΈΡ†Ρ…Π°ΠΈΠ½, Π³Ρ€Π΅ΡˆΠΊΠ΅ ΠΏΡ€ΠΈ Π°ΡƒΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ˜ΠΈ Ρ‚ΠΎΠΊΠΎΠΌ ΠΎΡ‚ΠΏΡ€Π΅ΠΌΠ°ΡšΠ° ΠΈΡ‚Π΄.).

Π’ΠΎ јС свС, Π·Π°ΠΏΡ€Π°Π²ΠΎ. Π–Π΅Π»ΠΈΠΌ свима који су ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½ΠΈ Ρƒ ΡƒΡΠΏΠ΅ΡˆΠ½Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π΅ ΠΈ издања Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρƒ Апп Π‘Ρ‚ΠΎΡ€Π΅-Ρƒ.

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

Π”ΠΎΠ΄Π°Ρ˜ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€