Как создать app файл

Обновлено: 03.07.2024

На недавно прошедшей Google I/O 2018, среди множества нововведений, объявили также о добавлении нового формата приложений.

Этот формат получил название Android App Bundle и представляет собой улучшенный способ сборки вашего приложения. С его помощью можно легко оптимизировать размер приложения, при этом не нужно будет вносить какие-либо изменения в код. Android App Bundle включает весь скомпилированный код и ресурсы, отсеивая затем то, что не нужно конкретному устройству.

Важно! На данный момент Android App Bundle работает только в preview-версии Android Studio. Последняя версия Android Studio 3.2 Canary доступна здесь.

Android App Bundle представляет собой файл (с расширением .aab), который загружается в Google. Каждый бандл включает скомпилированный код и ресурсы для всех модулей приложения и поддерживаемых конфигураций устройств.

Проще говоря, бандлы это подписанные ZIP-файлы, которые упорядочивают код и ресурсы приложения в модули.


Из этих модулей Google Play генерирует различные APK, которые предоставляются пользователям, такие как: базовые APK, dynamic feature APK, конфигурационные APK и (для устройств, которые не поддерживают разделённые APK) мульти-APK. Каталоги, окрашенные в синий цвет, представляют собой код и ресурсы, которые Google Play использует для создания конфигурационного APK для каждого модуля.

Примечание: бандл нужно создавать для каждого уникального приложения или applicationID. То есть, если вы используете несколько product flavor в своём приложении для создания различных APK, и каждая из этих веток использует уникальный applicationID, то вам нужно будет создать отдельный бандл для каждой ветки.

Код и ресурсы для каждого модуля организованы аналогично стандартным APK, и это логично, поскольку каждый из этих модулей может быть сгенерирован как отдельный APK. Ниже можно увидеть более подробное описание некоторых файлов и каталогов Android App Bundle:

  • base/, feature1/, feature2/. Каждый из этих каталогов представляет собой модуль приложения. Базовый модуль приложения всегда содержится в базовом каталоге бандла. Директории же с дополнительными особенностями, каждой из которых присваивается специальное имя, находятся отдельно.
  • файлы Protocol Buffer (.pb). Эти файлы содержат метаданные, которые помогают описать содержимое бандла в магазинах приложений. Например, BundleConfig.pb, находящийся в корневом каталоге бандла, предоставляет информацию о самом бандле, например, какая версия build tools используется для сборки. Другие файлы, такие как recourse.pb и native.pb, описывают, как определённый код и ресурсы должны использоваться для различных конфигураций устройств. Google Play использует эту информацию для генерации APK, оптимизированного для устройства пользователя.
  • manifest/. В отличие от APK, бандлы хранят файл AndroidManifest.xml каждого модуля в отдельном каталоге.
  • dex/. В отличие от APK, бандлы хранят DEX-файлы каждого модуля в отдельном каталоге.
  • root/. Этот каталог хранит файлы, которые позже перемещаются в директорию root любого APK, который включает в себя модуль, в котором находится этот каталог. Например, каталог base/root/ бандла может включать ресурсы Java, которые загружаются приложением с помощью использования Class.getResources(). Эти файлы позже перемещаются в директорию root APK приложения и каждого мульти-APK, которые генерирует Google Play. Пути в этом каталоге также сохраняются, то есть, подкаталоги тоже перемещаются вместе с root.
    Примечание: если содержимое этого каталога конфликтует с другими файлами и каталогами в корне APK, Play Console отклонит загрузку бандла. Например, вы не сможете включить каталог root/lib/, поскольку он будет конфликтовать с каталогом lib, уже находящимся в APK.
  • res/, lib/, assets/. Эти каталоги идентичны тем, что используются в стандартном APK. При загрузке приложения, Google Play проверяет в этих каталогах и пакетах только те файлы, которые соответствуют конфигурации целевого устройства.


Если создаётся бандл для debug-версии приложения, Android Studio автоматически подпишет бандл с помощью отладочного ключа подписи. Для загрузки бандла в Google Play он должен быть подписан.

После того, как Android Studio завершит создание подписанного бандла, его можно будет открыть и проанализировать. Анализ бандла позволяет проверить содержимое и работает аналогично APK Analyzer.

Для создания App Bundle IDE использует тот же инструмент с открытыми исходным кодом, называемый bundletool, который Google Play использует для последующего преобразования бандла в подписанные APK.

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

После того, как Android Studio завершит создание подписанного бандла, его можно будет найти и проанализировать, выбрав соответствующую опцию во всплывающем уведомлении. Если был выбран экспорт ключа подписи, то к нему можно будет быстро перейти, щёлкнув по стрелке вниз в правом нижнем углу всплывающего уведомления, чтобы развернуть его, и затем выбрав Show Exported Key File.


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

  1. Зарегистрироваться в программе Google Play App Signing.
  2. Если приложение включает dynamic feature modules, то его можно загружать и тестировать через внутренний тестовый трек консоли Google Play. Однако чтобы опубликовать приложение, нужно принять программу Dynamic Feature, которая на данный момент находится в стадии бета-версии.
  3. Google Play поддерживает загрузку приложений размером не более 100 МБ.

Анализ APK с помощью проводника

Когда бандл загружен, Google Play автоматически генерирует разделённые APK и мульти-APK для всех конфигураций устройств, поддерживаемых приложением. В Play Console можно можно использовать App Bundle Explorer для просмотра всех вариантов APK, сгенерированных Google Play; анализа данных, таких как поддерживаемые устройства и экономия размера APK; загрузки созданных APK для тестирования.

Обновление приложения

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


Кроме того, Google на данный момент тестирует дополнение к App Bundle, Dynamic feature modules, с помощью которого можно разбивать базовый APK на части, которые будут докачиваться при необходимости, пока что эта технология находится в бета-версии.

Возможно, единственным недостатком банлдов на данный момент назвать необходимость использовать preview-версию Android Studio, однако эта проблема временная.

У вас есть проблема с открытием .APP-файлов? Мы собираем информацию о файловых форматах и можем рассказать для чего нужны файлы APP. Дополнительно мы рекомендуем программы, которые больше всего подходят для открытия или конвертирования таких файлов.

Для чего нужен файловый формат .APP?

Расширение .app преимущественно связано с форматом и типом файла "Application Bundle – Пакет приложения" (APP) в среде Apple Mac OS/iOS. Mac OS/iOS использует понятие пакета (bundle) в отношении приложений в качестве абстракции для упрощения работы с приложениями для пользователя.

Пакет приложения Mac OS/iOS представляет собой каталог, имя которого имеет расширение .app. Внутри такого APP-каталога (как на корневом уровне, так и в подкаталогах) находятся все файлы-ресурсы приложения. Файл с исполняемым кодом приложения также находится внутри пакета .app. Для пользователя весь каталог .app выглядит как единая исполняемая и конфигурируемая сущность ("приложение").

Файл .app — это контейнер, который непосредственно может быть использован (запущен) в среде Mac OS/iOS, при том, что структура контейнеров для Mac OS и iOS немного отличается. При распространении вне среды Mac OS/iOS пакеты приложений APP обычно оформляются в виде архивов ZIP, образов .dmg или пакетов .ipa (iOS).

Аналогичным образом, расширение .app также используется для обозначения файлов приложений для Symbian OS. Symbian OS — это устаревающая операционная система (ОС) и программная платформа для мобильных устройств, таких как смартфоны и коммуникаторы. Наиболее видным сторонником Symbian OS была компания Nokia, однако поддержка этой ОС с ее стороны постепенно прекращается.

Файл .app для Symbian OS представляет собой двоичный файл в исполняемом формате E32Image (E32), специально скомпилированный для исполнения мобильными устройствами архитектуры ARM ("Advanced RISC Machine – Усовершенствованная RISC-машина") под управлением Symbian OS. Обычно файлы приложений .app поставляются внутри архивов-контейнеров SIS (Software Installation Script – Сценарий установки ПО) или SISX (Signed SIS – Подписанный SIS) вместе с различными файлами ресурсов.

Применительно к СУБД, расширение .app может ассоциироваться с исполняемыми файлами FoxPro (APP) в среде FoxPro, устаревшей системы управления реляционными базами данных (СУРБД, RDBMS) от Microsoft. APP-файлы FoxPro — это двоичные скомпилированные исполняемые файлы (наподобие EXE), однако, в отличие от EXE, они не могут быть запущены сами по себе. Программы в виде APP-файлов FoxPro предназначены для запуска в среде FoxPro и позволяют при этом осуществлять отладку на этапе выполнения. При использовании определенных утилит из файла .app с программой FoxPro можно путем декомпиляции получить (частично) исходный код проекта FoxPro.

Помимо этого, файлы с расширением .app можно обнаружить в игровых приставках Nintendo 3DS/2DS. Применительно к устройствам Nintendo, подобные файлы .app служат для хранения игрового ПО и обычно находятся на носителях (вроде SD-Card) с предустановленным игровым ПО, в подкаталоге директории, соответствующей установленной игре. Эти двоичные файлы .app содержат основной фактический код игрового ПО и не должны подвергаться манипуляциям.

