Что такое код hw_api >checkin

Содержание

Что такое код hw_api >checkin

hw_api->checkin — включает проверку версии объекта.

Описание

object checkin (array parameter)

Эта функция включает проверку версии объекта или всей иерархии объектов. Массив параметров содержит необходимый элемент ‘objectIdentifier’ и необязательные элементы ‘version’, ‘comment’, ‘mode’ и ‘objectQuery’.
‘version’ устанавливает версию объекта. Он состоит из наибольшей и наименьшей версий объекта, разделённых тире. Если версия не установлена, увеличивается минимальная версия.
‘mode’ может иметь одно из следующих значений: HW_API_CHECKIN_NORMAL

Регистрирует и подтверждает объект. Объектом обязан быть document.

Если регистрируемый объект находится в коллекции, все потомки будут зарегистрированы рекурсивно, если это документы. Попытка регистрации коллекции приведёт к ошибке.

Регистрирует объект, даже если он не находится под контролем версии.

Проверяет, отличается ли новая версия от последней. Если это так, объект будет зарегистрирован.

Сохраняет время модификации самого последнего объекта.

Объект не подтверждается автоматически при checkin.

hw_api::checkin — Checks in an object

(PHP 4, PHP 5 hw_api::checkin — Checks in an object

Описание

This function checks in an object or a whole hierarchy of objects. The parameters array contains the required element ‘objectIdentifier’ and the optional element ‘version’, ‘comment’, ‘mode’ and ‘objectQuery’. ‘version’ sets the version of the object. It consists of the major and minor version separated by a period. If the version is not set, the minor version is incremented. ‘mode’ can be one of the following values: HW_API_CHECKIN_NORMAL Checks in and commits the object. The object must be a document. HW_API_CHECKIN_RECURSIVE If the object to check in is a collection, all children will be checked in recursively if they are documents. Trying to check in a collection would result in an error. HW_API_CHECKIN_FORCE_VERSION_CONTROL Checks in an object even if it is not under version control. HW_API_CHECKIN_REVERT_IF_NOT_CHANGED Check if the new version is different from the last version. Unless this is the case the object will be checked in. HW_API_CHECKIN_KEEP_TIME_MODIFIED Keeps the time modified from the most recent object. HW_API_CHECKIN_NO_AUTO_COMMIT The object is not automatically committed on check-in.

Список параметров

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Руководство по построению HTTP API

Введение

Данное руководство содержит рекомендации по проектированию HTTP API, которые были почерпнуты из работы API облачной платформы Heroku, кроме того, оно также содержит информацию о новом функционале и внутреннем API в Heroku.

Нашими основными целями при построении API является соблюдение последовательности и концентрация на реализации бизнес-логики. Мы ищем различные, не обязательно самые лучшие, но хорошо документируемые способы разработки API.

При прочтении данной статьи подразумевается, что вы знакомы с основными принципами HTTP и JSON.

Основы

Принцип разделения ответственности

При проектировании старайтесь сохранять простоту системы, разделяя ответственность между различными частями цикла «запрос-ответ». При этом простота принимаемых решений позволит концентироваться на решении все более сложных задач. Запросы и ответы выполняются для получения доступа к определенному ресурсу или набору ресурсов. Для определения сущности, которую необходимо получить, используйте путь и тело ответа для передачи содержимого, а заголовки – для передачи метаданных. Можно передавать все параметры в теле запроса, но, как показывает практика, такое решение является менее гибким. Более правильным подходом будет передача части параметров в заголовках.

Требуйте использования защищенных соединений

Для получения данных при помощи API используйте только защищенные соединения с TLS.
Лучше решением было бы отклонять все запросы, не использующие TLS, а именно запросы по http или на 80-ый порт, во избежание небезопасного обмена данными. В случаях, когда это невозможно, отдавайте ответ 403 Forbidden .

15–16 ноября, Минск, 133–390 br

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

Требуйте наличие версии в заголовке Accept

Наличие нескольких версий и переходы между ними может быть одним из самых сложных аспектов проектирования и использования API. Поэтому лучше заранее учесть этот момент.

Для того, чтобы клиент не пользовался нестабильным API, лучше всего проверять наличие его версии в каждом запросе. При этом стоит избегать указания версии по умолчанию, поскольку это значительно усложняет заголовок, и эта версия также может меняться в будущем.

Лучше всего – добавить версию в заголовок вместе с другими метаданными, используя заголовок Accept с пользовательским типом содержимого:

Используйте заголовок ETags для кеширования

Включайте заголовок ETags во все запросы, определяя при этом версию возвращаемого ресурса. Это позволит пользователям кэшировать ресурсы и реализовывать условные запросы при помощи использования заголовка If-None-Match , который поможет определить, нужно обновлять кэш или нет.

Используйте Request-ID для интроспекции

Включайте заголовок Request-Id , содержащий в себе UUID значение, в каждый ответ сервера. Регистрируя эти значения на клиенте, сервере или другом сервисе, вы получаете возможность отлаживать и диагностировать проблемы, связанные с запросами.

Разделяйте большие ответы сервера на несколько небольших при помощи заголовка Range

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

Запросы

Возвращайте соответствующие коды состояний

Возвращайте соотвествующий код состояния HTTP в каждом ответе. Успешные ответы должны содержать такие коды состояний:

  • 200 – GET запрос завершился успешно, синхронный DELETE или PATCH запрос завершился успешно или синхронный PUT запрос обновил существующий ресурс.
  • 201 – Синхронный POST запрос завершился, синхронный PUT запрос создал новый ресурс.
  • 202 – Принят POST , PUT , DELETE или PATCH запрос, который будет обработан асинхронно.
  • 206 – GET запрос завершился успешно, но будет возвращен частичный ответ (см. раздел про заголовок Range ).

Обратите внимание на использование кодов состояния ошибок авторизации и аутентификации:

  • 401 Unauthorized – запрос завершился с ошибкой, поскольку пользователь не прошел аутентификацию.
  • 403 Forbidden – запрос завершился с ошибкой, так как пользователь не авторизовался для получения доступа к определенному ресурсу.

Возвращайте соответствующие коды ошибок для предоставления дополнительной информации об их причинах:

  • 422 Unprocessable Entity – Ваш запрос был распознан, но содержит неверные параметры.
  • 429 Too Many Requests – Превышен лимит запросов, попробуйте позже.
  • 500 Internal Server Error – Проблема на стороне сервера, проверьте состояние сайта и/или сообщите о проблеме.

Для получения более подробной информации о кодах состояния HTTP изучите спецификацию.

По возможности, предоставляйте полные версии ресурсов

Возвращайте пользователям вашего API полное представление ресурса (то есть объект со всеми атрибутами) во всех ответах, где это возможно. Всегда предоставляйте полную версию ресурса в ответах на запросы с кодами состояния 200 и 201 , включая PUT , PATCH и DELETE запросы.

Ответы на запросы с кодом состояния 202 не должны содержать все поля объекта

Ваш API должен принимать сериализованный JSON в теле запроса

Ваш API должен предусматривать возможность передачи сереализованного JSON в теле PUT / PATCH / POST запросов вместо, либо в дополнение к передаваемым данным формы. Таким образом создается симметрия в JSON-ответах:

Будьте последовательны при конструировании пути к ресурсу

Названия ресурсов

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

Действия

Старайтесь проектировать такие конечные url, которые не требуют дополнительных действий для отдельных ресурсов. В случаях, когда это необходимо, добавляйте в общий путь компонент «action» для того, чтобы четко определить эти действия:

Используйте названия компонентов пути и атрибутов в нижнем регистре

Для названий компонентов пути к ресурсу используйте нижний регистр и разделяйте их при помощи дефиса.

Названия атрибутов лучше писать в нижнем регистре, а в качестве разделителя лучше использовать нижнее подчеркивание – таким образом названия полей можно писать без скобок в Javascript:

Ваш API должен поддерживать доступ к ресурсу не только по его id

В некоторых случаях для конечных пользователей неудобен доступ к ресурсу по его идентификатору. Например, пользователю удобнее для доступа к конкретному приложению Heroku использовать название приложения, а не его UUID. В таких случаях нужно организовать доступ как по имени, так и по идентификатору:

Сведите к минимуму количество вложений в пути для доступа к ресурсу

В моделях данных, в которых присутствуют родительские отношения между сущностями, пути доступа к ресурсам могут иметь большой уровень вложенности:

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

Ответы

Предоставляйте UUID запрашиваемых ресурсов

У каждого ресурса по умолчанию должен быть атрибут id . В качестве значений идентификатора ресурса старайтесь всегда использовать UUID. Не используйте идентификаторы, которые не будут уникальными в масштабе вашего сервиса, особенно автоинкрементные идентификаторы.
UUID ресурса выводите в формате 8-4-4-4-12:

Предоставляйте информацию о дате создания и изменения ресурса

По умолчанию ресурс должен хранить информацию о дате его создания created_at и обновления updated_at .

Временные величины должны быть форматированы согласно ISO8601

Принимайте и возвращайте временные данные только в UTC, а выводите в формате ISO8601:

Отношения с внешними сущностями должны быть вынесены во вложенный объект

Внешние отношения должны быть сериализованы как вложенный объект:

А не как поле объекта:

Такой подход позволяет добавить больше информации о связанном объекте без необходимости менять структуру ответа:

Создавайте структурированные ответы в случае возникновения ошибок

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

Показывайте ограничение по количеству запросов

Ограничение по количеству запросов вводится для поддержания работоспособности системы и возможности качественного обслуживания других клиентов. Для расчета ограничений на количество запросов можно использовать алгоритм текущего ведра. Возвращайте оставшееся количество запросов для каждого запроса в заголовке ответа RateLimit-Remaining .

JSON во всех ответах должен быть минимизирован

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

Вы можете опционально добавить возможность получать более развернутый ответ, указывая дополнительный параметр (например, ?pretty=true ) или задавая значения для заголовка Accept ( Accept: application/vnd.heroku+json; version=3; indent=4; ).

Артефакты

Предоставляйте удобную для обработки JSON-схему

Для точного описания вашего API предоставляйте JSON-схему. Для управления схемой используйте prmd, также удостоверьтесь в том, что она проходит валидацию при помощи команды prmd verify .

Предоставляйте удобочитаемую документацию

Для того, чтобы разработчики разбирались в принципах работы вашего API, предоставьте им удобную документацию. Если вы создали JSON-схему, используя prmd , как описано выше, вы можете легко сгенерировать Markdown документацию для всех конечных url, используя команду prmd doc .

Вдобавок к описанию конечных url, предоставьте обзор API, включая туда следующую информацию:

  • процесс аутентификации – получение и использование пользовательского токена;
  • стабильность API и его версию, а также информацию о том, как выбрать нужную версию API;
  • общие заголовки запросов и ответов;
  • формат выдачи ошибки;
  • примеры использования API с клиентами на разных языках;

Предоставляйте примеры запросов, которые можно протестировать

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

Если вы используете prmd для создания документации, то такие примеры будут сгенерированы автоматически для каждого конечного url.

Опишите стабильность вашего API

Вы можете описать степень стабильности вашего API или отдельных конечных url при помощи установки флагов prototype / development / production .

Для получения дополнительной информации, вы можете изучить документ Политика совместимости Heroku API.

Как только вы объявили ваш API готовым к релизу и стабильным, не стоит совершать модификаций, которые нарушают обратную совместимость внутри этой версии. Для внесения таких изменений создайте новою ветвь API с новым индексом версии.

Что такое код hw_api >checkin

(no version information, might be only in CVS)

hw_api->checkin — Checks in an object

Description bool hw_api->checkin ( array parameter )

This function checks in an object or a whole hierarchy of objects. The parameters array contains the required element ‘objectIdentifier’ and the optional element ‘version’, ‘comment’, ‘mode’ and ‘objectQuery’. ‘version’ sets the version of the object. It consists of the major and minor version separated by a period. If the version is not set, the minor version is incremented. ‘mode’ can be one of the following values:

Checks in and commits the object. The object must be a document.

If the object to check in is a collection, all children will be checked in recursively if they are documents. Trying to check in a collection would result in an error.

Checks in an object even if it is not under version control.

Check if the new version is different from the last version. Unless this is the case the object will be checked in.

Keeps the time modified from the most recent object.

The object is not automatically committed on check-in.

Что такое код hw_api >checkin

API (application programming interface) — это набор готовых классов, функций, процедур, структур и констант. Вся эта информация предоставляется самим приложением (или операционной системой). При этом пользователю не обязательно понимать, что это API технология обеспечивает взаимодействие модулей. Цель предоставленной информации – использование этих данных при взаимодействии с внешними программами.

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

В общем случае данный механизм применяется с целью объединения работы различных приложений в единую систему. Это достаточно удобно для исполнителей. Ведь в таком случае к другому приложению можно обращаться как к «черному ящику». При этом не имеет значения его внутренний механизм – программист может вообще не знать, что такое API.

Функции API

В процессе работы элементы механизма API организуют многоуровневую иерархию. При этом подчиненные компоненты также получают подобную структуру. Внутри стандартной сетевой модели OSI выделяют как минимум 7 внутренних уровней. Они классифицируются от физического уровня трансляции бит до приложений, таких как протоколы HTTP и IMAP. Таким образом API верхнего использует функциональность нижнего.

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

В этом случае сигнатура выступает как часть общего объявления функции. С ее помощью выполняется идентификация элемента. В различных языках написания программ она представлена разным способом. Тем самым определяется возможностями ее перезагрузки.

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

Эти компоненты дают возможность компилятору опознать функцию в языке C++. В тех случаях, когда она является методом определенного класса, ее сигнатура включается в имя этого класса.

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

Типы API

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

Илон Маск рекомендует:  Mysql библиотека отладчика mysql

В отдельные группы выделяют интерфейсы управления графическими компонентами программных модулей (API графических интерфейсов wxWidgets, Qt, GTK и т. п.), операционными системами (Amiga ROM Kernel, Cocoa, Linux Kernel APIruen, OS/2 API, POSIX, Windows API), звуковые (DirectMusic/DirectSound, OpenAL), оконные интерфейсы и так далее. Здесь их разделение определяется уровнем приложения в иерархии и функциональностью. Пользователи компьютерных игр обычно не подозревают, что это графический API обеспечивает им такую быструю отрисовку картинки и поразительную яркость изображений.

К глобальным API часто относят интерфейсы отдельных языков программирования. Но с их помощью можно управлять решением вполне конкретных и локальных задач. Все зависит от реализации определенного алгоритма.

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

  1. Трудности портирования кода программы при переходе от одной API к другой. Они часто появляются при переносе модулей в другие операционные системы.
  2. Снижения объема функциональности интерфейса при переходе к управлению с более низкого уровня на высокий. В этом случае облегчается выполнение строго определенного класса задач. При этом возможности доступа к элементам управления другими регуляторами теряются. Ведь более низкий уровень позволяет легко управлять базовыми компонентами программы.

API вебмастеров / поисковых систем

Для вебмастеров и программистов особенно важны Web API. Такие системы управления включают в себя комплект HTTP-запросов. В результате получения таких запросов модуль генерирует строго определенную структуру HTTP-ответов. Для транспортировки информации между ними принято использовать форматы XML или JSON.

Фактически в этом случае название Web API будет синонимом обозначения веб-службы. Иными словами, это определенные программные системы со своими интерфейсами. Для получения конкретного доступа к ним используется идентификация в сети по веб-адресу. Например, при передаче данный на сервер применяется серверный API.

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

Для обычных пользователей такие службы являются синонимами абсолютно обычных решений в Интернете. Это может быть почта, поисковая система, сервис хранения файлов, социальных закладок и так далее. В случае необходимости тестирования веб-службы на больших объемах разнообразных данных соответствующий API testing предоставляет механизм для такой объемной работы.

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

Примером использования в рекламе является API Яндекс.Директа. На его базе разработчики создают модули для управления рекламными кампаниями. При обращении к системам продвижения сайтов для повышения параметров SEO API предоставляет механизмы информационного взаимодействия.

Обычно порядок работы интерфейса стараются передать в его названии. Мы можем не найти в поиске, что такое syngestureapisampleapp application. Но из названия понятно, что это пример работы интерфейса для единичного пользователя.

При этом нужно учитывать изменения в интерфейсах, произошедшие после массового внедрения стандартов Web 2.0. В результате был выполнен переход протокола обмена структурированными данными в распределенной вычислительной среде SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) к архитектурному стилю взаимодействия компонентов распределенного приложения в сети REST (сокр. от англ. Representational State Transfer — «передача состояния представления»). Для многих веб-служб, в число которых входят поисковые системы и интернет-магазины, данный переход привел к упрощению архитектуры и ускорению выполнения задач. Правильная организация информационных потоков приводит к тому, что API сайта предоставляет широкие возможности автоматизации последнего.

