Навигация по сайту

Популярные статьи

Створення підпису додатка за допомогою Google Play App Signing

  1. Як скинути ключ завантаження?
  2. Як підписатися, якщо додаток вже опубліковано?

Post Views: 9 911

Post Views: 9 911

Оскільки ключ підпису використовується для перевірки того, що саме ви є розробником програми, і для забезпечення безпечних оновлень для ваших користувачів, забезпечення безпеки ключа дуже важливо як для вас, так і для користувачів. Існують різні способи підписання своїх додатків, один з таких ми розглянули в попередній статті .

Нещодавно Google додав нову можливість зберігати ключі: у своїй власній інфраструктурі завдяки Google Play App Signing . Основна відмінність тут полягає в тому, що ви підписуєте додаток спеціальним ключем завантаження, який Google перевіряє і видаляє, замінюючи його оригінальним ключем підпису додатка, який ви надали.

З його допомогою можна управляти ключами підпису додатків як для нових, так і для опублікованих додатків, які в свою чергу будуть зберігатися у Google в їх власному сховище ключів. Щоб приєднатися до цієї програми, необхідно підписатися на неї в своїй Google Play Console. Варто відзначити, що в наслідку відписатися від неї вже буде неможливо.

Таким чином, при підключенні до Google Play App Signing відбувається наступне:

  • Безстрокова реєстрація вашого застосування в програмі Google Play App Signing.
  • Передача вашого ключа підпису додатка в Google.
  • Реєстрація нового ключа завантаження для всіх наступних APK-файлів.

Такий спосіб дуже корисний, оскільки в разі, якщо ви втратили сховище ключів, Google Play App Signing дозволить скинути ключ для установки нового. Погодьтеся, це набагато простіше, ніж кожен раз публікувати додаток заново з новим ім'ям пакета і ключем.

Спробуємо, використовуючи цей спосіб, опублікувати новий додаток: Менеджер системних додатків .

Для початку необхідно створити ключ завантаження, за яким Google перевірятиме APK. Для цього засобами Android Studio через меню Build - Generate Signed APK створимо нове сховище ключів, в якому буде міститися наш ключ завантаження. Створення підпису додатка буде відбуватися за допомогою Gradle, а файл, що містить шлях до сховища та паролі, винесемо з проекту і будемо зберігати окремо.

signingConfigs {release {if (project.hasProperty ( "Keys.repo")) {def projectPropsFile = file (project.property ( "Keys.repo") + "/system-app-manager.properties") if (projectPropsFile.exists ()) {Properties props = new Properties () props.load (new FileInputStream (projectPropsFile)) storeFile file (file (project.property ( "Keys.repo") + props [ 'RELEASE_STORE_FILE'])) storePassword props [ 'RELEASE_STORE_PASS '] keyAlias ​​props [' RELEASE_ALIAS '] keyPassword props [' RELEASE_KEY_PASS ']}} else {println "============================ =========================== "println" [ERROR] - Please configure release-compilation environment - eg in ~ / .signing directory "println "================================================= ====== "}}}

Про те, як це можна зробити для свого застосування, можна почитати в даній статті .

Тепер перейдемо в консоль розробника. Створимо новий додаток і дамо йому назву. Після цього потрібно перейти в «Версії додатка» - «Управління робочою версією» - «Створити випуск«. Тут вам буде запропоновано підключитися до програмі Google Play App Signing, натискаємо «Продовжити«.

Тут вам буде запропоновано підключитися до програмі Google Play App Signing, натискаємо «Продовжити«

Якщо перейти в «Підписи додатки«, то можна виявити, що був створений сертифікат для підпису, однак сертифікат завантаження залишився порожнім. Це тому, що ми ще не завантажили перший підписаний APK файл.

Це тому, що ми ще не завантажили перший підписаний APK файл

Повернемося в створення випуску. Після отримання підтвердження про те, що ми підключилися до програми, можна перейти до завантаження APK.

Після отримання підтвердження про те, що ми підключилися до програми, можна перейти до завантаження APK

Тут потрібно завантажити APK файл свого застосування, підписаний ключем, який був створений вище. Цей ключ і стане ключем завантаження для додатка, яким ви повинні будете підписувати всі APK в майбутньому.

Після того, як ви завантажили APK, підписаний ключем завантаження, його сертифікат з'явиться в «Підписи додатки«.

Після заповнення всіх необхідних полів в консолі і публікації додатка в Google Play, в додатку вже буде використовуватися інший ключ підпису, який буде знаходитися у Google і відправлятися користувачам при завантаженні програми з маркету.

Дізнатися, що додаток підписано Google, а не самим розробником, можна за наступним елементу метаданих, що міститься в тегу <application> у файлі маніфесту:

