- Уровень Android API, обратная и прямая совместимость
- Уровень API
- От исходного кода к APK-файлу
- DEX файлы и Android Runtime
- compileSdkVersion
- minSdkVersion
- targetSdkVersion
- How To Change API SDK Level In Android Studio
- How to change API SDK level in Android Studio
- Приступая к работе с собственными разработками Android на Windows
- Установка Android Studio
- Создание проекта
- Java или Котлин
- Минимальный уровень API
- Мгновенная поддержка приложений и артефакты Андроидкс
- Файлы проекта
- Использование C или C++ для разработки игр Android
- Рекомендации по проектированию
- система Fluent Design для Android
Уровень Android API, обратная и прямая совместимость
Добрый вечер, друзья. Мы подготовили полезный перевод для будущих студентов курса «Android-разработчик. Продвинутый курс». С радостью делимся с вами данным материалом.
Если вы читаете эту статью, значит вас могут интересовать такие вещи, как:
- Что означает уровень API?
- Как использовать compileSdkVersion , minSdkVersion или targetSdkVersion ?
- Как можно гарантировать, что приложение будет работать правильно на устройствах с разными версиями ОС?
Все эти понятия связаны друг с другом, и я постараюсь объяснить их вам в этой статье простым, но эффективным способом.
Для этого необходимо понимать разницу между SDK и API и знать что такое уровень API в экосистеме Android.
Это правда, что в Android между SDK и API существует отношение 1:1, и часто эти два термина используются как синонимы, но важно понимать, что это не одно и то же.
Правильнее говорить, что для каждой версии Android есть SDK и эквивалентный API, а также уровень этого API.
Расшифровывается как Software Development Kit (комплект для разработки программного обеспечения). Обратите внимание на слово «kit» (комплект)… он как раз представляет из себя набор различных инструментов, библиотек, документации, примеров, помогающих разработчикам создавать, отлаживать и запускать приложения для Android. API предоставляется вместе с SDK.
Если открыть SDK Manager в Android Studio, можно будет яснее увидеть, из чего состоит Android SDK.
На первой вкладке SDK Platform перечислены SDK каждой версии Android.
Как показано на рисунке ниже, Android 9.0 SDK (также известный как Pie) содержит:
- Android SDK Platform 28 (это API фреймворка).
- Исходный код для Android 28 (это реализация API, как вы видите, она не является обязательной… запомните это).
- и еще куча других вещей… например, различные системные образы для эмулятора Android.
Обзор SDK в Android Studio SDK Manager.
На второй вкладке SDK Tools показаны другие инструменты, которые также являются частью SDK, но не зависят от версии платформы. Это означает, что они могут быть выпущены или обновлены отдельно.
Расшифровывается как Application Programming Interface (программный интерфейс приложения). Это просто интерфейс, уровень абстракции, который обеспечивает связь между двумя разными «частями» программного обеспечения. Он работает как договор между поставщиком (например, библиотекой) и потребителем (например, приложением).
Это набор формальных определений, таких как классы, методы, функции, модули, константы, которые могут использоваться другими разработчиками для написания своего кода. При этом API не включает в себя реализацию.
Уровень API
Уровень API — это целочисленное значение, однозначно идентифицирующее версию API фреймворка, предлагаемую платформой Android.
Обычно обновления API фреймворка платформы разрабатываются таким образом, чтобы новая версия API оставалась совместимой с более ранними версиями, поэтому большинство изменений в новом API являются аддитивными, а старые части API становятся устаревшими, но не удаляются.
И теперь кто-то может задаться вопросом…
если API Android не предоставляет реализацию, а SDK Manager предлагает необязательный загружаемый исходный код API в составе SDK, то где находится соответствующая реализация?
Ответ прост. На устройстве.
Давайте разберемся с этим…
От исходного кода к APK-файлу
Как правило, проект под Android состоит из кода, написанного разработчиками с использованием Android API (модуль приложения), а также некоторых других библиотек/зависимостей (.jar-файлов, AAR, модулей и т.д.) и ресурсов.
Процесс компиляции преобразует код, написанный на Java или Kotlin, включая зависимости (одна из причин уменьшить ваш код!), в байт-код DEX, а затем сжимает все в файл APK вместе с ресурсами. На данном этапе реализация API не включена в итоговый APK!
Процесс сборки — Android Developers
DEX файлы и Android Runtime
Архитектура Android — Android Developers
Android Runtime — это место, где делается вся грязная работа и где выполняются DEX-файлы. Оно состоит из двух основных компонентов:
- Виртуальная машина, чтобы воспользоваться преимуществами переносимости кода и независимости от платформы. Начиная с Android 5.0 (Lollipop), старая среда выполнения, Dalvik Virtual Machine, была полностью заменена новой средой Android RunTime (ART). Dalvik использовал JIT-компилятор, тогда как ART использует AOT (Ahead of time) компиляцию плюс JIT для профилирования кода во время выполнения.
- Базовые библиотеки — это стандартные библиотеки Java и Android. Проще говоря, именно здесь находится реализация API.
Версия API, доступная на этом уровне, соответствует версии платформы Android, на которой запущено приложение.
Например, если на фактическом устройстве установлен Android 9 (Pie), доступны все API до 28 уровня.
Если вам понятны ключевые моменты работы Android Runtime и какова роль API, то должно быть достаточно просто понять обратную и прямую совместимость, а так же использование compileSdkVersion , minSdkVersion и targetSdkVersion .
compileSdkVersion
Это значение используется только для указания Gradle, с какой версией SDK компилировать ваше приложение. Это позволяет разработчикам получить доступ ко всем API, доступным до уровня API, установленного для compileSdkVersion .
Настоятельно рекомендуется выполнить компиляцию с последней версией SDK:
- высокий уровень API позволяет разработчикам использовать преимущества последнего API и возможностей, предоставляемых новыми платформами.
- чтобы использовать последнюю версию SupportLibrary , compileSdkVersion должен соответствовать версии SupportLibrary .
Например, чтобы использовать SupportLibrary-28.x.x , compileSdkVersion также должен быть равен 28.
- для перехода на AndroidX или его использования, compileSdkVersion должен быть установлен как минимум равным 28.
- чтобы быть готовым удовлетворить требования целевого уровня API от Google Play. В Google объявили, что для более быстрого распространения новых версий Android на рынке Google каждый год будет устанавливать минимальный целевой уровень API для новых приложений и обновлений. Больше информации вы можете найти здесь и здесь.
Приложения Android совместимы с новыми версиями платформы Android, поскольку изменения в API обычно являются аддитивными, а старое API может стать устаревшим, но не удаленным.
Это означает, что прямая совместимость в основном гарантируется платформой, и при запуске приложения на устройстве с более высоким уровнем API, чем тот, который указан в compileSdkVersion , не возникает никаких проблем во время выполнения, приложение будет работать так же, как и ожидалось, на более новых версиях платформы.
Приложение + compileSdkVersion = 26 и метод API xyz() , представленный в API 26 уровня, могут работать на устройстве с Android 8 Oreo (API 26 уровня).
Это же приложение может работать на устройстве с Android 9 Pie (API 28 уровня), поскольку метод API xyz() все еще доступен на API 28 уровня.
minSdkVersion
Это значение обозначает минимальный уровень API, на котором приложение может работать. Это минимальное требование. Если не указан, значением по умолчанию является 1.
Разработчики обязаны установить корректное значение и обеспечить правильную работу приложения до этого уровня API. Это называется обратной совместимостью.
Во время разработки Lint также предупредит разработчиков при попытке использовать любой API ниже указанного в minSdkVersion . Очень важно не игнорировать предупреждения и исправить их!
Чтобы обеспечить обратную совместимость, разработчики могут во время выполнения проверять версию платформы и использовать новый API в более новых версиях платформы и старый API в более старых версиях или, в зависимости от случая, использовать некоторые статические библиотеки, которые обеспечивают обратную совместимость.
Также важно упомянуть, что Google Play Store использует это значение, чтобы определить, можно ли установить приложение на определенное устройство, сопоставив версию платформы устройства с minSdkVersion приложения.
Разработчики должны быть очень осторожны при выборе этого значения, поскольку обратная совместимость не гарантируется платформой.
Выбор «правильного» значения для проекта также является бизнес-решением, поскольку оно влияет на то, насколько большой будет аудитория приложения. Посмотрите на распределение платформ.
Приложение + compileSdkVersion = 26 + minSdkVersion = 22 и метод API xyz() , представленный в API 26 уровня, могут работать на устройстве с Android 8 Oreo (API 26 уровня).
Это же приложение можно установить и запустить на более старом устройстве с Android 5.1 Lollipop (API 22 уровня), где метода API xyz() не существует. Если разработчики не обеспечили обратную совместимость ни с помощью проверок времени выполнения, ни с помощью каких-либо библиотек, то приложение будет аварийно завершать работу, как только оно попытается получить доступ к методу API xyz() .
targetSdkVersion
Это значение указывает уровень API, на котором приложение было разработано.
Не путайте его с compileSdkVersion . Последний используется только во время компиляции и делает новые API доступными для разработчиков. Первый, напротив, является частью APK (также как и minSdkVersion ) и изменяет поведение среды выполнения. Это способ, которым разработчики могут контролировать прямую совместимость.
Иногда могут быть некоторые изменения API в базовой системе, которые могут повлиять на поведение приложения при работе в новой среде выполнения.
Целевой уровень приложения включает поведение среды выполнения, которое зависит от конкретной версии платформы. Если приложение не готово к поддержке этих изменений поведения среды выполнения, оно, вероятно, завершится сбоем.
Простым примером является Runtime Permission, которое было представлено в Android 6 Marshmallow (API 23 уровня).
Приложение может быть скомпилировано с использованием API 23 уровня, но иметь целевым API 22 уровня, если оно еще не готово поддержать новую модель разрешений времени выполнения.
Таким образом, приложение может по-прежнему быть совместимым без включения нового поведения среды выполнения.
В любом случае, как уже упоминалось, Google требует, чтобы приложения удовлетворяли новым требованиям целевого уровня API, поэтому всегда следует иметь высокий приоритет для обновления этого значения.
Теперь соединяя все это вместе, мы видим четкое отношение
minSdkVersion ≤ targetSdkVersion ≤ compileSdkVersion
Имейте в виду, что настоятельно рекомендуется выполнить компиляцию в соответствии с последним уровнем API и стараться использовать targetSdkVersion == compileSdkVersion.
Источник
How To Change API SDK Level In Android Studio
Basically, API level means the Android version. This defines for which version you are targeting your application and what is going to be the minimum level of android version in your application will run. For setting Minimum level and Maximum level android studio provides two terminologies.
minSdkVersion means minimum Android OS version that will support your app and targetSdkVersion means the version for which you are actually developing your application. Your app will be compatible with all the version of android which are falling between minimum level SDK and target SDK.
How to change API SDK level in Android Studio
For changing the API level in android we have two different Approaches, let’s check both one by one:
Approach 1 To Change SDK API Level in Android Studio:
Step 1: Open your Android Studio, and go to Menu. File >Project Structure.
Step 2: In project Structure window, select app module in the list given on left side.
Step 3: Select the Flavors tab and under this you will have an option for setting “Min Sdk Version” and for setting “Target Sdk Version”.
You can check the name of version too in the drop down list while selecting the API level that makes the selection more clearer for anyone. Because sometimes remembering numbers is bit messy.
Step 4: Select both the versions and Click OK.
Approach 2 To Change API (Android Version) in Android Studio:
That will be pretty straight forward, but you need to stay very alert while making changes here.
Step 1: if you are project is opened in android option then select open Gradle Scripts > build.gradle(Module: app)
if you are in project View then click on your project folder > app > build.gradle
Step 2: Here you have to change minimum and Maximum sdk level as per your requirement. check the below given code:
Step 3: Click on Sync Now and You are ready to go.
Note: If you are choosing the First Approach then you need not to make changes in Gradle. It will automatically update the gradle.
Источник
Приступая к работе с собственными разработками Android на Windows
в этом руководство вы узнаете, как приступить к использованию Windows для создания собственных приложений Android. если вы предпочитаете межплатформенное решение, ознакомьтесь со статьей обзор разработки Android на Windows , чтобы получить краткие сведения о некоторых вариантах.
Самым прямым способом создания собственного приложения Android является использование Android Studio с Java или Котлин, хотя можно использовать C или C++ для разработки Android , если у вас есть конкретная цель. Средства Android Studio SDK компилируют файлы кода, данных и ресурсов в архивный пакет Android с расширением apk. Один файл APK содержит все содержимое приложения Android, а — файл, с помощью которого устройства на платформе Android используют для установки приложения.
Установка Android Studio
Android Studio является официальной интегрированной средой разработки для операционной системы Android под управлением Google. Скачайте последнюю версию Android Studio для Windows.
- Если вы скачали файл .exe (рекомендуется), дважды щелкните его, чтобы запустить.
- Если вы скачали файл .zip, распакуйте его в папку «Program Files», а затем откройте папку «Android-Studio > bin» и запустите studio64.exe (для 64-разрядных компьютеров) или studio.exe (для 32-разрядных компьютеров).
Следуйте указаниям мастера установки в Android Studio и установите все рекомендуемые пакеты SDK. По мере того как становятся доступными новые средства и другие API-интерфейсы, Android Studio уведомляет вас о наличии всплывающего окна или проверку наличия обновлений, выбрав пункт Справка Проверка обновления.
Создание проекта
выберите файл создать новый Project.
В окне Выбор проекта вы сможете выбрать один из следующих шаблонов:
Основные действия: создает простое приложение с панелью приложений, плавающей кнопкой действия и двумя файлами макета: один для действия и один для разделения текстового содержимого.
Пустое действие: создает пустое действие и один файл макета с примером текстового содержимого.
Действие «Нижняя область навигации«: создает стандартную нижнюю панель навигации для действия. Дополнительные сведения об этом см. в разделе, посвященном нижним компонентам навигации, руководства по проектированию материалов в Google.
Шаблоны обычно используются для добавления действий в новые и существующие модули приложений. Например, чтобы создать экран входа для пользователей приложения, добавьте действие с шаблоном действия входа. Дополнительные сведения о выборе действия и добавлении кода из шаблона см. в статье Руководство разработчика Android по Google.
Операционная система Android основана на идее компонентов и использует термины действие и назначение для определения взаимодействий. Действие представляет отдельную задачу, которая может быть сделана пользователем. Действие предоставляет окно для создания пользовательского интерфейса с помощью классов, основанных на классе представления . Существует жизненный цикл действий в операционной системе Android, определяемый шестью обратными вызовами: ,, onStart() ,, onResume() onPause() onStop() и onDestroy() . Компоненты действия взаимодействуют друг с другом с помощью объектов намерения . Намерение определяет, какое действие следует запустить, или описывает тип выполняемого действия (и система выбирает подходящее действие, которое может быть даже из другого приложения). Дополнительные сведения о действиях, жизненном цикле действий и способах их получения см. в статье о программе Android в Google.
Java или Котлин
Java стал языком в 1991, разработанным корпорацией Sun Microsystems, но который теперь принадлежит Oracle. Она стала одним из самых популярных и мощных языков программирования с одним из самых крупных сообществ поддержки в мире. Язык Java основан на классах и объектно-ориентированной среде, предназначенный для того, чтобы иметь как можно меньше зависимостей реализации. Синтаксис похож на C и C++, но он имеет меньше низкоуровневых средств, чем любой из них.
Котлин был впервые объявлен как новый язык с открытым кодом JetBrains в 2011 и был включен в качестве альтернативы Java в Android Studio с 2017. В 2019 мая, Google объявил о Котлин в качестве предпочтительного языка для разработчиков приложений Android, поэтому, несмотря на более новый язык, он также имеет сообщество поддержки и был идентифицирован как один из самых быстрых растущех языков программирования. Котлин является межплатформенным, статически типизированным и предназначен для полноценного взаимодействия с Java.
Java более широко используется для более широкого спектра приложений и предлагает некоторые функции, которые не Котлин, такие как проверенные исключения, простые типы, не являющиеся классами, статические элементы, незакрытые поля, подстановочные знаки и операторы ternary. Котлин специально разработана для и рекомендуется для Android. Он также предлагает некоторые функции, которые не поддерживаются в Java, такие как ссылки null, контролируемые системой типов, необработанные типы, инвариантные массивы, правильные типы функций (в отличие от SAM-преобразований Java), Использование вариативности сайта без подстановочных знаков, смарт-приведение и многое другое. Более подробные сведения о сравнении с Java см. в документации по Котлин.
Минимальный уровень API
Вам потребуется выбрать минимальный уровень API для приложения. Это определяет версию Android, которую будет поддерживать ваше приложение. Более низкие уровни API устарели и, следовательно, поддерживают больше устройств, но более высокие уровни API более новые и таким образом предоставляют больше возможностей.
Выберите ссылку » помогите мне выбрать «, чтобы открыть диаграмму сравнения, показывающую распределение поддержки устройств и основные функции, связанные с выпуском версии платформы.
Мгновенная поддержка приложений и артефакты Андроидкс
Можно заметить, что флажок для поддержки мгновенных приложений и другой для использования артефактов андроидкс в параметрах создания проекта. Поддержка мгновенных приложений не проверяется, и андроидкс проверяется как рекомендуемое по умолчанию.
Google Play мгновенные приложения предоставляют пользователям возможность опробовать приложение или игру, не устанавливая их первыми. Эти мгновенные приложения могут быть распределены по Магазин Google Play, поиску Google, социальным сетям и в любом месте, где вы делитесь ссылкой. Установив флажок поддерживать мгновенные приложения , вы запрашиваете Android Studio включить в проект пакет SDK для мгновенной разработки Google Play. Дополнительные сведения о Google Play мгновенных приложений см. в разделе с руководством разработчика для Android.
Артефакты андроидкс представляют новую версию библиотеки поддержки Android и обеспечивает обратную совместимость между выпусками Android. Андроидкс предоставляет соответствующее пространство имен, начиная со строки андроидкс для всех доступных пакетов.
Андроидкс теперь является библиотекой по умолчанию. Чтобы снять этот флажок и использовать предыдущую библиотеку поддержки, необходимо удалить последний пакет SDK для Android Q. Инструкции см. в разделе использование артефактов андроидкс в StackOverflow для получения инструкций, но сначала обратите внимание, что самые старые пакеты библиотек поддержки были сопоставлены с соответствующими пакетами андроидкс. *. Полное сопоставление всех старых классов и создание артефактов для новых версий см. в разделе Миграция в андроидкс.
Файлы проекта
окно Android Studio Project содержит следующие файлы (убедитесь, что в раскрывающемся меню выбрано представление Android):
Приложение Java > com. example. мифирстапп > MainActivity
Основное действие и точка входа для приложения. При сборке и запуске приложения система запускает экземпляр этого действия и загружает его макет.
> activity_main.xmlмакета App > RES
XML-файл, определяющий макет пользовательского интерфейса действия. Он содержит элемент TextView с текстом «Hello World»
манифесты приложений > AndroidManifest.xml
Файл манифеста, описывающий фундаментальные характеристики приложения и всех его компонентов.
Скрипты Gradle Сборка. Gradle
существует два файла с таким именем: «Project: мое первое приложение», для всего проекта и «модуль: приложение» для каждого модуля приложения. В новом проекте изначально будет только один модуль. Используйте файл build. File модуля, чтобы управлять тем, как подключаемый модуль Gradle создает приложение. Дополнительные сведения о настройке сборки см. в разделе Руководство разработчика для Android.
Использование C или C++ для разработки игр Android
Операционная система Android разработана для поддержки приложений, написанных на Java или Котлин, с помощью инструментов, внедренных в архитектуру системы. Многие системные функции, такие как интерфейс Android и обработка намерений, доступны только через интерфейсы Java. Существует несколько экземпляров, в которых может потребоваться использовать код C или C++ через пакет Android Native Development Kit (NDK) , несмотря на некоторые связанные с ним проблемы. Примером является разработка игр, так как игры обычно используют собственную логику отрисовки, написанную на OpenGL или вулкан, и преимущества обширных библиотек C, ориентированных на разработку игр. Использование C или C++ может также помочь в сжатии дополнительной производительности устройства для достижения низкой задержки или выполнения ресурсоемких вычислительных приложений, таких как физические модели. Однако в большинстве новичков программистов Android не подходит NDK. Если у вас нет конкретной цели для использования NDK, мы рекомендуем придерживаться Java, Котлин или одной из межплатформенных платформ.
Чтобы создать новый проект с поддержкой C/C++, выполните следующие действия.
В разделе Выбор проекта мастера Android Studio выберите тип проекта » машинный код C++*». Нажмите кнопку Далее, заполните оставшиеся поля, а затем нажмите кнопку Далее еще раз.
В разделе Настройка поддержки c++ мастера можно настроить проект с помощью стандартного поля C++ . Используйте раскрывающийся список, чтобы выбрать, какую стандартизацию C++ следует использовать. При выборе значения цепочки инструментов по умолчанию используется параметр CMAK по умолчанию. Нажмите кнопку Готово.
когда Android Studio создаст новый проект, на панели Project можно найти папку cpp , которая содержит собственные исходные файлы, заголовки, скрипты сборки для cmak или ndk-build, а также предварительно созданные библиотеки, которые являются частью проекта. Вы также можете найти образец исходного файла C++, native-lib.cpp в src/main/cpp/ папке, предоставляющей простую функцию, stringFromJNI() возвращающую строку «Hello from C++». Кроме того, вы увидите сценарий сборки CMak, CMakeLists.txt в корневом каталоге модуля, необходимый для создания собственной библиотеки.
Дополнительные сведения о добавлении кода C и C++ в проект см. в разделе с руководством для разработчиков Android. Чтобы найти примеры Android NDK с интеграцией C++, см. репозиторий примеров Android NDK на GitHub. Чтобы скомпилировать и запустить игру на C++ в Android, используйте API Google Play Game Services.
Рекомендации по проектированию
Пользователи устройств хотят, чтобы приложения выглядели и обвели себя определенным образом. будь то прокрутка или касание или использование элементов управления голоса, пользователи будут иметь определенные ожидания для того, как должно выглядеть приложение и как его использовать. Эти ожидания должны оставаться согласованными, чтобы сократить путаницу и недовольство. Android предлагает руководство по этим платформам и ожиданиям устройств, объединяющее конструкцию Google материала для визуальных элементов и шаблонов навигации, а также рекомендации по качеству совместимости, производительности и безопасности.
система Fluent Design для Android
Кроме того, корпорация Майкрософт предлагает рекомендации по проектированию с целью обеспечения бесперебойной работы по всему портфелю мобильных приложений Майкрософт.
система Fluent Design для разработки android и создания собственных приложений android, которые по-прежнему являются уникальными Fluent.
Источник