Как создать apk файл в android studio

Обновлено: 01.07.2024

Создание APK или подписанного пакета из Android Studio - это необходимый шаг для настройки приложения в Google Play Store, так как пакет приложений Google Android и пакет Google Play APK - это пакеты, которые необходимо создать, чтобы загрузить пакет приложений в Play Store‌ и иметь приложение опубликовано в GooglePlayStore.

Ниже приведен пример продолжения нашего примера создания лучшего бюджетного приложения для Android с использованием бесплатного существующего кода из партнерской программы TravelPayouts.

Создать подписанный пакет или APK из Android Studio

Создать подписанный пакет или APK из AndroidStudio‌ довольно просто, если вы можете использовать новый ключ загрузки и не забыли пароль своего ключа загрузки - иначе он не будет работать.

Чтобы создать APK из Android-студии, начните с открытия меню «Создать подписанный пакет» или «APK».

Затем выберите, хотите ли вы создать подписанный пакет приложений Google Android или Google Play APK.

Для того чтобы сгенерировать подписанный пакет, необходимо будет предоставить ключ. Если у вас есть существующий ключ, используйте кнопку «Выбрать существующий».

Если нет, начните создавать новый ключ.

Создать новый ключ загрузки Play Store

Чтобы создать новый ключ загрузки, введите всю необходимую информацию в форме: путь к хранилищу ключей, соответствующие пароли, псевдоним, соответствующий пароль ключа, срок действия в годах, имя и фамилия, организационная единица, организация, город или населенный пункт, штат или провинция и код страны ISO.

Затем сгенерируйте ключ, который будет сохранен на вашем компьютере.

Теперь можно создать свой пакет приложений Google Android, и вы можете загрузить пакет приложений в Play Store‌ - если только вы не столкнулись с проблемой, такой как использование нового ключа для уже существующего приложения.

Сбросить ключ загрузки Google Play

Чтобы сбросить ключ загрузки в Google Play, вам нужно связаться со службой поддержки Google Play и попросить их сбросить ключ загрузки.

Через некоторое время служба поддержки ответит на запрос о создании нового ключа, как описано выше, и о новом сертификате ключа в формате PEM.

Установите KeyStore Explorer, чтобы получить сертификат PEM.

Загрузите и установите его, чтобы получить этот сертификат PEM.

После этого запустите приложение из меню «Пуск» Windows.

Установите Java для KeyStore Explorer

Может потребоваться установить последнюю версию Java, прежде чем можно будет запустить программу KeyStore Explorer и получить сертификат PEM.

Получите сертификат ключа PEM от ключа загрузки

После установки Java-программы вы, наконец, сможете установить программу KeyStore Explorer.

Выберите для начала открыть существующее хранилище ключей.

Затем найдите на своем компьютере ключ в формате .jks, который был создан ранее с помощью AndroidStudio.

Пароль будет запрошен, чтобы открыть этот ключ, и вы должны будете предоставить его, чтобы ввести его детали.

После того, как ключ был открыт, дважды щелкните по нему, чтобы использовать его для загрузки пакета приложений в Play Store, дважды щелкнув по нему.

Все детали будут отображены, и вы сможете нажать на кнопку PEM, чтобы получить доступ к знаменитому сертификату PEM.

Когда отобразится сертификат PEM, просто нажмите «Экспорт», чтобы сохранить его на своем компьютере, и отправьте этот файл в службу поддержки Google Play, чтобы сбросить ключ загрузки.

Через некоторое время они подтвердят, что ключ был сброшен, и что вы можете использовать новый ключ загрузки для генерации подписанных пакетов или APK для загрузки пакета приложений в Play Store - все еще потребуется несколько дней, чтобы новые ключи стали действительный.

Вся операция по сбросу ключа загрузки в Google Play занимает около недели, после чего можно будет снова загрузить комплект приложений Google Android в новом выпуске приложения.

Распространенные проблемы обновления релиза приложения

Обновление моего приложения для Android не развертывается: если новый выпуск не предлагается для загрузки пользователям, которые уже установили приложение, а выпуск приложения на консоли Google Play отображается как опубликованный со всеми живыми обновлениями, это может быть связано с тем, что код версии и название версии не были обновлены, что не позволяет пользователям телефонов идентифицировать обновление как новую версию.В Play Store установлена ​​новая версия приложения, но не отображается обновление