При этом отдельные компоненты REST функционируют примерно таким же образом, как взаимодействуют между собой серверы и клиенты в Интернете. Хотя работа систем на архитектуре REST до сих пор не имеет единого стандарта, большинство RESTful-реализаций используют конкретные стандарты, такие как HTTP, URL, JSON и XML. Здесь особенно важно, что открытый API – это возможность дополнения и расширения системы взаимодействия.

Что такое API? Простое объяснение для начинающих

Этот краткий термин на слуху у всех, кто хоть как-то сталкивался с разработкой. Но далеко не все понимают, что именно он обозначает и зачем нужен. Разработчик Пётр Газаров рассказал об API простыми словами в своём блоге.

Аббревиатура API расшифровывается как «Application Programming Interface» (интерфейс программирования приложений, программный интерфейс приложения). Большинство крупных компаний на определённом этапе разрабатывают API для клиентов или для внутреннего использования. Чтобы понять, как и каким образом API применяется в разработке и бизнесе, сначала нужно разобраться, как устроена «всемирная паутина».

Всемирная паутина и удалённые серверы

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

При введении в адресную строку браузера www.facebook.com на удалённый сервер Facebook отправляется соответствующий запрос. Как только браузер получает ответ, то интерпретирует код и отображает страницу.

Каждый раз, когда пользователь посещает какую-либо страницу в сети, он взаимодействует с API удалённого сервера. API — это составляющая часть сервера, которая получает запросы и отправляет ответы.

