- Signing Your Applications
- In this document
- See also
- Signing Overview
- Signing in Debug Mode
- Signing in Release Mode
- Signing Android Wear Apps
- Signing Your App in Android Studio
- Automatically Signing Your App
- Signing Considerations
- Securing Your Private Key
- Expiry of the Debug Certificate
- Signing Your App Manually
- Публикуем приложения в Google Play и зарабатываем миллионы
- Шаг первый. Он трудный самый
- v2 Full APK
- Шаг второй. Надо, Федя, надо
- Шаг третий. Со счастливым концом
- Ищет милиция, ищут пожарные
- Где деньги, Зин
- Открыть страницу приложения в Google Play
- Продвижение
- Автоматическое обновление
- Следим за отзывами
- Меняем пароли хранилища и псевдонима ключа
- Подписываем готовое приложение
- Хранение ключей у Гугла
- App Bundle
- Дополнительное чтение
Signing Your Applications
In this document
See also
Android requires that all apps be digitally signed with a certificate before they can be installed. Android uses this certificate to identify the author of an app, and the certificate does not need to be signed by a certificate authority. Android apps often use self-signed certificates. The app developer holds the certificate’s private key.
Signing Overview
You can sign an app in debug or release mode. You sign your app in debug mode during development and in release mode when you are ready to distribute your app. The Android SDK generates a certificate to sign apps in debug mode. To sign apps in release mode, you need to generate your own certificate.
Signing in Debug Mode
In debug mode, you sign your app with a debug certificate generated by the Android SDK tools. This certificate has a private key with a known password, so you can run and debug your app without typing the password every time you make a change to your project.
Android Studio signs your app in debug mode automatically when you run or debug your project from the IDE.
You can run and debug an app signed in debug mode on the emulator and on devices connected to your development manchine through USB, but you cannot distribute an app signed in debug mode.
By default, the debug configuration uses a debug keystore, with a known password and a default key with a known password. The debug keystore is located in $HOME/.android/debug.keystore, and is created if not present. The debug build type is set to use this debug SigningConfig automatically.
For more information about how to build and run apps in debug mode, see Building and Running.
Signing in Release Mode
In release mode, you sign your app with your own certificate:
- Create a keystore. A keystore is a binary file that contains a set of private keys. You must keep your keystore in a safe and secure place.
- Create a private key. A private key represents the entity to be identified with the app, such as a person or a company.
Add the signing configuration to the build file for the app module:
The package in app/build/apk/app-release.apk is now signed with your release key.
Note: Including the passwords for your release key and keystore inside the build file is not a good security practice. Alternatively, you can configure the build file to obtain these passwords from environment variables or have the build process prompt you for these passwords.
To obtain these passwords from environment variables:
To have the build process prompt you for these passwords if you are invoking the build from the command line:
After you complete this process, you can distribute your app and publish it on Google Play.
Warning: Keep your keystore and private key in a safe and secure place, and ensure that you have secure backups of them. If you publish an app to Google Play and then lose the key with which you signed your app, you will not be able to publish any updates to your app, since you must always sign all versions of your app with the same key.
The rest of this document provides detailed instructions about how to generate a private key and sign your apps in release mode with Android Studio.
Signing Android Wear Apps
When publishing Android Wear apps, you package the wearable app inside of a handheld app, because users cannot browse and install apps directly on the wearable. Both apps must be signed. For more information on packaging and signing Android Wear apps, see Packaging Wearable Apps.
Signing Your App in Android Studio
To sign your app in release mode in Android Studio, follow these steps:
- On the menu bar, click Build >Generate Signed APK.
On the Generate Signed APK Wizard window, click Create new to create a new keystore.
If you already have a keystore, go to step 4.
On the New Key Store window, provide the required information as shown in figure 1.
Your key should be valid for at least 25 years, so you can sign app updates with the same key through the lifespan of your app.
Figure 1. Create a new keystore in Android Studio.
On the Generate Signed APK Wizard window, select a keystore, a private key, and enter the passwords for both. Then click Next.
Figure 2. Select a private key in Android Studio.
On the next window, select a destination for the signed APK and click Finish.
Figure 3. Generate a signed APK in Android Studio.
Automatically Signing Your App
In Android Studio, you can configure your project to sign your release APK automatically during the build process:
- On the project browser, right click on your app and select Open Module Settings.
- On the Project Structure window, select your app’s module under Modules.
- Click on the Signing tab.
Select your keystore file, enter a name for this signing configuration (as you may create more than one), and enter the required information.
Figure 4. Create a signing configuration in Android Studio.
Under Signing Config, select the signing configuration you just created.
Figure 5. Select a signing configuration in Android Studio.
You can also specify your signing settings in Gradle configuration files. For more information, see Configuring Gradle Builds.
Signing Considerations
You should sign all of your apps with the same certificate throughout the expected lifespan of your applications. There are several reasons why you should do so:
- App upgrade: When the system is installing an update to an app, it compares the certificate(s) in the new version with those in the existing version. The system allows the update if the certificates match. If you sign the new version with a different certificate, you must assign a different package name to the application—in this case, the user installs the new version as a completely new application.
- App modularity: Android allows apps signed by the same certificate to run in the same process, if the applications so requests, so that the system treats them as a single application. In this way you can deploy your app in modules, and users can update each of the modules independently.
- Code/data sharing through permissions: Android provides signature-based permissions enforcement, so that an app can expose functionality to another app that is signed with a specified certificate. By signing multiple apps with the same certificate and using signature-based permissions checks, your apps can share code and data in a secure manner.
If you plan to support upgrades for an app, ensure that your key has a validity period that exceeds the expected lifespan of that app. A validity period of 25 years or more is recommended. When your key’s validity period expires, users will no longer be able to seamlessly upgrade to new versions of your application.
If you plan to publish your apps on Google Play, the key you use to sign these apps must have a validity period ending after 22 October 2033. Google Play enforces this requirement to ensure that users can seamlessly upgrade apps when new versions are available.
Securing Your Private Key
Maintaining the security of your private key is of critical importance, both to you and to the user. If you allow someone to use your key, or if you leave your keystore and passwords in an unsecured location such that a third-party could find and use them, your authoring identity and the trust of the user are compromised.
If a third party should manage to take your key without your knowledge or permission, that person could sign and distribute apps that maliciously replace your authentic apps or corrupt them. Such a person could also sign and distribute apps under your identity that attack other apps or the system itself, or corrupt or steal user data.
Your private key is required for signing all future versions of your app. If you lose or misplace your key, you will not be able to publish updates to your existing appn. You cannot regenerate a previously generated key.
Your reputation as a developer entity depends on your securing your private key properly, at all times, until the key is expired. Here are some tips for keeping your key secure:
- Select strong passwords for the keystore and key.
- Do not give or lend anyone your private key, and do not let unauthorized persons know your keystore and key passwords.
- Keep the keystore file containing your private key in a safe, secure place.
In general, if you follow common-sense precautions when generating, using, and storing your key, it will remain secure.
Expiry of the Debug Certificate
The self-signed certificate used to sign your application in debug mode has an expiration date of 365 days from its creation date. When the certificate expires, you will get a build error.
To fix this problem, simply delete the debug.keystore file. The default storage location is in
/.android/ on OS X and Linux, in C:\Documents and Settings\ \.android\ on Windows XP, and in C:\Users\ \.android\ on Windows Vista and Windows 7.
The next time you build, the build tools will regenerate a new keystore and debug key.
Note that, if your development machine is using a non-Gregorian locale, the build tools may erroneously generate an already-expired debug certificate, so that you get an error when trying to compile your application. For workaround information, see the troubleshooting topic I can’t compile my app because the build tools generated an expired debug certificate.
Signing Your App Manually
You do not need Android Studio to sign your app. You can sign your app from the command line using standard tools from the Android SDK and the JDK. To sign an app in release mode from the command line:
Generate a private key using keytool . For example:
This example prompts you for passwords for the keystore and key, and to provide the Distinguished Name fields for your key. It then generates the keystore as a file called my-release-key.keystore . The keystore contains a single key, valid for 10000 days. The alias is a name that you will use later when signing your app.
Compile your app in release mode to obtain an unsigned APK.
Sign your app with your private key using jarsigner :
This example prompts you for passwords for the keystore and key. It then modifies the APK in-place to sign it. Note that you can sign an APK multiple times with different keys.
Verify that your APK is signed. For example:
Align the final APK package using zipalign .
zipalign ensures that all uncompressed data starts with a particular byte alignment relative to the start of the file, which reduces the amount of RAM consumed by an app.
Источник
Публикуем приложения в Google Play и зарабатываем миллионы
Итак, за 30 дней вы научились создавать собственные приложения. Пора поделиться ими со всем миром и получить заветный миллион на блюдечке с голубой каёмочкой.
Так как мы волнуемся, то потренируемся на кошках. Возьмем, например, пример из статьи Пишем справочник и попытаемся выложить его в Google Play. Если все получится, то дальше будет проще.
Прежде чем приступать к дальнейшим операциям, убедитесь, что у вас готовы собственные значки для приложений и название программы. Будет очень странно увидеть в магазине приложений программу со стандартным значком и названием «HelloWorld». А также проверьте все записи в файле манифеста.
Шаг первый. Он трудный самый
Любое приложение, выкладываемое в магазин, должно иметь подписанный сертификат. Сертификат позволяет идентифицировать вас как автора программы. И если кто-то попытается выложить программу с таким же именем как у вас, то ему будет отказано из-за конфликта имён. Под именем приложения имеется в виду полное название пакета.
Когда вы запускали свои приложения на эмуляторе или своём телефоне, то среда разработки автоматически подписывала программу отладочным сертификатом. Для распространения через магазин отладочный сертификат не подходит, и вам нужно подписать приложение своим уникальным сертификатом. Это бесплатно, без регистрации и смс.
Создадим подписанный APK-файл, который является что-то типа исполняемым файлом как notepad.exe в Windows. Если у вас открыта среда разработки Android Studio, то выберите в меню Build | Generate Signed APK. .
Появится диалоговое окно мастера, которое необходимо заполнить данными.
В первом поле следует указать путь к хранилищу ключей. Если вам раньше приходилось создавать программы раньше, в том числе и в Eclipse, то можете указать уже существующее хранилище через кнопку Choose existing. . Если вы создаёте хранилище первый раз, то выбирайте кнопку Create new. . Появится новое диалоговое окно.
В первом поле Key store path нужно выбрать папку через кнопку . и ввести имя для файла с хранилищем, которому будет присвоено расширение jks.
Далее вы вернётесь обратно и продолжаете заполнять поля. Поля Password и Confirm в объяснении не нуждаются.
Теперь создаёте ключ для приложения. В поле Alias (Псевдоним) вводите понятное вам и котам название ключа. Не обязательно создавать псевдоним для каждого приложения, можете использовать один псевдоним для своих приложений и отдельные псевдонимы для приложений под заказ.
Для ключа также нужно создать пароль и подтвердить его.
Ключ расчитан на 25 лет. Поле Validity (years) оставляем без изменений (если у вас нет весомых причин в обратном).
Напоследок заполняете данные о себе.
Заполнив поля, вы вернёмся к самому первому окну мастера.
Нажимаем на кнопку Next и в следующем окне вводим ещё один пароль для доступа к базе паролей.
Возможно, этого шага у вас не будет. Он может появиться, если вы отметили флажком опцию «Запомнить пароль». Подробностей не помню, разберётесь сами.
Последний шаг — нажать кнопку Finish.
Раньше это был последний шаг. Сейчас появились новые флажки V1 (Jar Signature) и V2 (Full APK Signature). Отметьте как минимум первый вариант V1 — это соответствует старому способу. Второй способ считается более надёжным в плане взлома и его можно использовать для поздних API, на ваше усмотрение (см. ниже).
В результате сложных манипуляций с диалоговыми окнами у вас появится долгожданный APK — ваша прелесть, которая откроет дверь в мир богатства и счастья.
Нажав кнопку Show in Explorer, вы запустите Проводник на вашем компьютере с папкой, в которой находится подписанный файл.
Будьте аккуратны с созданным ключом. Именно он является гарантией, что новая версия программы написана вами. Поэтому, если вы потеряете созданный ключ, вам придется выкладывать программу под другим именем с новым ключом.
В студии предусмотрен режим автоматического создания подписанного приложения. Щёлкните правой кнопкой мыши на папке app и в контекстом меню выберите пункт Open Module Settings. Выберите раздел app в секции Modules. Выберите вкладку Signing. Нажимаете на кнопку с плюсиком и заполняете поля.
Переходите на вкладку Build Types и выбираете сборку release. В выпадающем списке Signing Config выбираете только что созданную конфигурацию. По умолчанию она имеет имя config.
Нажимаем OK для сохранения результатов.
Подписывать приложения можно и через командную строку без участия студии, если вы извращенец. Можете почитать в документацию на эту тему.
v2 Full APK
В 2017 году Google немного изменила процесс подписания. Теперь существуют две схемы получения подписи APK: v1 JAR и v2 Full APK.
Подпись v1 (который существовал с самого начала) не защищает некоторые части APK, такие как метаданные ZIP. Верификатор APK должен обрабатывать множество ненадёжных структур данных, а затем отбрасывать данные, которые не подписаны, что предоставляет большой простор для атаки. Кроме того, верификатор APK должен распаковать все сжатые записи, что тратит много времени и памяти. Для решения проблем была разработана новая версия v2 Full APK, которую вы встретите при подписании вашего приложения.
Схема v2 работает в Android 7.0 Nougat (API 25). Схема обеспечивает более быструю установку приложения и хорошую защиту от несанкционированных изменений в APK. Содержимое APK хешируется и подписывается, затем полученный блок подписи APK вставляется в APK.
Новый формат обратно совместим, поэтому APK, подписанные новой схемой, могут быть установлены на более ранних устройствах (которые будут просто игнорировать новую подпись), если эти APK также подписаны схемой v1.
В старых приложениях я оставляю флажок у первой версии. Возможно, позже заставят переходить на вторую версию принудительно. Важно учитывать, что подписывать схемой v1 нужно до подписания схемой v2, поскольку APK не пройдёт проверку по схеме v2, если он будет подписан дополнительными сертификатами после подписания схемой v2.
Строго говоря, вы можете apk-файл выложить у себя на сайте, и все ваши посетители могут его скачать и установить на телефон. Но это как-то несолидно в наш век нанотехнологий. Поэтому переходим к следующему шагу.
Шаг второй. Надо, Федя, надо
Следующий шаг очень неприятный. Вам нужно подарить 25 вечнозеленых чужому человеку. Чтобы вам было не так обидно, данную операцию назвали регистрационным взносом. Вам понадобится кредитная карточка с указанной суммой. Учтите, что Visa Electron, а уж тем более дисконтная карточка сети магазинов «Перекресток» вам не подойдут. Если у вас уже есть нужная карточка, то пропускаете этот абзац. Остальным могу посоветовать завести QIWI-кошелёк и там завести виртуальную карточку. Именно так я и поступил, так как идти в банк и писать всякие заявления было неохота.
Идём на страницу разработчиков, заполняем необходимые поля и расстаёмся с нужной суммой. Если операция пройдёт успешно, то вы сможете продвинуться дальше. В моем случае мне дважды отказывали, так как я пожадничал и положил на карточку меньшую сумму, чем требовалось (не учёл комиссию). Если вы позже доложили необходимую сумму, то не ждите, что её автоматически у вас спишут. Снова зайдите на страницу разработчика и отредактируйте данные о карточке (нужно еще раз написать код безопасности).
Шаг третий. Со счастливым концом
Если платёж прошел успешно, то ссылка на следующий шаг будет доступна и вы попадаете в специальный личный кабинет, где можете добавлять свои приложения.
Весь интерфейс на русском. Поэтому трудностей у вас не возникнет. Заливаем подготовленный APK-файл, а также необходимые картинки-скриншоты и значок.
Для своего первого приложения я не стал заморачиваться, а сделал всё на скорую руку.
В процессе добавления программы вы можете удалять картинки и файл приложения, снова их заливать и снова удалять. Иногда можно нажимать на кнопку Сохранить. Если вы сделаете что-то не так, то на странице появятся предупреждающие надписи. Если таких надписей нет, то можете смело нажимать на кнопку Публиковать. Всё! Ваше приложение доступно всему миру. За вами уже выехали.
Недавно в Google Play Developer Console добавили возможность тестирования приложений среди определённых пользователей. Если раньше вы загружали своё приложение и оно сразу становилось доступным всем, то теперь добавлены два промежуточных шага.
При загрузке новой версии приложения вам нужно выбрать раздел:
- АЛЬФА-ТЕСТИРОВАНИЕ
- БЕТА-ТЕСТИРОВАНИЕ
- РАБОЧАЯ ВЕРСИЯ
Если вы загрузите приложение в раздел Альфа-тестирования, то потом можете перевести его в бета-тестирование или сразу в Рабочую версию. Соответственно, из бета-тестирования можно перевести сразу в Рабочую версию. Обратно нельзя.
Если программа находится в стадии тестирования, то оно доступно только тестерам, другие пользователь не смогут найти вашу программу ни через поиск, ни по прямой ссылке.
Вам следует создать специальное сообщество в Google+ (указывается в настройках приложения) и пригласить туда нужных людей. Доверенные лица смогут затем перейти по ссылке play.google.com/apps/testing/com.yourdomain.package.
Ищет милиция, ищут пожарные
Когда вы публикуете свою программу, то она сразу попадает в магазин приложений без всякой модерации. Но найти её будет там не просто. Даже поиск по магазину вам не поможет. Нужно какое-то время, чтобы данные в магазине обновились и поисковый робот заметил вашу программу. Но я помогу вам бесплатным советом, как быстро найти свою программу в Google Play. А всё очень просто. Вспомните имя вашего пакета, который использовался при создании приложения — он и является ключом к разгадке. Заходим на сайт и вбиваем нужный адрес с указанием пакета в качестве ID:
И вы сразу окажетесь в нужном месте и можете раздать ссылку своим друзьям. В последнее время добавление/обновление программы происходит достаточно медленно. Поэтому не стоит сразу искать свою программу, подождите пару часов.
Где деньги, Зин
Какой вы быстрый, однако. Есть два способа зарабатывания денег на своем приложении. Либо надо зарегистрироваться как продавец, либо как участник рекламной сети AdMob.
Открыть страницу приложения в Google Play
Пользователи скачивают приложение и забывают отблагодарить разработчика. Надо аккуратно ему напомнить о гражданском долге — поставить высшую оценку вашей программе. Добавляете кнопку с текстом Оцените наше приложение и пишете небольшой код:
Учтите, что на эмуляторе код не сработает, так как в нём нет приложения Google Play. А пока можете зайти через телефон по указанному адресу и поблагодарить меня. Коты вам скажут Спасибо!.
Продвижение
На странице https://play.google.com/intl/ru_ru/badges/ на вкладке Badge Generator вы можете указать необходимые параметры, формирующие код для кнопки-баннера, который затем можете использовать в своём блоге или других местах. Например, так:
Автоматическое обновление
Если вы создали новую версию программы, исправив различные баги и добавив новые фотографии кота, то вам нужно в манифесте увеличить на единицу номер версии (атрибут versionCode) и заменить versionName для себя (будет показана на странице Google Play). В последних версиях студии данные свойства находятся теперь не в манифесте, а в файле build.gradle модуля вашего приложения. Закачайте новую версию на Google Play и пользователи получат обновление в автоматическом режиме.
Следим за отзывами
Установите на своём устройстве приложение Google Play Developer Console, чтобы не пропустить новый отзыв на вашу программу. Также вы можете просматривать статистику.
Меняем пароли хранилища и псевдонима ключа
Не пришлось пользоваться за несколько лет, поэтому не знаю, актуальна ли данная информация.
Допустим, вы продали свою программу с исходниками другой компании. Чтобы она могла выкладывать обновления программы, компания должна подписывать приложение тем же ключом, которым подписывали вы. Иначе программа будет считаться другой и придётся менять название пакета. Но тогда старые пользователи не смогут получить обновления.
Но если вы все свои программы подписываете одним и тем же ключом и паролем, например cat cat, то компания может подписать этим же ключом и другие ваши приложения, разместив свои программы с таким же именем пакета, и вы никому ничего не докажете.
Поэтому вам нужно позаботиться о смене ключа для передачи новому владельцу.
Предположим наше хранилище имеет структуру:
Сделайте копию вашего хранилища и сохраните его в другом месте. Это надо было сделать ещё при первом создании, потому что при потере хранилища вы не сможете восстановить доступ к своим программам при обновлении.
Сделайте копию вашего хранилища ещё раз и переименуйте его, например, new.keystore. С ним и будем работать.
Далее вам нужно изменить пароль хранилища, изменить псевдоним и изменить пароль псевдонима. Полученный файл передать новому владельцу.
Запускаем утилиту keytool с командой:
Вам будет предложено ввести текущий пароль, а затем ввести новый пароль и повторить его. Приблизительно так:
Первая часть задачи выполнена, пароль от хранилища изменён.
Если вы хотите также изменить и пароль от псевдонима, то снова запускаем утилиту с командой:
Вас попросят ввести текущий пароль от хранилища (ваш новый пароль), затем пароль для псевдонима. Вы можете ввести новый пароль и он заменит старый пароль.
Пароль от псевдонима изменён.
Если изменения пароля вам недостаточно и вы хотите изменить имя псевдонима (может вы использовали имя любимой кошки, зачем другим об этом знать), то продолжаем работу.
Вас попросят ввести пароль от хранилища, затем пароль для нового псевдонима (текущий пароль), затем новый пароль и повторить его. Имя псевдонима будет изменено.
Итак, нам понадобилось три шага, чтобы создать новое хранилище и псевдоним для передачи чужому человеку. Новый владелец должен проделать тоже самое, чтобы быть уверенным, что вы не воспользуетесь изменённым файлов в своих целях. Впрочем, это уже его проблемы.
Подписываем готовое приложение
Такой случай может подвернуться, когда у вас утеряны исходники и есть только APK. Скорее всего это актуально для пиратов, которые переподписывают другие приложения (не делайте так с чужими программами).
Сначала поменяйте расширение с apk на zip. В архиве удалите папку META-INF. Восстановите расширение. Вы удалили старую подпись.
Теперь нужно подписать приложение новым ключом. Введите команду.
jarsigner -keystore keystore-file.jks -storepass keystore_password -keypass alias_password —signedjar signed-apk-file.apk apk-file.apk alias_name
В успешном случае получите сообщение, что приложение подписано. Далее выполняем ещё одну команду.
ANDROID_SDK_PATH/build-tools/LAST_BUILD_TOOLS_VERSION/zipalign -v 4 signed-apk-file.apk aligned-apk-file.apk
В результате должен получиться APK-файл, подписанный новым ключом. Сам ни разу не применял.
Хранение ключей у Гугла
В 2017 году Google добавил новую возможность хранить ключи в облачном хранилише. Основное отличие заключается в том, что вы подписываете приложение специальным ключом загрузки, который Google проверяет и удаляет, заменяя его оригинальным ключом подписи приложения, который вы предоставили.
С его помощью можно управлять ключами подписи приложений как для новых, так и для опубликованных приложений, которые будут храниться у Google в их собственном хранилище ключей. Чтобы присоединиться к этой программе, необходимо подписаться на неё в своей Google Play Console. Стоит отметить, что отписаться от неё уже будет невозможно.
Такой способ очень полезен — при потере хранилища ключей Google Play App Signing позволит сбросить ключ для установки нового. Вам не придётся публиковать приложение повторно с новым именем пакета и ключом.
App Bundle
Традиционный метод доставки пользователю вашего приложения через установку APK-файла имеет один существенный недостаток — пользователь получает кучу лишнего материала, которым он никогда не воспользуется. Например, ресурсы для других языков, картинки разных разрешений для каждого типа экрана. В итоге, готовое приложение раздувается и занимает большой объём.
Новый формат (доступен в Android 3.2 и выше) позволяет пользователю скачать специальную версию вашего приложения, которые содержит только нужный язык (value-en/strings.xml), картинку нужного разрешения (xxhdpi) и другие специфичные ресурсы. В результате итоговое приложение получается гораздо меньше по размеру.
Новый формат App Bundle имеет расширение .aab (Android App Bundle). Файл с этим расширением вы загружаете в Play Store вместо apk-файла. На основе вашего файла магазин приложений создаст различные варианты вашего приложения (apk).
Просмотреть структуру App Bundle можно через меню Build | Build Bundle(s)/APK(s) | Build Bundle(s). Сначала студия покажет всплывающее окно с указанием местоположения созданного файла.
Переходим по ссылке locate и видим наш файл app-debug.aab. Путь к файлу может быть таким: ..\YourApp\app\build\outputs\bundle\debug. Файл является стандартным zip-файлом, который можно посмотреть через любой подходящий архиватор.
Архив состоит из папок base, BUNDLE_METADATA и файла BundleConfig.pb.
Также могут быть директории с дополнительными особенностями, в этом случае каждой из них присваивается специальное имя feature1, feature2 и др.
Для создания подписанного файла используем Build | Generate Signed Bundle/APK. . В диалоговом окне выбираем опцию Android App Bundle и нажимаем Next.
Теперь при загрузке приложения в Play Store вы выбираете не apk-файл, а созданный aab-файл. После этого вы можете посмотреть, какую выгоду получит пользователь при загрузке своего варианта.
Если вам интересно посмотреть, как генеруются отдельные apk-файлы на основе App Bundle, то можете установить утилиту командной строки Bundletool.
Дополнительное чтение
Android-keystore-password-recover by MaxCamillo — если вы утеряли пароль, то попробуйте воспользоваться данным инструментом. Сам не пользовался, поэтому рассказывать не буду.
Источник