Небольшая предыстория зачем все это может быть нужно. Недавно столкнулся с ситуацией, когда заказчику было необходимо реанимировать заблокированный старый проект, добавить фичи и снова разместить в 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 на втором рисунке).

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

Комментарии (0)