- How to Install APK on Android
- Have an Android app not on Google Play? Install it from its APK
- What to Know
- Allow Unknown Apps on Android
- Install an Android File Manager
- Download the APK Installer From Your Android
- Transfer the APK Installer via USB
- Advanced: Run APK Installer With Minimal ADB and Fastboot
- What Is an APK?
- Why Use an APK?
- Finding APK Installers
- Как устроен билд APK файла внутри
- Процесс создания APK и компиляции кода
- Рассматриваемые темы
- Архитектура процессоров и зачем нужна виртуальная машина
- Понимание Java виртуальной машины
- Андроид виртуальная машина
- Комплияция в .dex файл
- ART против Dalvik
- Каждый этап описанного процесса
- Source Code (Исходный код)
- Resource Files
- AIDL Files
- Library Modules
- AAR Libraries
- JAR Libraries
- Android Asset Packaging Tool
- resources.arsc
- D8 и R8
- Dex and Multidex
How to Install APK on Android
Have an Android app not on Google Play? Install it from its APK
What to Know
- Allow Chrome to install unknown apps by going to Settings >Apps >Menu >Special access >Install unknown apps.
- Install a file manager (such as Cx File Explorer or File Manager) so that you can find the APK file after you download it to your phone.
- Download an APK file and open it to install it. Alternatively, transfer the APK Installer from your computer using USB.
If you want to use an app from outside of the Google Play Store, you can install the app’s APK file. This article explains how to install APKs on Android 7 or later.
Allow Unknown Apps on Android
Before you can download APK files using Chrome or any other browser, you must first allow unknown apps:
Go to your device settings and tap Apps & Notifications (or Apps in older versions of Android).
Tap the three dots in the upper-right corner.
Tap Special access.
Tap Install unknown apps.
Tap Chrome (or whichever web browser you use)
Move Allow from this source to the On position.
Install an Android File Manager
Now that you’ve configured your phone to let you install unknown apps, you’ll need a way to find the application file (APK file) on your phone so that you can run it.
Android phones typically come with a file manager app you can use, but if you don’t have one, search for one on Google Play. Some of the best options include Cx File Explorer and File Manager.
Download the APK Installer From Your Android
The easiest way to install an APK file on your Android is to download the file using the default browser, Chrome.
Find a website offering the Android app and tap the link to download the APK file. Accept any pop-ups, including “This type of file can harm your device.”
Only download APK files from reputable sources. A quick Google search can often let you know if an app (or company that makes the app) has a questionable reputation.
If your phone’s web browser doesn’t give you the option to open the file after downloading, open your file explorer app, go to the Downloads folder on your device, then tap the APK file.
Allow the app any required permissions it asks for. Then, at the bottom of the installer window, tap Install.
Now you’ll see the app available in your list of installed apps.
Transfer the APK Installer via USB
If you don’t have internet access on your phone, or for any other reason you can’t use a browser to download the file, you can still install apps from your computer. Using your computer web browser, download the APK file just like described above. Once it’s downloaded, connect to your Android phone and transfer the file.
If you’ve never connected your Android to your computer, enable USB Debugging. You can then plug your phone into your computer with a USB cable, and it’ll mount the phone like it would a memory stick.
Once your phone is connected to your computer, it shows up as another drive in your computer’s File Explorer. Move the APK file you downloaded from the app website to the /sdcard/download folder on your phone.
Once the file is transferred, use the file explorer app on your phone as described in the previous section to tap the APK file and install the app.
If you don’t have a USB cable, another solution is to install WiFi FTP Server from Google Play. Then, use an FTP client on your computer (like FileZilla) to transfer the APK file from your computer to the /sdcard/download folder on your phone. However, this is an advanced option and requires an understanding of how to use FTP files.
Advanced: Run APK Installer With Minimal ADB and Fastboot
If the APK installer isn’t running when you tap it, there’s an advanced solution that might work. You can install the APK file on your Android from your computer using a tool called Minimal ADB and Fastboot.
Connect your phone via USB and enable USB Debugging.
Download and install the latest version of Minimal ADB and Fastboot on your computer.
Run the tool, and a command window opens. With your phone connected to your computer with the USB cable, type the command adb devices.
If the tool detects your phone, an ID for the device appears under List of devices attached. Now you’re ready to transfer the APK file.
Using Windows File Explorer, find the downloaded APK file on your computer.
Right-click the file and select Copy.
Using Windows File Explorer, navigate to the Minimal ADB and Fasbtoot folder (typically c:\Program Files (x86)\Minimal ADB and Fastboot\).
Paste the APK file into that folder.
Rename the APK file to something short so that it’s easy to type as a command.
Back in the same command window you had open before, type the command adb install app name (replace with the name of your APK file).
When you see the word Success, the app is installed on your phone.
What Is an APK?
An APK (Android Package Kit) is a type of file that installs an application for Android. It’s just like an executable (EXE) file for Windows or a package installer (PKG) for Mac.
If you’ve ever installed an Android application from the Google Play store, then you’ve used an APK file without realizing it. When you tap the Install button, Google Play automates the process of transferring the APK file to your phone and running it for you.
Why Use an APK?
If the Android app you want to install isn’t available on Google Play, you can download the APK file from the web and install it manually.
Finding APK Installers
There are many websites where you can find non-Google Play apps to install. Three of the most popular are APK Pure, Reddit’s APK Directory, and APK Mirror.
Источник
Как устроен билд APK файла внутри
Процесс создания APK и компиляции кода
Рассматриваемые темы
- Архитектура процессоров и необходимость для виртуальной машины
- Понимание Java виртуальной машины
- Компиляция исходного кода
- Виртуальная машина Андроид
- Процесс компиляции в .dex файл
- ART против Dalvik
- Описание каждой части билд процесса
- Исходный код
- Файлы ресурсов
- AIDL файлы
- Модули библиотек
- AAR библиотеки
- JAR библиотеки
- Android Asset Packaging Tool
- resources.arsc
- D8 и R8
- Dex и Multidex
- Подписывание APK файла
- Ссылки
Понимание флоу процесса билда APK файла, среда исполнения и компиляция кода
Этот пост нацелен быть отправной точкой для разработчиков, чтобы они ближе познакомились с билд процессом и созданием APK файла.
Архитектура процессоров и зачем нужна виртуальная машина
Андроид после того как вышел в 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, включая подключенные библиотеки, то произойдет ошибка при билде
Источник