После создания приложения, его тестирования и отладки мы можем приступить к его публикации. Суть публикации заключается в создании файла с расширением .apk, которое будет представлять приложение, и его последующее размещение в Google Play Market или на других внешних сайтах. По умолчанию в процессе отладки и создания приложения файл apk уже создается, и мы можем его найти в папке проекта по пути Название_проекта\app\build\outputs\apk. По умолчанию файл называется app-debug.apk и представляет debug-версию.

Но для полноценно публикации данного файла может оказаться недостаточно. И нам еще дополнительно надо произвести некоторую подготовку проекта к релизу. Для это следует указать в файле манифеста у элемента <manifest> установлены атрибуты android:versionCode и android:versionName . Также в файле манифеста элемент <application> не должен содержать атрибута android:debuggable

Кроме того, на этом этапе можно установить иконку для приложения, которая будет отображаться на рабочем экране гаджета, название приложения (атрибут android:label у элемента), а также можно задать лицензионное соглашение.

В файле манифеста также следует определить название пакета (атрибут package элемента <manifest> ), которое будет использоваться для приложения в дальнейшем. По умолчанию при разработке в Android Studio пакеты приложений начинаются с com.example. Не стоит оставлять данное название, так как название пакета будет служить уникальным идентификатором вашего приложения. Например, ниже в моем случае названием пакета служит "com.maverics.eugene.telephonelist":

При этом если в файлах кода java название пакета в начале файла также должно соответствовать пакету приложения.

Установка требований

На этапе подготовки к релизу также можно установить требования к API. Например, наше приложение имеет определеную минимальную версию ОС Android, поэтому мы можем установить в файле манифеста соответствующие атрибуты у элемента <uses-sdk>

android:minSdkVersion — минимальная версия Android

android:targetSdkVersion — оптимальная версия API

android:maxSdkVersion — максимальная версия системы

Например, пусть минимальная версия Jelly Beans 4.1.2, а оптимальная KitKat 4.4.4:

Подпись приложения

Когда все уже готово, приложение для Android должно быть подписано сертификатом, благодаря которому можно идентифицировать автора приложения. Когда мы тестируем приложение, устанавливая его через Android Studio на устройство, то оно подписывается автоматически. Но для создания релиз-версии нам надо произвести дополнительно ряд действий.

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

Во-первых, в Android Studio выберем в меню пункт Build -> Generate Signed APK . После этого нам откроется окно мастера:

Generate Signed APK

Нажмем на кнопку Create new. . После этого нам откроется окно создания ключа:

Создание APK в Android

Введем в поле Key store path путь к файлу сетификата, который будет создан. Если указанной папки не существует, то ее надо создать или определить существующую папку.

В поле Password/Confirm указываем пароль.

В поле Alias указываем псевдоним. Можно поставить произвольное название.

В поле First and Last Name вписываем имя и фамилию. И далее пишим подразделение, организацию, город, страну и код страны.

В конце нажимаем OK.

После этого автоматически обновится первое окошко:

Создание подписанного APK и сертификата

Далее нажмем на кнопку Next:


Финальное окно покажет нам путь к каталогу, где будет находиться подписанное приложение apk в release-версии. Нажмем на Finish.

Теперь по указанному пути можно будет найти подписанный apk, который будет иметь название app-release.apk:


Мы можем переименовать файл, сохранив его расширение и выложить в Play Market или на любой сайт или сразу загрузить на мобильное устройство. После загрузки на телефон/планшет достоточно нажать на него, и с помощью стандартного установщика пакетов приложение будет установлено. Правда, здесь также надо учитывать, что если мы устанавливаем приложение не из Play Market, то в настройках надо разрешить установку из других источниках - Безопасность->Неизвестные источники (Разрешить установку приложений из других источников)

Постройте сами вместо того, чтобы загружать¶

AndroidAPS недоступен для скачивания из-за законодательства, касающегося медицинских устройств. Построить приложение для собственного использования вполне законно, но вам не разрешается передавать копию другим! См. раздел FAQ .

Важные Примечания¶

  • Используйте Android Studio версии 4.1.1 или новее для построения apk. не поддерживается в Android Studio 4.1.1.

** Конфигурация по требованию ** не поддерживается текущей версией модуля Android Gradle!

Рекомендуемые спецификации компьютеров для сборки файла apk¶

Имейте в виду, что и 64-разрядная процессор, и 64-разрядная ОС являются обязательным условием. Если ваша система не соответствует этому условию, вы должны изменить аппаратное или программное обеспечение или всю систему. Рекомендуется использовать SSD(Solid State Disk) вместо HDD(Hard Disk Drive), так как при создании APS-файла потребуется меньше времени. Рекомендация не является обязательной. Тем не менее, использовать HDD при создании apk файла можно,, если у вас много времени на завершение сборки.

