Как создать 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 . После этого нам откроется окно мастера:
Нажмем на кнопку Create new. . После этого нам откроется окно создания ключа:
Введем в поле Key store path путь к файлу сетификата, который будет создан. Если указанной папки не существует, то ее надо создать или определить существующую папку.
В поле Password/Confirm указываем пароль.
В поле Alias указываем псевдоним. Можно поставить произвольное название.
В поле First and Last Name вписываем имя и фамилию. И далее пишим подразделение, организацию, город, страну и код страны.
В конце нажимаем OK.
После этого автоматически обновится первое окошко:
Далее нажмем на кнопку 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 или нет.
Задайте путь к git в параметрах¶
Убедитесь, что git установлен на вашем компьютере.
Windows¶
Нажмите на маленький треугольник рядом с Контролем Версий (1.) чтобы открыть подменю.
Если автоматическая настройка будет успешной, то будет показана версия git.
Перезагрузите компьютер, чтобы обновить системную среду.
Скачайте код AndroidAPS¶
Если вы еще не перезагрузили компьютер после настройки пути к git в параметрах, сделайте это сейчас. Необходимо обновить системную среду.
Существует два варианта запуска нового проекта:
Если вы уже открыли Android Studio и не видите экран приветствия, то выберите File (1.) > New (2.) > Project from Version Control. (3.)
Выберите каталог для сохранения клонированного кода. (2.)
В правом нижнем углу появится информация о том, что в Android Studio выполняются фоновые задачи.
Предоставьте доступ, если ваш брандмауэр просит разрешения.
Загрузите Android SDK¶
Нажмите Файл > Настройки.
Нажмите на маленький треугольник рядом с Appearance & Behaviour (1.).
Щелкните на небольшом треугольнике рядом с System Settings (2.) и выберите Android SDK (3.)
Подтвердите изменения, нажав кнопку OK.
Дождитесь завершения установки.
Android Studio может рекомендовать обновить систему gradle. Не обновляйте gradle! Это может привести к трудностям!
Создание подписанного APK¶
Подписание означает, что вы подписываете созданное вами приложение, но цифровым способом, как цифровым отпечатком пальца в самом приложении. Это необходимо потому, что Android имеет правило, согласно которому принимается только подписанный код для запуска по соображениям безопасности. Для получения дополнительной информации перейдите по этой ссылке.
В этом случае магазин ключей является всего лишь файлом, в котором хранится информация о цифровой подписи. Он зашифрован и информация защищена паролями.
Нажмите на символ папки (1.), чтобы выбрать путь к хранилищу ключей.
Выберите путь к хранилищу ключей (2.). **Не сохраняйте в той же папке, что и проект. Необходимо использовать другой каталог! ** Одна из опций может быть ваша домашняя папка.
Введите имя файла для хранилища ключей (3).
Пароли для хранилища ключей и ключа не должны быть очень сложными. Обязательно запомните их или запишите в безопасное место. В случае, если вы не запомните пароли смотрите устранение неполадок для потерянных ключей .
Введите (5.) и подтвердите (6.) пароль для хранилища ключей.
Сделайте то же самое для ключа (7. + 8.).
Срок действия (9.) по умолчанию составляет 25 лет. Изменять значение по умолчанию не требуется.
Необходимо ввести имя и фамилию (10). Вся остальная информация необязательна.
Убедитесь, что поле для запоминания паролей отмечено (1.). Так что вам не нужно вводить их снова при следующей сборке apk (то есть при обновлении до новой версии AndroidAPS).
Отметьте флажки V1 и V2 для подписи версий (2.).
Нажмите Finish . (3.)
В случае, если сборка не удалась, обратитесь к разделу поиск и устранение неисправностей .
В секции журнала событий нажмите «locate».
app-full-release.apk это файл, который вы ищете.
Перенос приложения на смартфон¶
Самый простой способ перенести приложение на ваш телефон - через кабель USB или Google Drive. Обратите внимание, что передача по почте может вызвать трудности и не является предпочтительным способом.
На вашем телефоне необходимо разрешить установку из неизвестных источников. Инструкции, как это сделать, можно найти в интернете (например здесь или здесь).
Андроид после того как вышел в 2007 году претерпел множество изменений связанный с билд процессом, средой исполнения и улучшениями производительности.
У андроида много удивительных характеристик и одна из них разные архитектуры процессоров такие как ARM64 и x86
Невозможно скомпилировать код, который поддерживает каждую архитектуру. Вот именно поэтому используется Java виртуальная машина.
Понимание Java виртуальной машины
JVM это виртуальная машина, позволяющая устройству запускать код, который скомпилирован в Java байткод
Используя JVM, вы избавляетесь от проблемы с разной архитектурой процессоров.
JVM предоставляет переносимость и она позволяет запускать Java код в виртуальной среде, вместо того, чтобы запускать его сразу «на железе»
Но JVM была создана для систем с большими мощностями по ресурсам, а наш андроид имеет сравнительно мало памяти и заряда батареи.
По этой причине Google создал адаптированную под андроид виртуальную машину, которая называется Dalvik.
Компилируем исходный код
Наш исходный 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 байткод.
Комплияция в .dex файл
Во время компиляции происходит конвертация .class класс файл и .jar библиотеки в один classes.dex файл, который содержит Dalvik байткод.
Команда dx превращает все .class и .jar файлы в один classes.dex файл, который написан с форматом Dalvik байткода.
Dex — это аббревиатура с английского — Dalvik Executable.
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
Среда запуска байткода это очень важная часть андроида и она вовлечена в процесс запуска и установки приложения
Каждый этап описанного процесса
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 это индекс ресурса который используется во время запуска приложения
D8 и R8
Начиная с андроид студии 3.1 и далее, D8 был сделан дефолтным компилятором.
D8 производит более маленькие dex файлы с лучшей производительностью, если сравнивать со старым dx.
R8 используется для компиляции кода. R8 это оптимизированная версия D8
D8 играет роль конвертера класс файлов в Dex файлы, а также производит дешугаринг функций из Java 8 в байткод, который может быть запущен на андроиде
R8 оптимизирует dex байткод. Он предоставляет такие фичи как оптимизация, обфускация, удаление ненужных классов.
Обфускация уменьшает размер вашего приложения укорачивая названия классов, методов и полей.
Обфускация имеет и другие преимущества для предотвращения реверс инжиниринга, но основная цель уменьшить размер.
Оптимизация уменьшает размер Dex файла путем переписывания ненужных частей кода и инлайнинга.
С помощью дешугаринга мы можем использовать удобные фичи языка Java 8 на андроиде.
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)
Подписывание APK файла
Все Apk файлы требуют цифровую подпись до того как они могут быть установлены на ваш девайс
Для дебаг билдов, андроид студия автоматически подписывает приложение используя дебажный сертификат сгенерированный с помощью android sdk tools.
Дебажный кейстор и дебажный сертификат создаются автоматически
Для релиз билдов вам нужен кейстор, которым вы подпишете свой apk файл. Вы можете создать APK файл в андроид студии через «Generated Signed Apk» опцию.
Читайте также: