APK — это формат, в котором распространяются и устанавливаются Android приложения. Задумывались что у них внутри? Почему мы уже давно в Google Play загружаем AAB файлы, а не APK? Эта статья является расшифровкой видео, в котором я рассказал что находится внутри APK, что такое App Bundle и зачем поменяли формат распространения приложений в Google Play.
Если вам интересно следить за самыми последними новостями Android разработки и получать подборку интересных статей по этой тематике, тогда вам стоит подписаться на Телеграм-канал Android Broadcast и мой YouTube канал «Android Broadcast»
Структура APK
APK файл — это обычный ZIP архив и любой инструмент, который умеет работать с этим форматом, сможет распаковать содержимое APK. Лучше всего его смотреть через Android Studio. Для этого там есть инструмент, который покажет, что находится внутри, а также размер каждого файла.
Первое что вы заметите внутри APK — это множество файлов classes.dex с номерам. dex файлы — это скомпилированный Java код, который позже трансформируется в специальный Android формат байт кода. Весь Java код из проекта и подключенных библиотек попадает сюда.
СКОЛЬКО ВЕСИТ САМАЯ БОЛЬШАЯ ИГРА В МИРЕ?
Файл AndroidManifest.xml — вся информация о вашем приложении: компоненты, разрешения, требования к устройству и другая информация для системы. Хоть библиотеки и модули в проекте могут содержать свои файлы манифеста, но в итоге он один и объединяется с помощью утилиты Manifest Merger. На канале есть отдельное видео про неё.
Android ресурсы представлены в нескольких местах: папка res, куда попадают файлы: картинки, ресурсы шрифтов, layout‑ы, сырые ресурсы (да‑да, в Android ресурсы можно положить любой файл), а также файл resources.arsc, который содержит ссылки на ресурсы, value ресурсы (строки, размеры и пр.)
В папке libs кладут скомпилированные нативные библиотеки под различные архитектуры процессоров, обычно это ARM V7 и V8, а также x86 и x86–64. Этой папки может не быть, если вы сами или какая‑то из библиотек не содержит нативных библиотек т. е. попросту класть нечего
Папка assets — еще одно место, куда можно положить любые файлы, которые просто будут добавлены в финальное APK. Например, до появления ресурсов шрифтов разработчики складывали их именно туда! Зачем несколько мест? assets позволяют организовать любую структуру папок внутри директории, не накладывает никаких ограничений на имена файлов, а также позволяет работать внутри как с деревом файлов. В свою очередь raw ресурсы подчиняются всем ограничениям ресурсов
Папка META-INF содержит несколько важных файлов, которые содержат информацию и подписи файла, а также проверки, что это именно оригинальный файл от разработчика. За это отвечают 3 файла: CERT.RSA , CERT.SF и MANIFEST.MF
AnyDesk удаленный доступ (настройка)
Вы можете увидеть и другие файлы в APK, а также странные файлы в папках, про которые рассказывал ранее. Дело в том, что всё содержимое подключаемых библиотек попадает и в финальный файл приложения. Многие Java библиотеки содержат кучу всего лишнего. Например, я встречал исходный код библиотеки на Java, а другая библиотека добавила README файл из GitHub репозитория.
Universal APK
Теперь давайте разберемся, как сборки доставляются пользователям и какие форматы есть для этого. Первое и самое универсальное решение — одна сборка под все поддерживаемые устройства. Такая сборка называется Universal APK. Её плюс очевиден — пользователю не надо ничего знать про его устройство, чтобы выбрать правильную APK, она всего одна.
Минусы сборки — большой размер и хранение на устройстве множества неиспользуемых файлов. Например, нативные библиотеки под неподдерживаемую устройством архитектуру процессора.
Universal APK используют в процессе разработки, но я рекомендую вам уменьшать размер в процессе, чтобы быстрее доставлять сборку на устройство. Также Universal APK публикуют компании на сайте компании, которые не могут размещаться в Google Play, например, альтернативные магазины приложений или те кто попал под санкции.
Multi APK
Подход уже считается устаревшим и приводится лишь как шаг в эволюции распространения Android приложений.
Идея делать сборки меньшего размера, чтобы доставлять их быстрее и занимать на устройстве меньше места, возникла сразу после успеха Android устройств. В Google сразу начали анализировать, что можно убрать из APK. Если рассмотреть отдельное Android устройство, то мы четко знаем его размер экрана, плотность пикселей на экране, поддерживаемую архитектуру процессора (например, ARM‑v8a или x86 инструкции). Фактически, если оставить только нативные библиотеки под архитектуру процессора и графику только для необходимой плотности экрана, то мы уменьшим размер APK, но никак не повлияем на работу приложения.
Вот только остается вопрос: «Как доставлять APK под каждое устройство?». Собрать новую APK из Universal APK не представляется возможным т.к. нужно заново подписывать сборку, а механизм для этого у Google Play на заре Android не было.
В Google выбрали самое простое решение — делегировать разработчикам сборку и подпись нескольких APK. Механизм назвали Split APK. В Gradle вы указываете по каким критериям разбивать сборку и плагин соберет вам несколько APK
android < . splits < density < isEnable = true exclude(«ldpi», «mhdpi») compatibleScreens(«normal», «large») >abi < isEnable = true isUniversalApk = false include(«armeabi-v7a», «arm64-v8a») >>
Проблема в одном — чтобы залить их в Google Play у каждой из них должен быть уникальный version code. Вот тут уже разработчикам приходилось все это делать ручками, Google давала рекомендации, но порой все уходили во что горазды.
// Пример расчета versionCode для нескольких сборок в рамках Split APKs android < val abiCodes = mapOf(«armeabi-v7a» to 1, «arm64-v8a» to 2) androidComponents < onVariants < variant ->variant.outputs.forEach < output ->val name = output.filters.find < it.filterType == ABI >?.identifier val baseAbiCode = abiCodes.getValue(name) if (baseAbiCode != null) < output.versionCode.set(baseAbiCode * 1000 + output.versionCode.get()) >> > >
App Bundle
Новой итерацией создания оптимизированных сборок для Android устройств стал формат App Bundle, который представили в 2018 году. App Bundle представляет из себя архив с кубиками для построения APK. Теперь разработчикам нужно было просто собрать AAB файл вместо APK и загрузить в магазин приложений. Также стало проще и с версионированием — у всех APK из одного App Bundle она теперь одна и та же.
Помимо всего того, что уже было в Multi APK нововведением App Bundle стала возможность скачивать ресурсы только для отдельных локалей на устройстве. Ведь они тоже все не нужны, зачастую мы используем только один язык, разве что с приходом Android 13 появилась возможность менять язык приложений независимо от системы. Эта возможность опциональна и если вы поддерживаете переключение локалей внутри своего приложения независимо от системы, то вам стоит отключить эту опцию:
bundle < language < enableSplit = false >density < enableSplit = true >abi < enableSplit = true >texture < enableSplit = false >>
App Bundle не установить на устройство, потому что единственным форматом распространения приложений остается все также APK. Чтобы из AAB файла получить APK надо воспользоваться утилитой bundletoole от Google. На вход ей необходимо передать конфигурацию устройства. В результате вы получите несколько APK файлов.
Почему так? Отдельная APK представляет базовую APK, где содержится вся основа приложения, отдельное APK для нативных библиотек под архитектуру процессора, APK с графическими ресурсами и строками и другие APK с различными компонентами. После этого все они устанавливаются на устройство. Подписывать полученные APK вам уже придется самостоятельно.
Установка нескольких APK проходит с помощью специального API PackageInstaller, которое представили в API Level 21. И это важный аспект — ощутить преимущества App Bundle не смогу устройства на Android 4.4 и ниже.
App Bundle — свободный формат с открытым исходным кодом. Любой из магазинов приложений может взять его себе на вооружение, но конечно полноценно сделали это только в Google Play. Поддержка также есть в Huawei App Gallery. Начиная с августа 2021 он является обязательным для всех новых приложение в Google Play и рекомендуй для остальных.
На основе App Bundle реализуется множество возможностей: расширенная проверка и верификация приложений, анализ зависимостей, доставка ассетов для игр и другие.
Google Play App Signing
Чтобы весь механизм заработал прозрачно через магазин приложений, нужно было решить вопрос с подписью приложений. Для этого появился механизм Google Play App Signing. Его суть заключается в том, что ключ для подписи вашего приложения, его называют Signing Key , хранится на защищенном сервере Google, чтобы магазин мог подписать приложение в любой момент. Для новых приложений ключ за вас сам сгенерирует магазин, а для существующих есть процесс передачи ключа и данных для доступа к нему.
Помимо этого вам надо сгенерировать еще один ключ для подписи — Upload Key . Он используется при передачи сборки от разработчика в магазин приложений, чтобы убедиться в том, что именно разработчик приложения загружает его в консоль. Если вы потеряете Upload Key или его украдут, то можно обратиться в Google Play и заменить его на новый.
С одной стороны, звучит все хорошо — Google упростила работу с получением APK из App Bundle. Но это не совсем так, фактически магазин может собрать и изменить финальные APK как ему угодно, добавив или убрав оттуда файлы. Официально заявляют, что они делают оптимизации на стороне Google Play. Так поступают для добавления метаинформации о том, чтобы убедится в подлинности сборке магазином приложений. Но что они могут добавлять еще известно только Google…
Google Play Feature Delivery
Представьте, что у вас есть приложение карт. Вы в него вставили функцию AR навигации, но использует её лишь 5% аудитории. Почему так? Банально в устройстве может не быть камеры, либо не хватает мощности, а может фича и вовсе доступна только по подписке. Библиотеки, связанные с AR весят немало, и получается, что мы имеем функционал, который редко используется, но который качают все пользователи.
Почему бы не сделать так, чтобы мы могли какие‑то части приложения скачивать по запросу? Для этого сделали Google Play Feature Delivery. Вы можете доставлять части своего приложения по запросу либо при выполнение условий на устройстве. Сложность подхода заключается в том, что разработчикам нужно правильно организовать модули и связи их с основным API приложения.
apply plugin: ‘com.android.application’ // В application модуле указываем все подключаемые dynamic feature приложе android
// Пример dynamic feature модул apply plugin: ‘com.android.dynamic-feature’ dependencies < // Указываем application модуль в который будет подключаться модуль implementation project(‘:app’) >
Dynamic Feature модули могут доставляться несколькими способами:
- Установка вместе с приложением
- Загрузка модуля по запросу
- Установка по условию которыми могут быть требования к железу устройства, версия OpenGL ES, стране, версии Android
- Instant Apps т.е. возможность запуска без установки приложения
Все подробности работы с Dynamic Feature и организации их архитектуры тянет на отдельное видео: архитектура, API, UI/UX. На самом деле я уверен, что такой функционал к себе интегрируют очень редко, но если в вашем приложение он есть, а может вы сами его реализовывали — оставьте комментарий!
Механизм доставки приложений в Google Play прошел огромный путь и продолжает развиваться, сократив размеры приложения и скорость их доставки. На момент написания статья ограничение на размер приложения, загружаемого в Google Play — 150 Мб. Для большинства контента в магазине этого объема хватает с головой, разве что супераппы выходят за его лимиты.
Проблема в текущих реалиях заключается в том, как прозрачно может работать этот механизм с альтернативными магазинами приложений, особенно те, что не имею системных прав. Сейчас пользователю нужно подтверждать установку и обновление каждого приложения вне Google Play, а в случае с App Bundle — это будет несколько отдельных APK. Также встает вопрос как динамически устанавливать модули. В общем, пока без дополнительных полномочий для магазинов приложений в Android, кроме Google Play никому не получится нормально работать с динамической доставкой сборок.
В Android 14 Dev Preview 2 представили новое API в Package Manager, которое позволит запрашивать у пользователя одобрение на установку приложений один раз и до тех пор пока разрешение не отзовует
- Блог компании Android Broadcast
- Разработка под Android
Источник: habr.com
APK-файл – что это такое на Android: где скачать установочные файлы и чем открыть
В статье поговорим о том, что такое APK-файлы для Android, где скачать, как установить и открыть на смартфоне или ПК. Если вы пользователь Android-устройства, то хотя бы раз слышали об этом пакетном расширении файлов.
Понимание того, как взаимодействовать с файлами такого типа особенно актуально, когда многие приложения для жителей РФ недоступны в Play Store.
Что такое APK-файл
APK расшифровывается как Android Package Kit (пакет приложений для Android) – этот тип файлов является разновидностью формата JAR.
Файлы с расширением APK используются для распространения и установки программного обеспечения на платформе Android. В отличие от iOS, Android — это операционная система с открытым исходным кодом.
Инструкция по работе с APK-файлами
Для владельцев устройств на операционной системе Андроид полезно знать, что такое APK-файлы по разным причинам. На самом деле, все довольно просто. Файл с расширением *арк — это архивный установщик приложений для операционной системы Android. Когда вы скачиваете новую программу на компьютер с ОС Windows, то чаще всего она представляет собой набор файлов в архиве с исполняемым файлом *ехе.
Приложения для Андроид, даже релизы самой операционной системы, собираются в один архивный файл с расширением *арк. Достаточно скачать такой установщик из Google Play Маркет или с другого ресурса, запустить, чтобы программа была инсталлирована на смартфон или планшет с Андроид. Давайте разберемся, как установить APK на любое устройство под управлением ОС Android.
- Когда может понадобиться установка файла APK
- Установка файлов АРК на смартфон или планшет с ОС Андроид
- Установка файлов АРК на Андроид-устройство через компьютер
- Как скачать файл АРК из Google Play Market
- APK Downloader
- Raccoon APK Downloader
- Плагин APK Downloader для Google Chrome
- Установка платных приложений через АРК
Когда может понадобиться установка файла APK
Обычно владельцы Андроид-устройств скачивают новые приложения с официального сайта Гугл Плей Маркет. Эта процедура очень простая и не требует дополнительных действий по установке. Но этот способ имеет и свои ограничения. Установка ПО в виде единого файла АРК может понадобиться в следующих случаях:
- некоторые новые сборки ОС Андроид недоступны в виде стандартного обновления, но могут быть установлены через АРК;
- в файле АРК можно скачать полный пакет приложения со всеми обновлениями, а не выполнять эту операцию после каждого выхода апдейта;
- через АРК-файл легко вернуть предыдущую версию программы, если новый релиз вам не понравился;
- некоторые бюджетные модели китайских смартфонов не поддерживают автоматическое скачивание приложений из Google Play Маркет;
- АРК позволяет устанавливать приложения без авторизации в аккаунте Google;
- доступна распаковка и установка ПО без подключения к интернету.
Как вы поняли, скачать программу в архиве АРК можно не только из официального интернет-магазина Гугл. Существует множество ресурсов, которые размещают у себя приложения для Андроид, минуя официальный магазин Google Play. С одной стороны, это расширяет возможности пользователей для установки различных программ. С другой, будьте внимательны при скачивании ПО с сомнительных сайтов — файлы могут быть заражены вирусами и представлять угрозу для безопасности. Также учтите, что программы, установленные альтернативным способом, часто не поддерживают автоматическое обновление.
Установка файлов АРК на смартфон или планшет с ОС Андроид
Для скачивания АРК-файла достаточно загрузить его с сайта в папку «Download» или другую на выбор. А вот перед установкой нового приложения потребуется снять некоторые ограничения безопасности в системных настройках Андроид.
- Откройте в «Настройках» вкладку «Безопасность и конфиденциальность», перейдите в «Дополнительные настройки».
- В разделе «Установка приложений из внешних источников» выберите необходимое приложение и установите ползунок «Разрешить установку приложений».
Осталось скачать нужное ПО и произвести установку. Для этого откройте файловый менеджер, найдите нужный АРК-файл и просто тапните по нему. Иногда при инсталляции приложения из файла АРК система запрашивает дополнительное подтверждение на разрешение установки. Следует подтвердить такое право, чтобы программа установилась на смартфон.
Установка файлов АРК на Андроид-устройство через компьютер
Согласитесь, поиск нужных программ, их скачивание на смартфон и планшет не очень удобно на маленьком экране с сенсорной клавиатурой. Нужные АРК файлы проще вначале загрузить на ПК или ноутбук, затем перенести на мобильный девайс Андроид. Для этого произведите предварительные настройки в системе.
- В «Настройках» откройте раздел «Система» → «О телефоне». Несколько раз тапните по надписи «Номер сборки». Может понадобиться ввести пароль разблокировки.
- Теперь в меню «Система» появилась новая строка «Для разработчиков». Перейдите в специальное меню управления расширенным функционалом ОС Андроид. Будьте внимательны с настройками, их изменение влияет на общее функционирование системы и приложений.
- Найдите соответствующий пункт «Отладка по USB» и передвиньте ползунок для активации режима. Теперь ваше устройство Андроид при подключении к компьютеру по кабелю будет доступно для обмена файлами.
- Подключите смартфон к ПК или ноутбуку. В момент подключения система может запросить дополнительную настройку вариантов обмена данными. Выберите пункт «Передача файлов».
- Переместите ранее сохраненный файл АРК через «Проводник» Виндовс на мобильное устройство.
- Затем запустите установку приложения на смартфоне в Менеджере файлов и следуйте инструкции по установке.
Небольшой лайфхак: любой файл можно перекинуть с компьютера на смартфон или планшет через мессенджер без прямого подключения гаджета по USB-кабелю. Я для этого использую Телеграм, отправляя нужное вложение в «Избранное».
Как скачать файл АРК из Google Play Market
Для загрузки АРК-файла из интернет-магазина Гугл потребуется установить одну из специальных программ, либо воспользоваться онлайн-сервисом. Дело в том, что Google не дает возможности напрямую загружать приложения в виде архива, только через онлайн установку. При этом скачать установщик в виде apk вы сможете только для тех приложений, которые распространяются бесплатно.
Либо для тех, которые вы уже купили. Существует много специальных сервисов, которые помогут решить эту задачу. Вот некоторые из них.
APK Downloader
Главное преимущество этого сервиса — не надо заходить в профиль Google или вводить идентификатор Device ID. Порядок действий следующий.
- Откройте нужное приложение в Google Play, скопируйте адрес страницы и ID приложения.
- Перейдите в сервис APK Downloader, вставьте адрес страницы из Гугл Плей в окно поиска программы. Нажмите «Сгенерировать ссылку», дождитесь завершения процесса. Кнопка «Download» предназначена для выгрузки готового АРК-файла на устройство. Остается только запустить установочник и распаковать архив.
Если выбранное приложение есть в библиотеке APK Downloader, то сервис скачает АРК-файл оттуда, а не из Google Play. Вы можете загрузить нужный архив как на смартфон, так и компьютер, затем перекинув его на Андроид-устройство.
Raccoon APK Downloader
Программа для Windows, MacOS X и Linux, предназначенная для скачивания приложений APK напрямую из Google Play Маркет. Софт не требует локальной установки, но необходимо наличие Java на компьютере. Может понадобиться установить или обновить Java, это бесплатно.
- При первом запуске приложения потребуется логин и пароль от аккаунта Google. Рекомендуется создать новую, а не использовать личную учетную запись.
Далее выберите вариант регистрации устройства «Register a new pseudo device», при котором не потребуется дополнительно вводить ID.
В окне поиска найдите нужное приложение и нажмите Download.
- В следующем окне нажмите кнопку «Show Files», после чего откроется папка с файлом APK скачанного приложения. Остается только запустить его на мобильном устройстве Андроид.
Плагин APK Downloader для Google Chrome
Существует специальное расширение для браузера Google Chrome, с помощью которого можно скачивать АРК-файлы из Google Play Маркет. Для работы расширения требуется ввести логин и пароль аккаунта Gmail, а также ID устройства. Данный способ доступа к загрузчикам приложений не считается безопасным. К тому же, для его активации потребуется включить режим разработчика в браузере.
Установка платных приложений через АРК
Естественно, многие пользователи устройств на Андроид задают вопрос: можно ли платное приложение из Google Play установить бесплатно через АРК-файл? Можно. Я не рекомендую подвергать риску свой дорогой гаджет таким экспериментам, но обойти этот вопрос тоже будет неправильно.
Это, кстати, самый простой вариант использования контрафакта, который не требует к тому же прав полного доступа ROOT. Еще раз повторюсь, что данная инструкция приводится в качестве примера. Использовать ее как руководство к действию или нет, каждый решает сам.
- Находите сайт, на котором можно скачать, например, платную игру или другое приложение, за которое придется платить в Google Play.
- Скачиваете архив на компьютер либо сразу во внутреннюю память, СD-карту смартфона. Взломанные игры помимо архивного файла *арк содержат в наборе кеш-файлы, которые могут иметь любое расширение, но только не архивы. Все заархивированные файлы необходимо разархивировать через менеджер файлов.
- Прочитайте инструкцию в текстовом файле, куда устанавливать кеш-файлы — это обязательное требование. Файл АРК можно поместить в любую директорию.
- Запускаете файл АРК и производите установку. Если все сделано правильно, то можете пользоваться игрой бесплатно и даже получать обновления. Либо поймать проблемы, когда под видом нормального ПО ваш смартфон окажется заражен вредоносной программой.
Я провел небольшой эксперимент. На сайте APK Downloader указано: «Чтобы предотвратить пиратство, вам не разрешается загружать платные приложения». Проверим?
- Берем в качестве примера популярную игру «Майнкрафт», подписка на которую в Гугл Плей Маркете стоит 690 рублей.
- Копирую URL-адрес приложения и генерирую АРК-файл на сайте APK Downloader.
- Запускаю установочный файл на смартфоне Андроид. Вуаля! Игра загружается безо всяких ограничений.
Я не поклонник этой игры и вообще не геймер. Возможно, в процессе использования установленного таким образом софта возникнут какие-то проблемы и ограничения. Но по крайней мере, я уверен, что не заразил систему вредоносным софтом.
Специально для правообладателей: далее удаляю контрафактное ПО.
Как видите, установка приложений с помощью АРК-файлов — полезный навык для владельцев устройств с ОС Андроид. Сделать это довольно несложно, выбрав один из описанных в статье способов.
Источник: tehnichka.pro