Эта статья разделена на две части.¶

Общие замечания¶

В целом, шаги, необходимые для создания файла APK таковы:

Пошаговое руководство¶

Подробное описание шагов, необходимых для создания файла APK.

Установите git (если у вас его нет)¶

Следуйте инструкциям на странице установки git .

Установите Android Studio¶

Cледующие снимки экрана были сделаны c Android Studio версии 3.6.1. Экран может выглядеть несколько иначе в зависимости от используемой версии Android Studio. Но у вас должно получиться. Здесь можно найти помощь участников .

Одна из наиболее важных заповедей при установке Android Studio: ** Будьте терпеливы! ** Во время установки и настройки Android Studio загружает многие элементы, которые отнимают время.

Установите Android Studio и настройте при первом запуске.

Не импортируйте настройки

Решите, хотите ли вы совместно использовать данные с Google или нет.

Обмен данными с Google

Экран приветствия

Стандартная установка

Цветовая схема интерфейса

Подтвердить настройки

Загрузка компонентов

Задайте путь к git в параметрах¶

Убедитесь, что git установлен на вашем компьютере.

Параметры Android Studio с экрана приветствия

Windows¶

Нажмите на маленький треугольник рядом с Контролем Версий (1.) чтобы открыть подменю.

Параметры Android Studio

Если автоматическая настройка будет успешной, то будет показана версия git.

Автоматическая установка git успешно выполнена

Автоматическая установка git не выполнена

Перезагрузите компьютер, чтобы обновить системную среду.

Скачайте код AndroidAPS¶

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

Существует два варианта запуска нового проекта:

Извлечение проекта из системы управления версиями окна приветствия

Если вы уже открыли Android Studio и не видите экран приветствия, то выберите File (1.) > New (2.) > Project from Version Control. (3.)

Извлечение проекта из системы управления версиями в Android Studio

Выберите каталог для сохранения клонированного кода. (2.)

Клонирование репозитория

Нет фонового действия

Открытие репозитория

В правом нижнем углу появится информация о том, что в Android Studio выполняются фоновые задачи.

Фоновые задания

Предоставьте доступ, если ваш брандмауэр просит разрешения.

Разрешение брандмауэра (Java)

Лицензия SDK

Загрузите Android SDK¶

Нажмите Файл > Настройки.

Открыть настройки

Нажмите на маленький треугольник рядом с Appearance & Behaviour (1.).

Щелкните на небольшом треугольнике рядом с System Settings (2.) и выберите Android SDK (3.)

Параметры SDK

Подтвердите изменения, нажав кнопку OK.

Подтвердить изменения SDK

Принять лицензию SDK

Дождитесь завершения установки.

Ожидание во время установки SDK

Завершения установки пакета SDK

Android Studio может рекомендовать обновить систему gradle. Не обновляйте gradle! Это может привести к трудностям!

Не обновляем gradle

Создание подписанного APK¶

Подписание означает, что вы подписываете созданное вами приложение, но цифровым способом, как цифровым отпечатком пальца в самом приложении. Это необходимо потому, что Android имеет правило, согласно которому принимается только подписанный код для запуска по соображениям безопасности. Для получения дополнительной информации перейдите по этой ссылке.

Построение apk

Apk вместо пакета

В этом случае магазин ключей является всего лишь файлом, в котором хранится информация о цифровой подписи. Он зашифрован и информация защищена паролями.

Создание хранилища ключей

Нажмите на символ папки (1.), чтобы выбрать путь к хранилищу ключей.

Выберите путь к хранилищу ключей (2.). **Не сохраняйте в той же папке, что и проект. Необходимо использовать другой каталог! ** Одна из опций может быть ваша домашняя папка.

Введите имя файла для хранилища ключей (3).

Пароли для хранилища ключей и ключа не должны быть очень сложными. Обязательно запомните их или запишите в безопасное место. В случае, если вы не запомните пароли смотрите устранение неполадок для потерянных ключей .

Введите (5.) и подтвердите (6.) пароль для хранилища ключей.

Сделайте то же самое для ключа (7. + 8.).

Срок действия (9.) по умолчанию составляет 25 лет. Изменять значение по умолчанию не требуется.

Необходимо ввести имя и фамилию (10). Вся остальная информация необязательна.