В общем смысле, расширение .app может использоваться в именах файлов других форматов и ассоциироваться с различными другими типами файлов для указания на то, что такие файлы несут функцию "приложения". Типовой файл .app может быть исполняемым двоичным или объектным кодом, скомпилированным для определенной архитектуры ЦП, пакетом приложения и файлом с ресурсами какого-либо приложения.


Андроид после того как вышел в 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» опцию.

Файлы формата APP открываются специальными программами. Существует 3 типа форматов APP, каждый из которых открывается разными программами. Чтобы открыть нужный тип формата, изучите описания файлов и скачайте одну из предложенных программ.

Чем открыть файл в формате APP

APP-формат может быть трех основных категорий:

  • исполнительный файл программного обеспечения FoxPro – комплекса для построения релевантных баз данных. В этом случае расширение APP (FoxPro Generated Application) представляет собой приложение для запуска процессов в автоматическом режиме (например, анализа программного кода, установления размерности ярлыков и.т.д). Данный формат может быть составной частью FoxPro или принудительно интегрироваться пользователем с помощью инструмента BUILD APP.
  • APP – исполнительный файл для запуска приложений в ОС Mac. В ОС Windows его аналогом является расширение *.EXE.

По своей структуре, APP – пакет данных, содержимое которого можно просмотреть выбрав опцию “Show Package Contents”. В составе такого архива могут быть исполнительные программы, ресурсы и процессы, используемые приложениями, ярлыки, программные плагины и оболочки.

В ОС Windows данный формат можно воспроизвести с использованием архиваторов WinRAR или WinZip.

Примечательно, что редактировать APP пакет (удалять, копировать или форматировать отдельный файлы) категорически воспрещается. Это может привести к повреждению целостности программ и быть причиной их некорректной работы.

  • APP – исполнительный файл, созданный с помощью программного плагина Symbian OS – операционной системы для мобильных устройств и других гаджетов. Формат APP относится к категории файлов Symbian OS Application и может быть скомпилирован при помощи инструментов Symbian OS.

Программы для открытия APP файлов

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

    (APP файл – исполнительный файл программного обеспечения FoxPro);
  • Apple Mac OS X (APP файл – исполнительный файл для запуска приложений в ОС Mac). В данном случае формат адаптирован для работы только на базе ОС Mac; или Nokia WRT plug-ins (APP файл – исполнительный файл, созданный с помощью программного плагина Symbian OS).

В случае если при воспроизведении формата возникает ошибка: либо поврежден или заражен исходный файл, либо осуществляется открытие APP-файла с применением некорректной программной утилиты.

Конвертация APP в другие форматы

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

Почему именно APP и в чем его достоинства?

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

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

Тип файла: FoxPro Generated Application Категория: Исполняемые файлы

Приложение, используемое FoxPro для автоматических процедур (например, создания новых размеров ярлыков, изменения свойств данных, анализа кода и т. д.). Может входить в состав FoxPro или встраиваться пользователем из проекта (.PJX) с помощью команды BUILD APP.

Чем открыть файл в формате APP (FoxPro Generated Application)

Тип файла: Mac OS X Application Разработчик: Apple Категория: Исполняемые файлы

Программа (или выполняемый файл), запускающийся в Mac OS X при двойном нажатии на нее. Файл близок к файлу расширения .EXE в Windows.

Поскольку файлы APP являются пакетами Mac OS, вы можете нажать на них правой кнопкой мыши (или клавишей контроля) и выбрать опцию "Show Package Contents" для просмотра файлов, содержащихся в пакете. Они включают в себя ресурсы, применяемые приложением, выполняемые программы, файлы списка свойств (.PLIST), оболочки, плагины, иконки и другие файлы.

В системах Windows и Linux можно просматривать содержимое приложения Mac OS X как если бы оно было папкой. Для извлечения файлов из приложения Mac OS X или других операционных систем можно применять программы декомпрессии вроде WinRAR.

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

Чем открыть файл в формате APP (Mac OS X Application)

Тип файла: Symbian OS Application Разработчик: Nokia Категория: Исполняемые файлы

Программа, написанная для Symbian OS — операционной системы для мобильных телефонов и смартфонов. Собирает приложение Symbian в файл ресурсов .RSC. Может компилироваться с помощью набора инструментальных средств (SDK) Symbian OS.

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