Небольшая предыстория зачем все это может быть нужно. Недавно столкнулся с ситуацией, когда заказчику было необходимо реанимировать заблокированный старый проект, добавить фичи и снова разместить в PlayMarket. Ключ который генерирует Google извлечь нельзя, генерируемые билды отличались подписью и не принимались. В итоге было принято решение зарегистрировать новый проект, но чтобы не зависеть в будущем от такой ситуации сделать собственный ключ.
Итак, пройдемся по всему процессу. Перед добавление версии сборки приложения в самом начале этого процесса консоль предложит выбрать ключ подписи.
![Рис.1 Выбор ключа подписи Рис.1 Выбор ключа подписи](https://habrastorage.org/getpro/habr/upload_files/a37/a34/ed1/a37a34ed1d6e6dfd096958b8aa9ca295.png)
Нам настоятельно рекомендуют использовать ключ сгенерированный Google, но мы идем другим путем. Выбираем опцию “Использовать другой ключ”. Затем остановимся на п.3 “Экспортировать и загрузить ключ на Java Keystore”. Если у вас уже есть ключ другого вашего приложения и вы планируете поддерживать экосреду приложений, то можно выбрать пункт 2. Но это будет потом, когда вы будете добавлять второе, третье и т.д. приложение. Сейчас мы добавляем условно первое.
![Рис. 2 Выбор параметра подписания приложения Untitled](https://habrastorage.org/getpro/habr/upload_files/796/b01/2f7/796b012f7aedc8f11133187d1bb368a5.png)
Нам понадобятся предложенные “Открытый ключ шифрования”(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, у вас может быть любая другая версия, которую вы установили.
![Рис. 3 Добавление переменной в переменную среду Untitled](https://habrastorage.org/getpro/habr/upload_files/bc5/8cf/736/bc58cf736a58d7e7bb5c05f92b92f18e.png)
Также открываем переменную Path и создаем в ней дополнительное значение %JAVA_HOME%\bin.
![Рис. 4 Добавление пути в список путей Untitled](https://habrastorage.org/getpro/habr/upload_files/8a9/564/8d8/8a95648d854519b4f334100b6b17e498.png)
Все это сохраняем (жмем OK). После этого открываем терминал (win+R → cmd) и проверяем подключилась ли Java. Устанавливаем путь:
C:\\Users\\user>set path=c:\\Program Files\\Java\\jdk-21.0.2\\
Проверяем подключение путем проверки версии:
C:\\Users\\user>java -version
Мы должны увидеть что-то вроде этого:
![Рис. 5 Результат проверки версии Java Untitled](https://habrastorage.org/getpro/habr/upload_files/c1d/8d4/ae7/c1d8d4ae7b772288b8ee70ba1aa22bb9.png)
Теперь переходим в папку где мы сохраняли необходимые для создания ключа файлы (в нашем случае это С:\Users\user\Desktop\MyKeyFile\)
![Рис. 6 Переход в папку с файлами для генерации ключа Untitled](https://habrastorage.org/getpro/habr/upload_files/e5a/47a/c2e/e5a47ac2eeb69827430daa2abd7cdfb8.png)
Остался последний шаг. Заполняем данными следующую команду в терминале:
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 на втором рисунке).
Если вы дошли до этой строки, поздравляю, у вас все получилось. Возможно есть другие пути достижения желаемого. Но хотелось поделиться своим опытом.