Путь к магазину ключей

Убедитесь, что поле для запоминания паролей отмечено (1.). Так что вам не нужно вводить их снова при следующей сборке apk (то есть при обновлении до новой версии AndroidAPS).

Запомнить пароль

Отметьте флажки V1 и V2 для подписи версий (2.).

Нажмите Finish . (3.)

Завершение сборки

В случае, если сборка не удалась, обратитесь к разделу поиск и устранение неисправностей .

Построено успешно - журнал событий

В секции журнала событий нажмите «locate».

Журнал событий - обнаружить apk

app-full-release.apk это файл, который вы ищете.

Расположение файла apk

Перенос приложения на смартфон¶

Самый простой способ перенести приложение на ваш телефон - через кабель USB или Google Drive. Обратите внимание, что передача по почте может вызвать трудности и не является предпочтительным способом.

На вашем телефоне необходимо разрешить установку из неизвестных источников. Инструкции, как это сделать, можно найти в интернете (например здесь или здесь).


Андроид после того как вышел в 2007 году претерпел множество изменений связанный с билд процессом, средой исполнения и улучшениями производительности.

У андроида много удивительных характеристик и одна из них разные архитектуры процессоров такие как ARM64 и x86

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

image

Понимание Java виртуальной машины

JVM это виртуальная машина, позволяющая устройству запускать код, который скомпилирован в Java байткод

Используя JVM, вы избавляетесь от проблемы с разной архитектурой процессоров.

JVM предоставляет переносимость и она позволяет запускать Java код в виртуальной среде, вместо того, чтобы запускать его сразу «на железе»

Но JVM была создана для систем с большими мощностями по ресурсам, а наш андроид имеет сравнительно мало памяти и заряда батареи.

По этой причине Google создал адаптированную под андроид виртуальную машину, которая называется Dalvik.

image

Компилируем исходный код

image

Наш исходный Java код для андроида компилируется в класс файл .class с байткодом с помощью javac компилятора и запускается на JVM

Для котлина есть kotlinc компилятор, который делает совместимый с Java байткод.

Байткод — это набор инструкций, который выполняется на целевом устройстве.

Java байткод — это набор инструкций для Java виртуальной машины.

Андроид виртуальная машина

Каждое андроид приложение работает на своей виртуальной машине. С версий 1.0 до 4.4, это был Dalvik. В андроид 4.4, вместе с Dalvik, Google представил в качестве эксперимента новый андроид runtime, который назывался ART

Сгенерированный класс файл .class содержит JVM Java байткод.

Но у андроида есть свой собственный оптимизированный формат байткода, который называется Dalvik bytecode — это просто инструкции машинного кода для процессора также как и JVM байткод.

image

Комплияция в .dex файл

Во время компиляции происходит конвертация .class класс файл и .jar библиотеки в один classes.dex файл, который содержит Dalvik байткод.

Команда dx превращает все .class и .jar файлы в один classes.dex файл, который написан с форматом Dalvik байткода.

Dex — это аббревиатура с английского — Dalvik Executable.

image

ART против Dalvik

C версии 4.4 андроид мигрировал на ART. ART также работает с .dex файлом.

Преимущество ART над Dalvik проявляется в том, что приложения запускаются быстрее, потому что весь DEX байткод транслируется в машинный код во время установки, не нужно дополнительного времени на компиляцию в рантайме.

ART и Dalvik совместимы, так что приложения разработанные для Dalvik должны работать и на ART.

Компиляция Dalvik (JIT- just in time) имела такие минусы как — быстрая трата батареи, лаги в приложениях и плохой перформанс. В Dalvik трансляция происходит только когда это нужно. Мы открываем новый экран и только в этот момент происходит трансляция, за счет этого установка происходит быстрее, но при этом проседает перформанс.

Это причина по которой Google сделал Android Runtime (ART).

ART — основан на AOT (ahead of time) компиляции, она происходит до того как приложение запустится.

В ART компиляция происходит во время установки приложения. Это ведет к более долгому времени установки, но уменьшает трату батареи и избавляет от лагов, которые были на Dalvik.

Несмотря на то, что Dalvik был заменен на ART, .dex формат файлов еще используется

В андроид 7.0 JIT вернулся. Гибридная среда сочетает фичи как от JIT компиляции так и
от ART

Среда запуска байткода это очень важная часть андроида и она вовлечена в процесс запуска и установки приложения

image

Каждый этап описанного процесса

