Создание собственного ключа Android приложения

Небольшая предыстория зачем все это может быть нужно. Недавно столкнулся с ситуацией, когда заказчику было необходимо реанимировать заблокированный старый проект, добавить фичи и снова разместить в PlayMarket. Ключ который генерирует Google извлечь нельзя, генерируемые билды отличались подписью и не принимались. В итоге было принято решение зарегистрировать новый проект, но чтобы не зависеть в будущем от такой ситуации сделать собственный ключ.

Итак, пройдемся по всему процессу. Перед добавление версии сборки приложения в самом начале этого процесса консоль предложит выбрать ключ подписи.

Рис.1 Выбор ключа подписи

Рис. 1 Выбор ключа подписи

Нам настоятельно рекомендуют использовать ключ сгенерированный Google, но мы идем другим путем. Выбираем опцию «Использовать другой ключ». Затем остановимся на п.3 «Экспортировать и загрузить ключ на Java Keystore». Если у вас уже есть ключ другого вашего приложения и вы планируете поддерживать экосреду приложений, то можно выбрать пункт 2. Но это будет потом, когда вы будете добавлять второе, третье и т.д. приложение. Сейчас мы добавляем условно первое.

Untitled

Рис. 2 Выбор параметра подписания приложения

Нам понадобятся предложенные «Открытый ключ шифрования»(encryption_public_key.pem), «инструмент PEPK» (pepk.jar). Все это для удобства складываем в одну папку.

Если еще этого не сделали, в Android Studio создаем релиз Build/Generate signed bundle/apk, выбираем вариант Bundle (в этом случае при установке гугл будет формировать специальную версию приложения адаптированную к конкретному устройству на которое происходит установка — размер приложения устанавливаемый с PlayStore будет меньше). Создаем файл key-store: указываем директорию где будет храниться этот файл, key_store пароль (Key store password), псевдоним (alias) и key пароль (Key password). В сведениях достаточно указать имя пользователя (или можно заполнить все поля). Сгенерированный файл также добавляем в папку с ранее скаченными файлами. Пароли и псевдоним, естественно, записываем и сохраняем.

Следующим шагом является, если этого не было до этого — установка пакета Java. Скачиваем архив и разворачиваем его в любую папку (например, Program Files/Java). Однако скорее всего java.exe работать не будет и требуется еще некоторые дополнительные действия.

Произведем настройку системы (в моем случае это Windows). Нажимаем «win+R», вводим в окошке: control /name microsoft.system. В открывшихся параметрах системы выбираем «Дополнительные параметры системы» и нажимаем «Переменные среды…». Создаем системную переменную JAVA_HOME, в качестве значения указываем путь к папке где у нас находится файл java.exe. В нашем случае версия Java 21.0.2, у вас может быть любая другая версия, которую вы установили.

Untitled

Рис. 3 Добавление переменной в переменную среду

Также открываем переменную Path и создаем в ней дополнительное значение %JAVA_HOME%\bin.

Untitled

Рис. 4 Добавление пути в список путей

Все это сохраняем (жмем OK). После этого открываем терминал (win+R → cmd) и проверяем подключилась ли Java. Устанавливаем путь:

C:\\Users\\user>set path=c:\\Program Files\\Java\\jdk-21.0.2\\

Проверяем подключение путем проверки версии:

C:\\Users\\user>java -version

Мы должны увидеть что-то вроде этого:

Untitled

Рис. 5 Результат проверки версии Java

Теперь переходим в папку где мы сохраняли необходимые для создания ключа файлы (в нашем случае это С:\Users\user\Desktop\MyKeyFile\)

Untitled

Рис. 6 Переход в папку с файлами для генерации ключа

Остался последний шаг. Заполняем данными следующую команду в терминале:

c:\\Users\\user\\Desktop\\MyKeyFile>java -jar pepk.jar --keystore=store_key.jks --alias=myApp --output=output.zip --include-cert --rsa-aes-encryption --encryption-key-path=C:\\Users\\user\\Desktop\\MyKeyFile\\encryption_public_key.pem

где store_key.jks — это файл с ключом который мы создали ранее в Android Studio

myApp — имя псевдонима которое мы указывали при формировании файла ключа в Android Studio

C:\Users\user\Desktop\MyKeyFile\encryption_public_key.pem — соответственно путь к файлу encryption_public_key.pem

После запуска данной команды произойдет запрос ввода вначале пароля к key_store, затем запрос ввода пароля key. Вводим (хорошо, что мы их себе сохранили :))

Если пароли введены верно, в папке с нашими файлами появится новый файл — output.zip, который мы вставляем в соответствующее поле в консоли (см. пункт 4 на втором рисунке).

Если вы дошли до этой строки, поздравляю, у вас все получилось. Возможно есть другие пути достижения желаемого. Но хотелось поделиться своим опытом.

© Habrahabr.ru