<Meta-data android: name = "com.android.vending.derived.apk.id" android: value = "[ID]" />

Як скинути ключ завантаження?

У разі, якщо ви втратили свій ключ завантаження або він був викрадений ким-небудь, ви можете скинути його в консолі розробника. Щоб зробити це, потрібно:

  1. Створити новий ключ завантаження аналогічно тому, як це робилося на початку статті. Потім його потрібно буде експортувати в сертифікат PEM за допомогою наступної команди. keytool -export -rfc -alias upload -file <upload_certificate.pem> -keystore <keystore.jks>
  2. Після створення сертифіката потрібно звернутися в службу підтримки за наступною засланні , Заповнивши всі поля і прикріпивши файл сертифіката. Як тільки запит буде оброблений, вам на електронну пошту прийдуть інструкції по зміні ключа.

Завантажити опубліковане додаток і подивимося, що у нього всередині. Для цього скористаємося будь-яким декомпілятори APK файлів.

Якщо відкрити маніфест додатка, то всередині можна виявити ту саму рядок з метаданими, про яку ми говорили вище.

Якщо відкрити маніфест додатка, то всередині можна виявити ту саму рядок з метаданими, про яку ми говорили вище

Даний ідентифікатор буде використовуватися в інструментах звітності про помилки і по ньому можна визначити потрібний APK-файл.

На жаль, оптимізації APK не відбувається, як було заявлено розробниками. Google Play повинен надавати оптимізований APK з потрібними Локаль і щільністю екрану. Однак якщо подивитися, що знаходиться в ресурсах декомпільовану APK, то можна виявити там все локалізації, які були створені для додатка, і розмітки екранів з щільністю.

Крім декомпілятори це також можна перевірити утилітою aapt.exe (Android Asset Packaging Tool), яка входить до складу Android SDK. Для цього потрібно ввести наступну команду:

aapt dump badging apk_name.apk

apk

Як підписатися, якщо додаток вже опубліковано?

У разі, якщо ви хочете підписати своє опубліковане додаток на Google Play App Signing, то вам потрібно буде в консолі розробника відкрити проект програми та потім вибрати «Управління релізом» - «Версії додатка«.

У вікні, крім різний варіантів збірок і версій вашого додатка має з'явитися запрошення підключитися до Google Play App Signing.

Вам перекине на сторінку «Підписи додатків» з описом програми. Вам потрібно буде звідти завантажити утиліту PEPK і за допомогою неї виконати наступну команду, замінивши виділені ділянки на свої:

java -jar pepk.jar --keystore = ваше_храніліще_ключей.keystore --alias = імя_ключа --output = новий_путь_для_созданного_сертіфіката --encryptionkey = eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Ця утиліта дозволяє вам витягти певний ключ з сховища ключів і експортувати його в PEM сертифікат. Для прикладу спробуємо експортувати ключ для іншої програми. Після введення команди нас попросять ввести паролі від сховища і від ключа, і якщо все завершиться без помилок, значить операція виконана успішно.

Якщо PEPK видає помилку на неправильний alias, хоча ви повністю впевнені, що він вірний - спробуйте написати його тільки маленькими буквами, якщо в ньому є великі.

Потім на тій же сторінці в консолі розробника потрібно натиснути на «Закритий ключ для підпису додатка» і вибрати наш створений сертифікат. Таким чином Google зрозуміє, що саме ми є розробником програми. Після цього можна приступати до створення ключа завантаження, за яким в майбутньому буде відбуватися публікація всіх APK-файлів.

Для цього потрібно створити ключ тим же способом, яким ми створювали його на початку статті. Потім за допомогою стандартної утиліти Java під назвою Keytool потрібно буде експортувати ключ в PEM сертифікат за допомогою наступної команди:

keytool -export -rfc -keystore ваше_храніліще_ключей -alias імя_ключа -file путь_для_сертіфіката

На сторінці консолі розробника натискаємо «Сертифікат відкритого ключа завантаження» і вибираємо створений сертифікат з ключем завантаження.

Після виконаних операцій у нас стане активна кнопка «Зареєструвати», натискаємо її і, якщо немає ніяких помилок, Google Play App Signing буде підключений до вашого додатком і ви побачите відбитки сертифіката.

Тепер ви можете завантажувати нові APK, підписуючи їх своїм ключем завантаження, після чого Google буде замінювати його на ключ з власного сховища.

Нова технологія від Google трохи полегшила життя розробникам, будемо жати, коли вона дійсно полегшить вихідний APK-файл.

Читайте також

Як скинути ключ завантаження?
Як підписатися, якщо додаток вже опубліковано?