image

Source Code (Исходный код)

Это Java и Kotlin файлы в src пакете.

Resource Files

Файлы находящиеся в директории с ресурсами

AIDL Files

AIDL — аббревиатура Android Interface Definition Language, позволяет вам описать интерфейс межпроцессорного взаимодействия.

AIDL — может использоваться между любыми процессами в андроиде.

Library Modules

Модули библиотек содержат Java или Kotlin классы, компоненты андроида и ресурсы.

Код и ресурсы бибилотеки компилируются и пакуются вместе с приложением.

Поэтому модуль библиотеки может считаться компайл тайм артефактом.

AAR Libraries

Андроид библиотеки компилируются в AAR — android archive файл, который вы можете использовать как зависимость для вашего android app модуля.

AAR файлы могут содержать андроид ресурсы и файл манифеста, что позволяет вам упаковать туда общие ресурсы такие как layouts и drawables в дополнение к Java или Kotlin классам и методам.

JAR Libraries

JAR это Java библиотека и в отличие от AAR она не может содержать андроид ресурсы и манифесты.

Android Asset Packaging Tool

AAPT2 — аббревиатура (Android Asset Packaging Tool) — компилирует манифест и файлы ресурсов в один APK.

Этот процесс разделен на два шага компиляцию и линковку Это улучшает производительность так как если вы поменяете один файл, вам нужно компилировать только его и прилинковать к остальным файлам командой 'link'

AAPT2 может компилировать все типы андроид ресурсов, таких как drawables и XML файлы.

При вызове AAPT2 для компиляции, туда передается по одному ресурсному файлу на каждый вызов

Затем APPT2 парсит файл и генерирует промежуточный бинарный файл с расширением .flat

Фаза линковки склеивает все промежуточные файлы сгенерированные в фазе компиляции и дает нам на выход один .apk файл. Вы также можете сгенерировать R.java файл и правила для proguard в это же время.

resources.arsc

Полученный на выходе .apk файл не включает в себя DEX файл, APK не подписан и не может быть запущен на устройстве.

APK содержит AndroidManifest, бинарные XML файлы и resources.arsc

resource.arsc содержит всю мета информацию о ресурсах, такую как индексы всех ресурсов в пакете

Это бинарный файл и APK который может быть запущен. APK который вы обычно создаете и запускаете не сжат и может быть использован просто посредством размещения в памяти.

R.java файл это выходной файл вместе с APK ему назначен уникальный id, который позволяет Java коду использовать ресурсы во время компиляции.

arsc это индекс ресурса который используется во время запуска приложения

image

D8 и R8

Начиная с андроид студии 3.1 и далее, D8 был сделан дефолтным компилятором.

D8 производит более маленькие dex файлы с лучшей производительностью, если сравнивать со старым dx.

R8 используется для компиляции кода. R8 это оптимизированная версия D8

D8 играет роль конвертера класс файлов в Dex файлы, а также производит дешугаринг функций из Java 8 в байткод, который может быть запущен на андроиде

R8 оптимизирует dex байткод. Он предоставляет такие фичи как оптимизация, обфускация, удаление ненужных классов.

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

Обфускация имеет и другие преимущества для предотвращения реверс инжиниринга, но основная цель уменьшить размер.

Оптимизация уменьшает размер Dex файла путем переписывания ненужных частей кода и инлайнинга.

С помощью дешугаринга мы можем использовать удобные фичи языка Java 8 на андроиде.

image

Dex and Multidex

R8 дает на выходе один DEX файл, который называется classes.dex

Если количество методов приложения переваливает за 65,536, включая подключенные библиотеки, то произойдет ошибка при билде</b

The method ID range is 0 to 0xFFFF.

Другими словами, вы можете ссылаться на 65,536, или от 0 до. 65,535, если говорить цифрами

Чтобы избежать этого, нужно внимательно следить за зависимостями своего проекта и использовать R8, чтобы удалять неиспользуемый код, или включать мультидекс (multidex)

image

Подписывание APK файла

Все Apk файлы требуют цифровую подпись до того как они могут быть установлены на ваш девайс

Для дебаг билдов, андроид студия автоматически подписывает приложение используя дебажный сертификат сгенерированный с помощью android sdk tools.

Дебажный кейстор и дебажный сертификат создаются автоматически

Для релиз билдов вам нужен кейстор, которым вы подпишете свой apk файл. Вы можете создать APK файл в андроид студии через «Generated Signed Apk» опцию.

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