API как способ обслуживания клиентов

Многие компании предлагают API как готовый продукт. Например, Weather Underground продаёт доступ к своему API для получения метеорологических данных.

Сценарий использования: на сайте небольшой компании есть форма для записи клиентов на приём. Компания хочет встроить в него Google Календарь, чтобы дать клиентам возможность автоматически создавать событие и вносить детали о предстоящей встрече.

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

В качестве альтернативы браузер может сделать запрос к API сервера Google, минуя сервер компании.

Чем API Google Календаря отличается от API любого другого удалённого сервера в сети?

Технически, разница в формате запроса и ответа. Чтобы сгенерировать полную веб-страницу, браузер ожидает ответ на языке разметки HTML, в то время как API Google Календаря вернёт просто данные в формате вроде JSON.

Если запрос к API делает сервер веб-сайта компании, то он и является клиентом (так же, как клиентом выступает браузер, когда пользователь открывает веб-сайт).

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

Большинство современных сайтов используют по крайней мере несколько сторонних API. Многие задачи уже имеют готовые решения, предлагаемые сторонними разработчиками, будь то библиотека или услуга. Зачастую проще и надёжнее прибегнуть именно к уже готовому решению.

Многие разработчики разносят приложение на несколько серверов, которые взаимодействуют между собой при помощи API. Серверы, которые выполняют вспомогательную функцию по отношению к главному серверу приложения, называются микросервисами.

Таким образом, когда компания предлагает своим пользователям API, это просто означает, что она создала ряд специальных URL, которые в качестве ответа возвращают только данные.

