|
1 | | -Если у вас индивидуальный аккаунт разработчика (на физ. лицо), то сторонний разработчик не сможет выгрузить билд. Для этого владельцу аккаунта нужно сделать сертификаты вручную. |
| 1 | +Вы хотите добавить разработчика в аккаунт, чтобы он мог выгружать приложение. Если у вас аккаунт компании (юр. лица), то всё работает из коробки. |
2 | 2 |
|
3 | | -> Может появиться идея передать логин-пароль, так делать небезопасно |
| 3 | +Но если вы владелец индивидуального аккаунт (на физ. лицо), то сторонний разработчик не сможет выгрузить билд. Для этого владельцу такого аккаунта нужно сделать сертификаты. |
4 | 4 |
|
5 | | -Если у вас аккаунт компании (юр. лица), то сертификаты генерируются автоматически и делать ничего не нужно. |
| 5 | +> Передавать логин-пароль от вашего Apple ID — небезопасно, не делайте так |
6 | 6 |
|
7 | | -Статья написана по шагам, делать сверху-вниз: |
8 | | -- Сначала делаем подпись для сертификата |
| 7 | +Сертификаты можно сделать вручную или через API. В этой статье разберем ручной способ. |
| 8 | + |
| 9 | +Вот что будем делать по шагам: |
| 10 | +- Сначала запрос на подпись для сертификата |
9 | 11 | - Создадим сертификат |
10 | 12 | - Объединим этот сертификат с ключом |
11 | | -- Регистриурем приложение (если ещё не зарегистрировали) |
12 | | -- На основе сертификата сделаем профаил — именно он нужен, чтобы выгружать приложения |
| 13 | +- Регистриурем приложение (если ещё не нет) |
| 14 | +- На основе сертификата сделаем профайл — именно он нужен, чтобы выгружать приложения |
13 | 15 |
|
14 | 16 | # Запрос сертификата |
15 | 17 |
|
16 | | -Сначала сделаем специальный запрос — это файл с расширением `.certSigningRequest`. Этот файл нужен, чтобы сделать сертификат. |
| 18 | +Сначала сделаем специальный запрос на сертификат — это файл с расширением `.certSigningRequest`. |
17 | 19 |
|
18 | | -Откроем *Keychain Access* и создадим файл `CertificateSigningRequest.certSigningRequest`: |
| 20 | +Открываем *Keychain Access* и создаём файл `CertificateSigningRequest.certSigningRequest`: |
19 | 21 |
|
20 | 22 |  |
21 | 23 |
|
22 | | -Вводим почту и имя, выбираем *Saved to disk*. В следующем окне просто сохраните файл: |
| 24 | +Вводите почту и имя и выбираем *Saved to disk*. В следующем окне просто сохраните файл: |
23 | 25 |
|
24 | | - |
| 26 | + |
25 | 27 |
|
26 | 28 | У вас появится файл, он ещё пригодится: |
27 | 29 |
|
28 | 30 |  |
29 | 31 |
|
30 | | -# Делаем сертификат |
| 32 | +> Если у владельца акаунта нет macOS, то запрос-файл делает разработчик и отправляет владельцу аккаунта |
31 | 33 |
|
32 | | -Сертификат подтверждает что ваше приложение это именно оно. Расширение файла-сертификата `.cer`. |
| 34 | +# Делаем сертификат |
33 | 35 |
|
34 | | -> Для каждого нового приложения инструкцию нужно повторить |
| 36 | +Сертификат подтверждает что ваше приложение это именно оно. Расширение у файла-сертификата — `.cer`. |
35 | 37 |
|
36 | | -Откройте свой *Developer Account*, вкладка сертификаты: |
| 38 | +Откройте в *Developer Account* вкладку сертификаты: |
37 | 39 |
|
38 | 40 |  |
39 | 41 |
|
|
45 | 47 |
|
46 | 48 |  |
47 | 49 |
|
48 | | -На этой странице попросит файл-запрос на сертфиикат `.certSigningRequest`, который мы сделали выше. Выбирайте файл и идем дальше: |
| 50 | +На этой странице попросит файл-запрос на сертфиикат `.certSigningRequest`, который мы сделали выше. Выбирайте файл: |
49 | 51 |
|
50 | 52 |  |
51 | 53 |
|
52 | | -Сертификат готов. Скачайте его, он ещё пригодится: |
| 54 | +Сертификат готов — скачайте его, он ещё пригодится: |
53 | 55 |
|
54 | 56 |  |
55 | 57 |
|
56 | 58 | # Объединяем сертификат и ключ |
57 | 59 |
|
58 | | -Дальше нам нужен файл с расширением `.p12`. Он хранит связку сертификат + ключ. |
| 60 | +Дальше нужен файл с расширением `.p12`. Он хранит связку сертификат/ключ. |
59 | 61 |
|
60 | | -Кликните два раза по файлу `distribution.cer`, он должен открыться в *Keychain Access*. |
| 62 | +Кликните два раза по файлу `distribution.cer`, он откроется *Keychain Access*. |
61 | 63 |
|
62 | 64 | > Если ничего не происходит, просто найдите последний загруженный сертификат *Apple Distribution* по дате. Дата истечения будет через год |
63 | 65 |
|
64 | 66 |  |
65 | 67 |
|
66 | | -Разверните выпадайку слева от сертификата и выделите сертификат и приватный ключ. Дальше жмем правую кнопку и выбираем `Export 2 items...` |
| 68 | +Разверните выпадайку (слева от сертификата) и выделите сертификат и приватный ключ. Дальше нажмите правую кнопку и выберите `Export 2 items...` |
67 | 69 |
|
68 | | - |
| 70 | + |
69 | 71 |
|
70 | 72 | Сохраняем файл: |
71 | 73 |
|
72 | 74 |  |
73 | 75 |
|
74 | | -Дальше оставьте поля пустыми и нажмите ok: |
| 76 | +Ставим пароль сертификату, можно оставить пустым: |
75 | 77 |
|
76 | 78 |  |
77 | 79 |
|
|
81 | 83 |
|
82 | 84 | Получим файл `Certificates.p12`: |
83 | 85 |
|
84 | | - |
| 86 | + |
85 | 87 |
|
86 | 88 | # Регистрируем приложение |
87 | 89 |
|
88 | | -> Если у вас уже есть приложение, этот шаг можно пропустить |
| 90 | +> Если у вас уже есть приложение, этот шаг пропускаем |
89 | 91 |
|
90 | 92 | `App ID` это уникальный идентификатор приложения. Он связывает приложения с сервисами Apple, такими как Push Notifications, iCloud, Game Center и др. |
91 | 93 |
|
92 | | -Идем снова в *Developer account*, выбираем *Identifiers* и жмем плюс: |
| 94 | +Идем в *Developer Account* во вкладку *Identifiers* и жмем плюс: |
93 | 95 |
|
94 | 96 |  |
95 | 97 |
|
96 | 98 | Выбираем *App IDs*, далее *App*: |
97 | 99 |
|
98 | 100 |  |
99 | 101 |
|
100 | | -Здесь в *Description* вводим название приложения. В *Bundle ID* указываем бандл приложения. `Explicit` - используется для подписи только одного приложения. `Wildcard` - используется для подписи нескольких приложений. |
| 102 | +Здесь в *Description* введите название приложения, а в *Bundle ID* бандл. `Explicit` - используется для подписи только одного приложения. `Wildcard` - используется для подписи нескольких приложений. |
101 | 103 |
|
102 | | -> Подробнее про Explicit и Wildcard, [здесь](https://developer.apple.com/library/archive/qa/qa1713/_index.html): |
| 104 | +> Подробнее про Explicit и Wildcard [по ссылке](https://developer.apple.com/library/archive/qa/qa1713/_index.html): |
103 | 105 |
|
104 | 106 |  |
105 | 107 |
|
106 | | -Проверяем правильно ли все заполнили и жмем *Register*: |
| 108 | +Когда заполнили поля, жмём *Register*: |
107 | 109 |
|
108 | | -> Если получили ошибку проверьте поле Bundle ID, чаще всего проблема именно в нем. |
| 110 | +> Если получили ошибку проверьте поле Bundle ID |
109 | 111 |
|
110 | 112 |  |
111 | 113 |
|
112 | | -На странице *Identifiers* появится идентификатор вашего приложения: |
| 114 | +На странице *Identifiers* появится идентификатор нового приложения: |
113 | 115 |
|
114 | 116 |  |
115 | 117 |
|
116 | 118 | # Provisioning Profile |
117 | 119 |
|
118 | | -`Provisioning Profile` связывает всё вместе — Apple Developer Account, App ID, сертификаты и зарегистрированные устройства. Это файл с расширением `.mobileprovision`. |
| 120 | +`Provisioning Profile` связывает всё вместе — Apple Developer Account, App ID, сертификаты и устройства. |
119 | 121 |
|
120 | | -Идем во вкладку *Profiles* жмем кнопку *Generate a profile* или плюс: |
| 122 | +Это файл с расширением `.mobileprovision`. |
| 123 | + |
| 124 | +Идем во вкладку *Profiles*, жмем кнопку *Generate a profile*: |
121 | 125 |
|
122 | 126 |  |
123 | 127 |
|
124 | 128 | Выбираем *App Store Connect*: |
125 | 129 |
|
126 | 130 |  |
127 | 131 |
|
128 | | -В `App ID` выбираем нужный *Bundle ID* из списка: |
| 132 | +В `App ID` выбираем нужный `Bundle ID` из списка: |
129 | 133 |
|
130 | 134 |  |
131 | 135 |
|
132 | 136 | Выбираем недавно созданный сертификат (проверяй дату когда истекает): |
133 | 137 |
|
134 | 138 |  |
135 | 139 |
|
136 | | -В поле Provisioning Profile Name введите имя приложения + *Distribution*. Жмем *Generate*: |
| 140 | +Заполните имя *Provisioning Profile Name* и жмем *Generate*: |
137 | 141 |
|
138 | 142 |  |
139 | 143 |
|
140 | 144 | Осталось скачать файл: |
141 | 145 |
|
142 | 146 |  |
143 | 147 |
|
144 | | -Получаем файл `Appname_Distribution.mobileprovision`: |
| 148 | +Получаем файл с вашим именем и расгирением `.mobileprovision`: |
145 | 149 |
|
146 | 150 |  |
147 | 151 |
|
|
151 | 155 |
|
152 | 156 |  |
153 | 157 |
|
154 | | -Теперь разработчик идет в Xcode-проект. Нужно перейти в Project Settings и выбрать тарегт. На вкладке *Signing & Capabilities* отключаем `Automatically manage signing`, выбираем нужный Team ID и импортируем Provisioning Profile: |
| 158 | +Теперь разработчик идет в Xcode-проект в Project Settings и выбрать тарегт. На вкладке *Signing & Capabilities* отключаем `Automatically manage signing`, выбираем нужный Team ID и импортируем Provisioning Profile: |
155 | 159 |
|
156 | 160 |  |
157 | 161 |
|
158 | | -Теперь разработчик сможет выгружать приложения на ваш индивидуальный аккаунт. |
| 162 | +Готово! Теперь разработчик сможет выгружать приложения на индивидуальный аккаунт. |
| 163 | + |
| 164 | +> Инструкцию не нужно повторять для каждого приложения, а только если меняется Profile |
0 commit comments