Такие запросы часто можно отправлять через браузер. Так как передача данных по протоколу HTTP происходит в текстовом виде, браузер всегда сможет отобразить ответ. Например, через браузер можно напрямую обратиться к API GitHub (https://api.github.com/users/petrgazarov), причём без маркера доступа, и получить вот такой ответ в формате JSON:

Браузер отлично отображает JSON-ответ, который вполне можно вставлять в код. Из такого текста достаточно просто извлечь данные, чтобы использовать их по своему усмотрению.

Ещё несколько примеров API

Слово «application» (прикладной, приложение) может применяться в разных значениях. В контексте API оно подразумевает:

  • фрагмент программного обеспечения с определённой функцией,
  • сервер целиком, приложение целиком или же просто отдельную часть приложения.

Любой фрагмент ПО, который можно чётко выделить из окружения, может заменять букву «А» в англоязычной аббревиатуре, и тоже может иметь некоторого рода API. Например, при внедрении в код разработчиком сторонней библиотеки, она становится частью всего приложения. Будучи самостоятельным фрагментом ПО, библиотека будет иметь некий API, который позволит ей взаимодействовать с остальным кодом приложения.

В объектно-ориентированном проектировании код представлен в виде совокупности объектов. В приложении таких объектов, взаимодействующих между собой, могут быть сотни. У каждого из них есть свой API — набор публичных свойств и методов для взаимодействия с другими объектами в приложении. Объекты могут также иметь частную, внутреннюю логику, которая скрыта от окружения и не является API.

Общие сведения об уровнях API Android Understanding Android API levels

Xamarin. Android имеет несколько параметров уровня API Android, которые определяют совместимость приложения с несколькими версиями Android. В этом руководство объясняется, что означают эти параметры, как их настроить и как они влияют на приложение во время выполнения. Xamarin.Android has several Android API level settings that determine your app’s compatibility with multiple versions of Android. This guide explains what these settings mean, how to configure them, and what effect they have on your app at run time.

Быстрое начало работы Quick start

Xamarin. Android предоставляет три параметра проекта уровня API Android: Xamarin.Android exposes three Android API level project settings:

Целевая платформа – указывает, какая платформа будет использоваться при сборке приложения. Target Framework – Specifies which framework to use in building your application. Этот уровень API используется на этапе компиляции Xamarin. Android. This API level is used at compile time by Xamarin.Android.

Минимальная версия android – указывает самую раннюю версию Android, которую должно поддерживать ваше приложение. Minimum Android Version – Specifies the oldest Android version that you want your app to support. Этот уровень API используется Android во время выполнения . This API level is used at run time by Android.

Целевая версия android – указывает версию Android, на которой должно выполняться приложение. Target Android Version – Specifies the version of Android that your app is intended to run on. Этот уровень API используется Android во время выполнения . This API level is used at run time by Android.

Прежде чем можно будет настроить уровень API для проекта, необходимо установить компоненты платформы SDK для этого уровня API. Before you can configure an API level for your project, you must install the SDK platform components for that API level. Дополнительные сведения о загрузке и установке компонентов пакет SDK для Android см. в разделе пакет SDK для Android Setup. For more information about downloading and installing Android SDK components, see Android SDK Setup.

Начиная с августа 2020, консоль Google Play потребует, чтобы новые приложения были нацелены на уровень API 26 (Android 8,0) или более поздней версии. Beginning in August 2020, the Google Play Console will require that new apps target API level 26 (Android 8.0) or higher. Существующие приложения должны быть нацелены на уровень API 26 или выше, начиная с ноября 2020. Existing apps will be required to target API level 26 or higher beginning in November 2020. Дополнительные сведения см. в статье улучшение безопасности и производительности приложений на Google Play в течение года. For more information, see Improving app security and performance on Google Play for years to come.

Как правило, для всех трех уровней API Xamarin. Android задано одно и то же значение. Normally, all three Xamarin.Android API levels are set to the same value. На странице приложение задайте для параметра компилировать с помощью версии Android (Целевая платформа) последнюю стабильную версию API (или, как минимум, до версии Android, которая содержит все необходимые компоненты). On the Application page, set Compile using Android version (Target Framework) to the latest stable API version (or, at a minimum, to the Android version that has all of the features you need). На следующем снимке экрана для целевой платформы задано значение Android 7,1 (API уровня 25-Nougat) : In the following screenshot, the Target Framework is set to Android 7.1 (API Level 25 — Nougat):

На странице манифеста Android установите минимальную версию Android для использования компиляции с использованием версии пакета SDK и задайте для целевой версии Android то же значение, что и для целевой версии .NET Framework (на следующем снимке экрана Целевая платформа Android имеет значение Android 7,1 (Nougat) ): On the Android Manifest page, set the Minimum Android version to Use Compile using SDK version and set the Target Android version to the same value as the Target Framework version (in the following screenshot, the Target Android Framework is set to Android 7.1 (Nougat)):

Если вы хотите обеспечить обратную совместимость с более ранней версией Android, задайте для минимальной версии Android целевую версию Android, которая будет поддерживаться вашим приложением. If you want to maintain backward compatibility with an earlier version of Android, set Minimum Android version to target to the oldest version of Android that you want your app to support. (Обратите внимание, что уровень API 14 — это минимальный уровень API, необходимый для Google Play служб и поддержки Firebase.) В следующем примере конфигурация поддерживает версии Android из API уровня 14 через уровень API 25. (Note that API Level 14 is the minimum API level required for Google Play services and Firebase support.) The following example configuration supports Android versions from API Level 14 through API level 25:

Как правило, для всех трех уровней API Xamarin. Android задано одно и то же значение. Normally, all three Xamarin.Android API levels are set to the same value. Задайте для целевой платформы последнюю стабильную версию API (или, как минимум, до версии Android, которая содержит все необходимые компоненты). Set Target framework to the latest stable API version (or, at a minimum, to the Android version that has all of the features you need). Чтобы задать целевую платформу, перейдите к разделу Сборка > общие в параметрах проекта. To set the Target framework, navigate to Build > General in the Project Options. На следующем снимке экрана Целевая платформа настроена для использования последней установленной платформы (8,0) : In the following screenshot, the Target Framework is set to Use the latest installed platform (8.0):

Параметры минимальной и целевой версий Android можно найти в разделе сборка > приложение Android в параметрах проекта. The Minimum and Target Android version settings can be found under Build > Android Application in Project Options. Задайте минимальную версию Android для автоматического использования целевой версии .NET Framework и задайте в качестве целевой версии Android то же значение, что и у целевой версии .NET Framework. Set the Minimum Android version to Automatic — use target framework version and set the Target Android version to the same value as the Target Framework version. На следующем снимке экрана Целевая платформа Android настроена на android 8,0 (API уровня 26) в соответствии с параметром целевой платформы выше: In the following screenshot, the Target Android Framework is set to Android 8.0 (API level 26) to match the Target Framework setting above:

Если вы хотите обеспечить обратную совместимость с более ранней версией Android, измените минимальную версию Android на самую старую версию Android, которую должно поддерживать ваше приложение. If you want to maintain backward compatibility with an earlier version of Android, change Minimum Android version to the oldest version of Android that you want your app to support. Обратите внимание, что уровень API 14 — это минимальный уровень API, необходимый для Google Play служб и поддержки Firebase. Note that API Level 14 is the minimum API level required for Google Play services and Firebase support. Например, следующая конфигурация поддерживает версии Android как раньше, чем API уровня 14: For example, the following configuration supports Android versions as early as API Level 14:

Если приложение поддерживает несколько версий Android, в коде должны содержаться проверки среды выполнения, чтобы обеспечить работу приложения с минимальной версией Android (Дополнительные сведения см. в разделе проверки среды выполнения для версий Android ниже). If your app supports multiple Android versions, your code must include runtime checks to ensure that your app works with the Minimum Android version setting (see Runtime Checks for Android Versions below for details). Если вы используете или создаете библиотеку, ознакомьтесь со статьей уровни API и библиотеки ниже, чтобы получить рекомендации по настройке параметров уровня API для библиотек. If you are consuming or creating a library, see API Levels and Libraries below for best practices in configuring API level settings for libraries.

Версии Android и уровни API Android versions and API levels

По мере развития платформы Android и выпуска новых версий Android каждой версии Android назначается уникальный целочисленный идентификатор, называемый уровнем API. As the Android platform evolves and new Android versions are released, each Android version is assigned a unique integer identifier, called the API Level. Таким образом, каждая версия Android соответствует одному уровню API Android. Therefore, each Android version corresponds to a single Android API Level. Так как пользователи устанавливают приложения на более ранних версий, а также в самых последних версиях Android, приложения для работы в реальном времени для Android должны быть разработаны с несколькими уровнями API Android. Because users install apps on older as well as the most recent versions of Android, real-world Android apps must be designed to work with multiple Android API levels.

Версии Android Android versions

Каждый выпуск Android проходит несколько имен: Each release of Android goes by multiple names:

  • Версия Android, например android 9,0 The Android version, such as Android 9.0
  • Имя кода (или десерт), например круговая диаграмма A code (or dessert) name, such as Pie
  • Соответствующий уровень API, например уровень API 28 A corresponding API level, such as API level 28
Илон Маск рекомендует:  Псевдокласс fullscreen в CSS

Имя кода Android может соответствовать нескольким версиям и уровням API (как показано в таблице ниже), но каждая версия Android соответствует ровно одному уровню API. An Android code name may correspond to multiple versions and API levels (as seen in the table below), but each Android version corresponds to exactly one API level.

Кроме того, Xamarin. Android определяет коды версий сборки , которые сопоставляются с известными уровнями API Android. In addition, Xamarin.Android defines build version codes that map to the currently known Android API levels. Следующая таблица поможет вам выполнить преобразование между уровнем API, версией Android, кодовым именем и кодом версии сборки Xamarin. Android (коды версий сборки определяются в пространстве имен Android.OS ): The following table can help you translate between API level, Android version, code name, and Xamarin.Android build version code (build version codes are defined in the Android.OS namespace):

name Name Version Version Уровень API API Level Выпущено Released Код версии сборки Build Version Code
Круговая диаграмма Pie 9.0 9.0 28 28 Авг 2020 Aug 2020 BuildVersionCodes.P
Oreo Oreo 8.1 8.1 27 27 Dec 2020 Dec 2020 BuildVersionCodes.OMr1
Oreo Oreo 8.0 8.0 26 26 Авг 2020 Aug 2020 BuildVersionCodes.O
Nougat Nougat 7.1 7.1 25 25 Dec 2020 Dec 2020 BuildVersionCodes.NMr1
Nougat Nougat 7.0 7.0 24 24 Авг 2020 Aug 2020 BuildVersionCodes.N
Marshmallow Marshmallow 6.0 6.0 23 23 Авг 2015 Aug 2015 BuildVersionCodes.M
Интерфейса Lollipop 5.1 5.1 22 22 Мар 2015 Mar 2015 BuildVersionCodes.LollipopMr1
Интерфейса Lollipop 5.0 5.0 21 21 2014 ноября Nov 2014 BuildVersionCodes.Lollipop
KitKat Watch Kitkat Watch 4.4 W 4.4W 20 20 Июнь 2014 Jun 2014 BuildVersionCodes.KitKatWatch
KitKat Kitkat 4,4 4.4 19 19 Октябрь 2013 Oct 2013 BuildVersionCodes.KitKat
Jelly Bean Jelly Bean 4.3 4.3 18 18 Июл 2013 Jul 2013 BuildVersionCodes.JellyBeanMr2
Jelly Bean Jelly Bean 4.2 — 4.2.2 4.2-4.2.2 17 17 2012 ноября Nov 2012 BuildVersionCodes.JellyBeanMr1
Jelly Bean Jelly Bean 4.1 — 4.1.1 4.1-4.1.1 16 16 Июнь 2012 Jun 2012 BuildVersionCodes.JellyBean
Южные Сандвичевы Ice Cream Sandwich 4.0.3 — 4.0.4 4.0.3-4.0.4 15 15 Dec 2011 Dec 2011 BuildVersionCodes.IceCreamSandwichMr1
Южные Сандвичевы Ice Cream Sandwich 4.0 — 4.0.2 4.0-4.0.2 14 14 Октябрь 2011 Oct 2011 BuildVersionCodes.IceCreamSandwich
хонэйкомб Honeycomb 3,2 3.2 13 13 Июнь 2011 Jun 2011 BuildVersionCodes.HoneyCombMr2
хонэйкомб Honeycomb 3.1. x 3.1.x 12 12 Май 2011 May 2011 BuildVersionCodes.HoneyCombMr1
хонэйкомб Honeycomb 3.0. x 3.0.x 11 11 Фев 2011 Feb 2011 BuildVersionCodes.HoneyComb
Gingerbread Gingerbread 2.3.3 — 2.3.4 2.3.3-2.3.4 10 10 Фев 2011 Feb 2011 BuildVersionCodes.GingerBreadMr1
Gingerbread Gingerbread 2.3 — 2.3.2 2.3-2.3.2 9 9 2010 ноября Nov 2010 BuildVersionCodes.GingerBread
фройо Froyo 2.2. x 2.2.x 8 8 Июнь 2010 Jun 2010 BuildVersionCodes.Froyo
еклаир Eclair 2.1. x 2.1.x 7 7 янв 2010 Jan 2010 BuildVersionCodes.EclairMr1
еклаир Eclair 2.0.1 2.0.1 6 6 Dec 2009 Dec 2009 BuildVersionCodes.Eclair01
еклаир Eclair 2.0 2.0 5 5 2009 ноября Nov 2009 BuildVersionCodes.Eclair
Кольцо Donut 1.6 1.6 4 4 Sep 2009 Sep 2009 BuildVersionCodes.Donut
купкаке Cupcake 1.5 1.5 3 3 Май 2009 May 2009 BuildVersionCodes.Cupcake
Базовый Base 1.1 1.1 2 2 Фев 2009 Feb 2009 BuildVersionCodes.Base11
Базовый Base 1.0 1.0 1 1 Октябрь 2008 Oct 2008 BuildVersionCodes.Base

Как показано в этой таблице, новые версии Android часто выпускаются – иногда более чем на один выпуск в год. As this table indicates, new Android versions are released frequently – sometimes more than one release per year. В результате среда устройств Android, на которых может работать ваше приложение, включает в себя множество более старых и более новых версий Android. As a result, the universe of Android devices that might run your app includes of a wide variety of older and newer Android versions. Как вы можете гарантировать, что приложение будет выполняться единообразно и надежно на разных версиях Android? How can you guarantee that your app will run consistently and reliably on so many different versions of Android? Уровни API для Android могут помочь в управлении этой проблемой. Android’s API levels can help you manage this problem.

Уровни API Android Android API levels

Каждое устройство Android выполняется на уровне API, – этот уровень API гарантированно уникален для каждой версии платформы Android. Each Android device runs at exactly one API level – this API level is guaranteed to be unique per Android platform version. Уровень API точно определяет версию набора API, к которому может обращаться приложение. Он определяет сочетание элементов манифеста, разрешений и т. д., которые вы задаете в качестве разработчика. The API level precisely identifies the version of the API set that your app can call into; it identifies the combination of manifest elements, permissions, etc. that you code against as a developer. Система Android на уровнях API позволяет Android определить, совместимо ли приложение с образом системы Android перед установкой приложения на устройстве. Android’s system of API levels helps Android determine whether an application is compatible with an Android system image prior to installing the application on a device.

При сборке приложения он содержит следующие сведения об уровне API: When an application is built, it contains the following API level information:

Целевой уровень API Android, на котором построено приложение для запуска. The target API level of Android that the app is built to run on.

Минимальный уровень API Android, который должен иметь устройство Android для запуска приложения. The minimum Android API level that an Android device must have to run your app.

Эти параметры используются, чтобы убедиться, что функции, необходимые для корректного запуска приложения, доступны на устройстве Android во время установки. These settings are used to ensure that the functionality needed to run the app correctly is available on the Android device at installation time. В противном случае приложение блокируется на этом устройстве. If not, the app is blocked from running on that device. Например, если уровень API устройства Android ниже минимального уровня API, указанного для приложения, устройство Android не позволит пользователю установить приложение. For example, if the API level of an Android device is lower than the minimum API level that you specify for your app, the Android device will prevent the user from installing your app.

Параметры уровня API проекта Project API level settings

В следующих разделах объясняется, как с помощью диспетчера пакетов SDK подготовить среду разработки для уровней API, которые вы хотите ориентировать, а затем подробно объяснить, как настроить целевую платформу, минимальную версию Androidи Параметры целевой версии Android в Xamarin. Android. The following sections explain how to use the SDK Manager to prepare your development environment for the API levels you want to target, followed by detailed explanations of how to configure Target Framework, Minimum Android version, and Target Android version settings in Xamarin.Android.

Платформы пакет SDK для Android Android SDK platforms

Прежде чем можно будет выбрать целевой или минимальный уровень API в Xamarin. Android, необходимо установить пакет SDK для Android версию платформы, соответствующую этому уровню API. Before you can select a Target or Minimum API level in Xamarin.Android, you must install the Android SDK platform version that corresponds to that API level. Диапазон доступных вариантов для целевой платформы, минимальной версии Android и целевой версии Android ограничен диапазоном установленных версий пакет SDK для Android. The range of available choices for Target Framework, Minimum Android version, and Target Android version is limited to the range of Android SDK versions that you have installed. С помощью диспетчера пакетов SDK можно проверить, установлены ли требуемые версии пакет SDK для Android, и можно использовать ее для добавления новых уровней API, необходимых для приложения. You can use the SDK Manager to verify that the required Android SDK versions are installed, and you can use it to add any new API levels that you need for your app. Если вы не знакомы с установкой уровней API, см. раздел пакет SDK для Android Setup. If you are not familiar with how to install API levels, see Android SDK Setup.

Требуемая версия .NET Framework Target Framework

Целевая платформа (также известная как compileSdkVersion ) — это конкретная версия платформы Android (уровень API), для которой компилируется приложение во время сборки. The Target Framework (also known as compileSdkVersion ) is the specific Android framework version (API level) that your app is compiled for at build time. Этот параметр указывает, какие API- интерфейсы будет использовать приложение при его запуске, но не влияет на то, какие API фактически доступны для приложения при его установке. This setting specifies what APIs your app expects to use when it runs, but it has no effect on which APIs are actually available to your app when it is installed. В результате изменение параметра целевой платформы не приводит к изменению поведения среды выполнения. As a result, changing the Target Framework setting does not change runtime behavior.

Целевая платформа определяет версии библиотек, с которыми связано приложение, – этот параметр определяет, какие интерфейсы API можно использовать в приложении. The Target Framework identifies which library versions your application is linked against – this setting determines which APIs you can use in your app. Например, если вы хотите использовать метод нотификатионбуилдер. сеткатегори , который появился в интерфейсе программирования Android 5,0, необходимо задать целевую платформу на уровне API 21 (без описания операций) или более поздней версии. For example, if you want to use the NotificationBuilder.SetCategory method that was introduced in Android 5.0 Lollipop, you must set the Target Framework to API Level 21 (Lollipop) or later. Если задать целевую платформу проекта на уровне API, например на уровне API 19 (KitKat) , и попытаться вызвать метод SetCategory в коде, возникнет ошибка компиляции. If you set your project’s Target Framework to an API level such as API Level 19 (KitKat) and try to call the SetCategory method in your code, you will get a compile error.

Рекомендуется всегда компилироваться с последней доступной версией целевой платформы. We recommend that you always compile with the latest available Target Framework version. Это позволяет получить полезные предупреждения для всех устаревших интерфейсов API, которые могут быть вызваны кодом. Doing so provides you with helpful warning messages for any deprecated APIs that might be called by your code. Использование последней версии целевой платформы особенно важно при использовании последних выпусков библиотеки поддержки – каждая библиотека предполагает, что приложение должно быть скомпилировано на основе минимального уровня API библиотеки поддержки или выше. Using the latest Target Framework version is especially important when you use the latest support library releases – each library expects your app to be compiled at that support library’s minimum API level or greater.

Чтобы получить доступ к параметру целевой платформы в Visual Studio, откройте свойства проекта в Обозреватель решений и выберите страницу приложения : To access the Target Framework setting in Visual Studio, open the project properties in Solution Explorer and select the Application page:

Задайте целевую платформу, выбрав уровень API в раскрывающемся меню в разделе компилировать с использованием версии Android , как показано выше. Set the Target Framework by selecting an API level in the drop-down menu under Compile using Android version as shown above.

Чтобы получить доступ к параметру целевой платформы в Visual Studio для Mac, щелкните правой кнопкой мыши имя проекта и выберите пункт Параметры. Откроется диалоговое окно Параметры проекта . To access the Target Framework setting in Visual Studio for Mac, right-click the project name and select Options; this opens the Project Options dialog. В этом диалоговом окне перейдите в раздел Build > General (общие ), как показано ниже: In this dialog, navigate to Build > General as shown here:

Задайте целевую платформу, выбрав уровень API в раскрывающемся меню справа от целевой платформы , как показано выше. Set the Target Framework by selecting an API level in the drop-down menu to the right of Target framework as shown above.

Минимальная версия Android Minimum Android Version

Минимальная версия Android (также известная как minSdkVersion ) — это самая старая версия ОС Android (то есть самый низкий уровень API), которая может установить и запустить приложение. The Minimum Android version (also known as minSdkVersion ) is the oldest version of the Android OS (i.e., the lowest API level) that can install and run your application. По умолчанию приложение может быть установлено только на устройствах, соответствующих параметру целевой платформы или выше. Если минимальная версия Android меньше, чем Целевая платформа, приложение также может работать в более ранних версиях Android. By default, an app can only be installed on devices matching the Target Framework setting or higher; if the Minimum Android version setting is lower than the Target Framework setting, your app can also run on earlier versions of Android. Например, если задать в качестве целевой платформы android 7,1 (Nougat) и установить для минимальной версии Android значение Android 4.0.3 (Ice-Южные Сандвичевы) , приложение можно установить на любой платформе с уровня API 15 на уровень API 25 включительно. For example, if you set the Target Framework to Android 7.1 (Nougat) and set the Minimum Android version to Android 4.0.3 (Ice Cream Sandwich), your app can be installed on any platform from API level 15 to API level 25, inclusive.

Несмотря на то, что приложение может успешно создаваться и устанавливаться на этом диапазоне платформ, это не гарантирует, что он будет успешно запущен на всех этих платформах. Although your app may successfully build and install on this range of platforms, this does not guarantee that it will successfully run on all of these platforms. Например, если приложение установлено в android 5,0 (без описания операций) и код вызывает API, доступный только в Android 7,1 (Nougat) и более поздней версии, приложение получит ошибку во время выполнения и, возможно, приведет к сбою. For example, if your app is installed on Android 5.0 (Lollipop) and your code calls an API that is available only in Android 7.1 (Nougat) and newer, your app will get a runtime error and possibly crash. Поэтому код должен обеспечить – во время выполнения –, что он вызывает только те интерфейсы API, которые поддерживаются устройством Android, на котором оно выполняется. Therefore, your code must ensure – at runtime – that it calls only those APIs that are supported by the Android device that it is running on. Иными словами, код должен включать явные проверки среды выполнения, чтобы гарантировать, что приложение использует более новые API только на тех устройствах, которые достаточно актуальны для их поддержки. In other words, your code must include explicit runtime checks to ensure that your app uses newer APIs only on devices that are recent enough to support them. Проверка среды выполнения для версий Androidдалее в этом руководство объясняет, как добавить эти проверки среды выполнения в код. Runtime Checks for Android Versions, later in this guide, explains how to add these runtime checks to your code.

Чтобы получить доступ к параметру минимальной версии Android в Visual Studio, откройте свойства проекта в Обозреватель решений и выберите страницу манифеста Android . To access the Minimum Android version setting in Visual Studio, open the project properties in Solution Explorer and select the Android Manifest page. В раскрывающемся меню в разделе Минимальная версия Android можно выбрать минимальную версию Android для приложения: In the drop-down menu under Minimum Android version you can select the Minimum Android version for your application:

Если выбрать параметр использовать компиляцию с использованием версии пакета SDK, минимальная версия Android будет совпадать с целевой платформой. If you select Use Compile using SDK version, the Minimum Android version will be the same as the Target Framework setting.

Чтобы получить доступ к минимальной версии Android в Visual Studio для Mac, щелкните правой кнопкой мыши имя проекта и выберите пункт Параметры. Откроется диалоговое окно Параметры проекта . To access the Minimum Android version in Visual Studio for Mac, right-click the project name and select Options; this opens the Project Options dialog. Перейдите к сборке > приложение Android. Navigate to Build > Android Application. С помощью раскрывающегося меню справа от минимальной версии Androidможно задать минимальную версию Android для приложения: Using the drop-down menu to the right of Minimum Android version, you can set the Minimum Android version for your application:

При выборе параметра автоматически – использовать целевую версию .NET Frameworkминимальная версия Android будет совпадать с целевой платформой. If you select Automatic – use target framework version, the Minimum Android version will be the same as the Target Framework setting.

Целевая версия Android Target Android Version

Целевая версия Android (также известная как targetSdkVersion ) — это уровень API устройства Android, на котором должно выполняться приложение. The Target Android Version (also known as targetSdkVersion ) is the API level of the Android device where the app expects to run. Android использует этот параметр, чтобы определить, следует ли включить любое поведение совместимости – это гарантирует, что приложение продолжит работать так, как вы планируете. Android uses this setting to determine whether to enable any compatibility behaviors – this ensures that your app continues to work the way you expect. Android использует параметр целевой версии Android приложения, чтобы определить, какие изменения поведения можно применить к приложению без его нарушения (это то, как Android обеспечивает прямую совместимость). Android uses the Target Android version setting of your app to figure out which behavior changes can be applied to your app without breaking it (this is how Android provides forward compatibility).

Целевая платформа и Целевая версия Android с очень похожими именами не совпадают. The Target Framework and the Target Android version, while having very similar names, are not the same thing. Параметр целевой платформы передает сведения о целевом уровне API в Xamarin. Android для использования во время компиляции, а Целевая версия Android передает сведения о ЦЕЛЕВом интерфейсе API в Android для использования во время выполнения (если приложение установлен и работает на устройстве). The Target Framework setting communicates target API level information to Xamarin.Android for use at compile time, while the Target Android version communicates target API level information to Android for use at run time (when the app is installed and running on a device).

Чтобы получить доступ к этому параметру в Visual Studio, откройте свойства проекта в Обозреватель решений и выберите страницу манифеста Android . To access this setting in Visual Studio, open the project properties in Solution Explorer and select the Android Manifest page. В раскрывающемся меню в разделе Целевая версия Android можно выбрать целевую версию Android для приложения: In the drop-down menu under Target Android version you can select the Target Android version for your application:

Рекомендуется явно указать в качестве целевой версии Android последнюю версию Android, используемую для тестирования приложения. We recommend that you explicitly set the Target Android version to the latest version of Android that you use to test your app. В идеале для него следует установить последнюю версию пакет SDK для Android – это позволяет использовать новые интерфейсы API до начала работы с изменениями поведения. Ideally, it should be set to the latest Android SDK version – this allows you to use new APIs prior to working through the behavior changes. Для большинства разработчиков не рекомендуется задавать в качестве целевой версии Android Использование функции Compile с использованием версии пакета SDK. For most developers, we do not recommend setting the Target Android version to Use Compile using SDK version.

Чтобы получить доступ к этому параметру в Visual Studio для Mac, щелкните правой кнопкой мыши имя проекта и выберите пункт Параметры. Откроется диалоговое окно Параметры проекта . To access this setting in Visual Studio for Mac, right-click the project name and select Options; this opens the Project Options dialog. Перейдите к сборке > приложение Android. Navigate to Build > Android Application. С помощью раскрывающегося меню справа от целевой версии Androidможно задать целевую версию Android для приложения: Using the drop-down menu to the right of Target Android version, you can set the Target Android version for your application:

Рекомендуется явно указать в качестве целевой версии Android последнюю версию Android, используемую для тестирования приложения. We recommend that you explicitly set the Target Android version to the latest version of Android that you use to test your app. В идеале следует установить последнюю доступную версию пакет SDK для Android – это позволяет использовать новые интерфейсы API до начала работы с изменениями поведения. Ideally, it should be set to the latest available Android SDK version – this allows you to use new APIs prior to working through the behavior changes. Для большинства разработчиков не рекомендуется устанавливать целевую версию Android для автоматического использования целевой версии .NET Framework. For most developers, we do not recommend setting the Target Android version to Automatic — use target framework version.

В общем случае целевая версия Android должна быть ограничена минимальной версией Android и целевой платформой. In general, the Target Android Version should be bounded by the Minimum Android Version and the Target Framework. Это означает следующее: That is:

Минимальная версия Andro > Minimum Andro >

Дополнительные сведения об уровнях пакета SDK см. в документации разработчика Android с помощью пакета SDK . For more information about SDK levels, see the Android Developer uses-sdk documentation.

Проверки среды выполнения для версий Android Runtime checks for Android versions

После выпуска каждой новой версии Android API платформы обновляется для предоставления новых или замещающих функций. As each new version of Android is released, the framework API is updated to provide new or replacement functionality. За некоторыми исключениями, функциональные возможности API из предыдущих версий Android переносятся в более новые версии Android без изменений. With few exceptions, API functionality from earlier Android versions is carried forward into newer Android versions without modifications. В результате, если приложение работает на определенном уровне API Android, оно, как правило, будет работать на более позднем уровне API Android без изменений. As a result, if your app runs on a particular Android API level, it will typically be able to run on a later Android API level without modifications. Но что делать, если вы также хотите запустить приложение в более ранних версиях Android? But what if you also want to run your app on earlier versions of Android?

При выборе минимальной версии Android, которая ниже целевой платформы, некоторые API могут быть недоступны приложению во время выполнения. If you select a Minimum Android version that is lower than your Target Framework setting, some APIs may not be available to your app at runtime. Однако приложение по-прежнему может работать на более раннем устройстве, но с ограниченной функциональностью. However, your app can still run on an earlier device, but with reduced functionality. Для каждого API, который недоступен на платформах Android, соответствующих параметру минимальной версии Android, код должен явно проверить значение свойства Android.OS.Build.VERSION.SdkInt , чтобы определить уровень API платформы, на которой работает приложение. For each API that is not available on Android platforms corresponding to your Minimum Android version setting, your code must explicitly check the value of the Android.OS.Build.VERSION.SdkInt property to determine the API level of the platform the app is running on. Если уровень API меньше, чем минимальная версия Android, поддерживающая API, которую нужно вызвать, то код должен найти способ правильной работы без выполнения этого вызова API. If the API level is lower than the Minimum Android version that supports the API you want to call, then your code has to find a way to function properly without making this API call.

Например, предположим, что мы хотим использовать метод нотификатионбуилдер. сеткатегори для категоризации уведомлений при работе в программной интерфейсной системе Android 5,0 (и более поздних версиях), но мы по-прежнему хотим, чтобы наше приложение выполнялось в более ранних версиях Android, например Android 4,1 Jelly Bean (где SetCategory недоступно). For example, let’s suppose that we want to use the NotificationBuilder.SetCategory method to categorize a notification when running on Android 5.0 Lollipop (and later), but we still want our app to run on earlier versions of Android such as Android 4.1 Jelly Bean (where SetCategory is not available). Ссылка на таблицу версий Android в начале этого руководством, мы видим, что код версии сборки для Android 5,0 без описания операций Android.OS.BuildVersionCodes.Lollipop . Referring to the Android version table at the beginning of this guide, we see that the build version code for Android 5.0 Lollipop is Android.OS.BuildVersionCodes.Lollipop . Для поддержки более старых версий Android, когда SetCategory недоступна, наш код может определить уровень API во время выполнения и условно вызвать метод SetCategory только в том случае, если уровень API больше или равен коду версии сборки без описания операций: To support older versions of Android where SetCategory is not available, our code can detect the API level at runtime and conditionally call SetCategory only when the API level is greater than or equal to the Lollipop build version code:

В этом примере для нашей целевой платформы приложения задано значение android 5,0 (API уровня 21) , а для минимальной версии Android — Android 4,1 (уровень API 16) . In this example, our app’s Target Framework is set to Android 5.0 (API Level 21) and its Minimum Android version is set to Android 4.1 (API Level 16). Поскольку SetCategory доступен на уровне API Android.OS.BuildVersionCodes.Lollipop и более поздних версий, этот пример кода будет вызывать SetCategory только тогда, когда он действительно доступен – он не будет пытаться вызывать SetCategory , если уровень API равен 16. , 17, 18, 19 или 20. Because SetCategory is available in API level Android.OS.BuildVersionCodes.Lollipop and later, this example code will call SetCategory only when it is actually available – it will not attempt to call SetCategory when the API level is 16, 17, 18, 19, or 20. Эта функция в предыдущих версиях Android сокращается только до того экстента, в котором уведомления не сортируются должным образом (так как они не классифицируются по типу), но уведомления по-прежнему публикуются для оповещения пользователя. The functionality is reduced on these earlier Android versions only to the extent that notifications are not sorted properly (because they are not categorized by type), yet the notifications are still published to alert the user. Наше приложение по-прежнему работает, но его функциональные возможности немного уменьшаются. Our app still works, but its functionality is slightly diminished.

Как правило, проверка версии сборки помогает вашему коду принимать во время выполнения действия по сравнению со старым способом. In general, the build version check helps your code decide at runtime between doing something the new way versus the old way. Пример: For example:

Нет быстрого и простого правила, объясняющих, как сократить или изменить функциональность приложения при запуске в более старых версиях Android, в которых отсутствует один или несколько API-интерфейсов. There’s no fast and simple rule that explains how to reduce or modify your app’s functionality when it runs on older Android versions that are lacking one or more APIs. В некоторых случаях (например, в приведенном выше примере SetCategory ) достаточно опустить вызов API, если он недоступен. In some cases (such as in the SetCategory example above), it’s sufficient to omit the API call when it’s not available. Однако в других случаях может потребоваться реализовать альтернативную функциональность для случаев, когда Android.OS.Build.VERSION.SdkInt обнаруживается меньше уровня API, необходимого приложению для обеспечения его оптимального взаимодействия. However, in other cases, you may need to implement alternate functionality for when Android.OS.Build.VERSION.SdkInt is detected to be less than the API level that your app needs to present its optimum experience.

Уровни API и библиотеки API levels and libraries

При создании проекта библиотеки Xamarin. Android (например, библиотеки классов или библиотеки привязок) можно настроить только параметр целевой платформы – минимальная версия Android и параметры целевой версии Android недоступны. When you create a Xamarin.Android library project (such as a class library or a bindings library), you can configure only the Target Framework setting – the Minimum Android version and the Target Android version settings are not available. Это связано с тем, что отсутствует страница манифеста Android : That is because there is no Android Manifest page:

При создании проекта библиотеки Xamarin. Android нет страницы приложения Android , на которой можно настроить минимальную версию Android и целевую версию Android – минимальная версия Android и параметры целевой версии Android не имеющ. When you create a Xamarin.Android library project, there is no Android Application page where you can configure the Minimum Android version and the Target Android version – the Minimum Android version and Target Android version settings are not available. Это связано с тем, что отсутствует страница сборки > приложение Android : That is because there is no Build > Android Application page:

Параметры минимальной версии Android и целевой версии Android недоступны, так как итоговая библиотека не является автономным приложением – библиотека может быть запущена в любой версии Android в зависимости от приложения, с которым оно упаковано. The Minimum Android version and Target Android version settings are not available because the resulting library is not a stand-alone app – the library could be run on any Android version, depending on the app that it is packaged with. Можно указать способ компиляциибиблиотеки, но нельзя предсказать, на каком уровне API платформы будет выполняться библиотека. You can specify how the library is to be compiled, but you can’t predict which platform API level the library will be run on. Учитывая это, при использовании или создании библиотек следует соблюдать следующие рекомендации. With this in mind, the following best practices should be observed when consuming or creating libraries:

При использовании библиотеки Android – если в приложении используется библиотека Android, убедитесь, что параметру целевой платформы приложения присвоено значение уровня API, которое не меньше максимального значения параметра целевой платформы библиотеки. When consuming an Android library – If you are consuming an Android library in your application, be sure to set your app’s Target Framework setting to an API level that is at least as high as the Target Framework setting of the library.

При создании библиотеки Android – если вы создаете библиотеку Android для использования другими приложениями, убедитесь, что для параметра целевой платформы задан минимальный уровень API, необходимый для компиляции. When creating an Android library – If you are creating an Android library for use by other applications, be sure to set its Target Framework setting to the minimum API level that it needs in order to compile.

Эти рекомендации рекомендуется использовать для предотвращения ситуации, когда библиотека пытается вызвать API, который недоступен во время выполнения (что может привести к сбою приложения). These best practices are recommended to help prevent the situation where a library attempts to call an API that is not available at runtime (which can cause the app to crash). Если вы разработчик библиотеки, вам следует ограничить использование вызовов API небольшим и хорошо установленным подмножеством общей контактной зоны API. If you are a library developer, you should strive to restrict your usage of API calls to a small and well-established subset of the total API surface area. Это гарантирует, что библиотеку можно будет использовать в более широком диапазоне версий Android. Doing so helps to ensure that your library can be used safely across a wider range of Android versions.

Что такое код hw_api >checkin

hw_api->checkin — включает проверку версии объекта.

Описание

object checkin (array parameter)

Эта функция включает проверку версии объекта или всей иерархии объектов. Массив параметров содержит необходимый элемент ‘objectIdentifier’ и необязательный элементы ‘version’, ‘comment’, ‘mode’ и ‘objectQuery’.
‘version’ устанавливает версию объекта. Она состоит из наибольшей и наименьшей версий объекта, разделённых тире. Если версия не установлена, увеличивается минимальная версия.
‘mode’ может иметь одно из следующих значений: HW_API_CHECKIN_NORMAL

Регистрирует и подтверждает объект. Объектом обязан быть document.

Если регистрируемый объект находится в коллекции, все потомки будут зарегистрированы рекурсивно, если это документы. Попытка регистрации коллекции приведёт к ошибке.

Регистрирует объект, даже если он не находится под контролем версии.

Проверяет, отличается ли новая версия от последней. Если это так, объект будет зарегистрирован.

Сохраняет время модификации самого последнего объекта.

Объект не подтверждается автоматически при checkin.

hw_api->checkin

hw_api->checkin — включает проверку версии объекта.

Описание

object checkin (array parameter)

Эта функция включает проверку версии объекта или всей иерархии объектов. Массив параметров содержит необходимый элемент ‘objectIdentifier’ и необязательные элементы ‘version’, ‘comment’, ‘mode’ и ‘objectQuery’.
‘version’ устанавливает версию объекта. Он состоит из наибольшей и наименьшей версий объекта, разделённых тире. Если версия не установлена, увеличивается минимальная версия.
‘mode’ может иметь одно из следующих значений: HW_API_CHECKIN_NORMAL

Регистрирует и подтверждает объект. Объектом обязан быть document.

Если регистрируемый объект находится в коллекции, все потомки будут зарегистрированы рекурсивно, если это документы. Попытка регистрации коллекции приведёт к ошибке.

Регистрирует объект, даже если он не находится под контролем версии.

Проверяет, отличается ли новая версия от последней. Если это так, объект будет зарегистрирован.

Сохраняет время модификации самого последнего объекта.

Объект не подтверждается автоматически при checkin.

hw_api::checkin

(PHP 4, PHP 5 hw_api::checkin — Checks in an object

Description

This function checks in an object or a whole hierarchy of objects. The parameters array contains the required element ‘objectIdentifier’ and the optional element ‘version’, ‘comment’, ‘mode’ and ‘objectQuery’. ‘version’ sets the version of the object. It consists of the major and minor version separated by a period. If the version is not set, the minor version is incremented. ‘mode’ can be one of the following values:

HW_API_CHECKIN_NORMAL Checks in and commits the object. The object must be a document. HW_API_CHECKIN_RECURSIVE If the object to check in is a collection, all children will be checked in recursively if they are documents. Trying to check in a collection would result in an error. HW_API_CHECKIN_FORCE_VERSION_CONTROL Checks in an object even if it is not under version control. HW_API_CHECKIN_REVERT_IF_NOT_CHANGED Check if the new version is different from the last version. Unless this is the case the object will be checked in. HW_API_CHECKIN_KEEP_TIME_MODIFIED Keeps the time modified from the most recent object. HW_API_CHECKIN_NO_AUTO_COMMIT The object is not automatically committed on check-in.

Илон Маск рекомендует:  Шаблон сайта новости HTML, CSS, JavaScripts, 1 страница
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL