- Как сделать API на любое Android приложение. На примере WhatsApp
- Анализ ситуации.
- 1. Официальный API
- 2. Сторонний сервис. Подключение через WhatsApp WEB
- 3. Ручной режим
- Решение
- Отправка сообщения
- Приём сообщений
- Плюсы, минусы, доработка и планы
- Android для начинающих: использование REST API
- 1. Включение доступа к Интернету
- 2. Создание фоновых потоков
- 3. Создание HTTP-соединения
- 4. Добавление заголовков запросов
- 5. Чтение ответов
- 6. Разбор JSON ответов
- 7. Использование разных HTTP методов
- 8. Кэширование ответов
- Заключение
- Настройка пакета SDK для Android для Xamarin.Android
- Обзор
- Требования
- Диспетчер SDK
- Расположение пакета SDK для Android
- Вкладка «Сервис»
- Вкладка «Платформы»
- Выбор репозитория
- Требования
- Диспетчер SDK
- Вкладка «Расположения»
- Вкладка «Сервис»
- Вкладка «Платформы»
- Выбор репозитория
- Сводка
Как сделать API на любое Android приложение. На примере WhatsApp
Анализ ситуации.
Казалось, требуется всего лишь отправлять и принимать сообщения. А столько подводных камней…
1. Официальный API
Официального API в релизе тогда ещё не было. Но Facebook успел прислать ссылку на форму, для подключения официального API, находящегося в тестировании.
2. Сторонний сервис. Подключение через WhatsApp WEB
Рассматривал вариант «серого» способа, использование неофициального сервиса, который отправляет сообщения через WEB интерфейс, подключается сканированием QR кода.
Но это зависимость от чужого API, в любой момент может всё отвалиться, да и передавать чужому сервису номера клиентов не хотелось. А ещё писать под чужой авторский API, да ещё который придётся переписывать, при переезде на другой сервис, тоже такое себе удовольствие.
Ну и ещё требуется держать телефон включенным (хотя некоторые сервисы за доп плату решали эту проблему 🙂
3. Ручной режим
Посадить человека, пускай копипастит сообщения клиентам. Шутки шутками, а из этой идеи родилось решение!
Решение
Отправка сообщения
Есть такая программка для автоматизации действий под Android, называется Tasker, одна из первых подобных программ. Но я в ней не разобрался с первого раза… Поискал аналоги, наткнулся на программу Automagic. В ней события, действия и ветвления рисуются как блок схема.
И вот в ней я то и придумал решение, root права нам не нужны. Получилось методом научного тыка нарисовать скрипт отправки сообщения, далее буду называть поток, так именуется каждый отдельный нарисованный алгоритм в данной программе. А теперь разберём его работу:
- Каждые 5 секунд периодичным таймером генерируется событие и передаётся следующему блоку.
- Блок HTTP Request спрашивает у сервера, есть ли в очереди следующее сообщение, которое нужно отправить? Бэкенд написан на PHP.
- Парсим ответ сервера JSON.
- Если от сервера в ответе пришла метка, что нужно отправить сообщение, идём дальше.
- Проверяем, включен ли экран устройства, если нет, отправляем уведомление, с целью разбудить телефон. Если же экран включен, и не выполняется другой поток, проверяющий статус, доставлено ли сообщение, то:
- Генерируем ссылку и открываем её, что бы инициировать диалог с полученным от сервера номером телефона в WhatsApp’е
- Самое интересное. Блок Control UI. В нём в виде кода реализована логика проверки успешности открытия чата (проверка регистрации в мессенджере), вставка текста в окно ввода и клацанье по кнопке Отправить.
Приём сообщений
Принимать сообщения на много проще. Ставим событие на уведомление от мессенджера. Как только приходит уведомление, помечаем его прочитанным, и отправляем его на сервер как есть. Тот уже спарсит адресата и текст.
Плюсы, минусы, доработка и планы
Основную функцию отправки сообщения алгоритм выполняет отлично. Так как не используется WEB интерфейс, схватить баню от мессенджера тут меньше рисков, как мне кажется. Арендовал слабенький виртуальный сервер, установил туда Android и перенёс всё.
На отправку одного сообщения новому контакту уходит
5 сек. Для проверки доставки и прочтения сообщения, разработал отдельный поток, но он в черновом варианте и иногда не срабатывает. Поэтому о нём позже.
В данный момент не реализована функция приёма медиа сообщений (фото, аудио, вложения), но это можно выгружать из WhatsApp, используя кнопку поделиться сообщением в будущем.
Чуть позже хочу сверху виртуальной машины, где запущен мессенджер, написать SIP транк, через который можно будет звонить через WhatsApp как через SIP ^.^ что может сэкономить расходы на связь.
Ещё хочу делать скриншоты аватарок и отправлять их на сервер, для прикрепления миниатюры к контакту в CRM системе.
Ну и вообще самое интересное: Данный способ обёртывания в API подойдёт почти для любого приложения под Android 🙂
Всё изначально разрабатывал и запускал на Android 9, xiaomi mi 9 se, root прав нет.
UPD:
Пример на Python3.8 в качестве бекенда доступен на GitHub, доработан алгоритм ловли уведомлений и код отправки из комментариев от ivan909020
Источник
Android для начинающих: использование REST API
Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)
Большинство из нас стали весьма жадны до новой информации, что в Интернете является такой важной частью нашей жизни. Поэтому создание приложений Android со статичным контентом может быть плохой идеей. Вместо этого вам следует рассмотреть возможность создания приложений, которые могут отображать свежий контент каждый раз, когда пользователь их открывает.
Это может звучать сложно, но с большим количеством сайтов, которые раскрывают свои ресурсы через REST API, на самом деле это довольно просто. (Смотрите руководство для начинающих по HTTP и REST для примера.)
В этом уроке я расскажу вам, как использовать классы и методы, доступные в Android SDK, для подключения к удаленным веб-серверам и взаимодействия с ними с использованием их REST API.
1. Включение доступа к Интернету
Использование REST API, очевидно, связано с использованием Интернета. Тем не менее, приложения Android могут получить доступ к Интернету только в том случае, если у них есть разрешение android.permission.INTERNET . Поэтому перед началом написания любого сетевого кода вы должны убедиться, что в файле манифеста вашего проекта присутствуют следующие uses-permission теги:
Поскольку android.permission.INTERNET не считается опасным разрешением, вам не нужно запрашивать его во время выполнения на устройствах с уровнем API 23 или выше.
2. Создание фоновых потоков
Платформа Android не позволяет выполнять сетевые операции в основном потоке приложения. Поэтому весь ваш сетевой код должен принадлежать фоновому потоку. Самый простой способ создать такой поток — использовать метод execute() класса AsyncTask . В качестве единственного аргумента execute() ожидает объект Runnable .
Если вы хотите узнать больше о выполнении операций в фоновом потоке, я предлагаю вам прочитать этот учебник о фоновых операциях из серии Android для начинающих.
3. Создание HTTP-соединения
Используя метод openConnection() класса URL , вы можете быстро настроить соединение с любой конечной точкой REST. Возвращаемое значение openConnection() должно быть передано в экземпляр HttpURLConnection или HttpsURLConnection , в зависимости от доступа к конечной точке через HTTP или HTTPS. Оба HttpURLConnection и HttpsURLConnection позволяют выполнять такие операции, как добавление заголовков запросов и чтение ответов.
В следующем фрагменте кода показано, как настроить соединение с корневой конечной точкой API GitHub:
Обратите внимание, что HttpsURLConnection является подклассом класса HttpURLConnection .
4. Добавление заголовков запросов
Большинство веб-сайтов, предлагающих REST API, хотят иметь возможность однозначно идентифицировать ваше приложение. Самый простой способ помочь им сделать это — включить уникальный заголовок User-Agent во все ваши запросы.
Чтобы добавить заголовок User-Agent в ваш запрос, вы должны использовать метод setRequestProperty() объекта HttpURLConnection . Например, вот как вы устанавливаете заголовок User-Agent в my-rest-app-v0.1:
Вы можете добавить несколько заголовков к своему запросу, вызвав несколько раз метод setRequestProperty() . Например, следующий фрагмент кода добавляет заголовок Accept и кастомный заголовок Contact-Me :
5. Чтение ответов
После того как вы передали все заголовки запросов, вы можете проверить, есть ли у вас валидный ответ, используя метод getResponseCode() объекта HttpURLConnection .
Если класс HttpURLConnection получает код ответа на перенаправление, например 301, он автоматически обрабатывает его и следует за перенаправлением. Поэтому, как правило, вам не нужно будет писать дополнительный код для проверки перенаправления.
В случае отсутствия ошибок вы можете теперь вызвать метод getInputStream() , чтобы получить ссылку на входящий поток соединения.
Большинство REST API в наши дни возвращают данные, отформатированные как документы JSON. Поэтому, вместо прямого чтения из объекта InputStream , я предлагаю вам создать для него InputStreamReader .
6. Разбор JSON ответов
Android SDK имеет класс JsonReader, который позволяет легко разбирать документы JSON. Вы можете создать новый экземпляр класса JsonReader , передав объект InputStreamReader его конструктору.
То как вы извлекаете определенную часть информации из документа JSON, зависит от его структуры. Например, документ JSON, возвращаемый корневой конечной точкой REST API GitHub, выглядит следующим образом:
Как вы можете видеть, ответ — это только один большой объект JSON, содержащий несколько ключей. Чтобы извлечь из него значение с именем organization_url, вам нужно будет написать следующий код:
Вышеупомянутый код обрабатывает ответ JSON как поток токенов. Поэтому он потребляет очень мало памяти. Однако, поскольку он должен обрабатывать каждый отдельный токен один за другим, он может оказаться медленным при обработке больших ответов.
После того как вы извлечете всю необходимую информацию, вы всегда должны вызвать метод close() для объекта JsonReader , чтобы он освобождал все сохраненные ресурсы.
Вы также должны закрыть соединение, вызвав метод disconnect() объекта HttpURLConnection .
7. Использование разных HTTP методов
HTTP-интерфейсы REST используют методы HTTP для определения типа операции, которая должна выполняться над ресурсом. На предыдущих шагах мы использовали метод HTTP GET для выполнения операции чтения. Поскольку класс HttpURLConnection использует по умолчанию метод GET , нам не нужно было его явно указывать.
Чтобы изменить метод HTTP вашего объекта HttpURLConnection , вы должны использовать его метод setRequestMethod() . Например, следующий фрагмент кода открывает соединение с конечной точкой, принадлежащей httpbin.org, и устанавливает свой HTTP-метод в POST :
Как вы уже знаете, POST -запросы используются для отправки данных на сервер. При записи в выходной поток соединения вы можете легко добавить любые данные в тело запроса POST . Однако, прежде чем вы это сделаете, вы должны убедиться, что вы вызываете метод setDoOutput() объекта HttpURLConnection и передаете ему значение true .
В следующем фрагменте кода показано, как отправить на сервер простую пару «ключ-значение»:
8. Кэширование ответов
Всегда рекомендуется кэшировать ответы HTTP. Таким образом, вы можете не только сократить потребление пропускной способности вашего приложения, но и сделать его более отзывчивым. Начиная с уровня API 13, Android SDK предлагает класс HttpResponseCache , который позволяет легко реализовать кэширование без каких-либо изменений в вашей сетевой логике.
Чтобы установить кэш для вашего приложения, вы должны вызвать метод install() класса HttpResponseCache . Метод ожидает абсолютный путь, указывающий, где должен быть установлен кеш, и число, определяющее размер кеша. Вы можете использовать метод getCacheDir() , если вы не хотите указывать абсолютный путь вручную.
В следующем фрагменте кода устанавливается кеш размером 100 000 байт:
Как только кеш установлен, класс HttpURLConnection начинает использовать его автоматически. Чтобы проверить, работает ли ваш кеш, вы можете использовать его метод getHitCount() , который возвращает количество HTTP-ответов, которые были отправлены из кеша.
Заключение
Существуют тысячи REST API-интерфейсов, которые вы можете свободно использовать в своих приложениях для Android. Используя их, вы можете сделать ваше приложение более информативным, интересным и многофункциональным. В этом уроке вы узнали, как использовать класс HttpURLConnection для использования таких REST API. Вы также узнали, как создать кеш ответов HTTP, который снижает использование потребление сетевого трафика вашим приложением.
Если вы считаете, что использование HttpURLConnection слишком сложное, вам следует обратить внимание на сторонние библиотеки, такие как например, Volley. Библиотеки, подобные этой, используют класс HttpURLConnection внутри, но предоставляют множество удобных методов, которые позволяют сделать ваш код более кратким и читаемым.
Чтобы узнать больше о работе с сетью на платформе Android, вы можете обратиться к руководству по сетевым операциям Android.
Источник
Настройка пакета SDK для Android для Xamarin.Android
Visual Studio включает диспетчер пакетов SDK для Android, который позволяет скачивать инструменты, платформы и другие компоненты SDK, необходимые для разработки приложений Xamarin.Android.
Обзор
Это руководство описывает, как использовать диспетчер пакетов SDK для Android с Xamarin в Visual Studio и Visual Studio для Mac.
Это руководство распространяется только на Visual Studio 2019, Visual Studio 2017 и Visual Studio для Mac.
Диспетчер пакетов SDK для Android, предназначенный для Xamarin (устанавливается в составе рабочей нагрузки Разработка мобильных приложений на .NET), поможет вам скачать новейшие компоненты Android, необходимые для разработки приложения Xamarin.Android. Он заменяет автономный диспетчер пакетов SDK от Google, который был признан нерекомендуемым.
Требования
Чтобы использовать диспетчер пакетов SDK Xamarin Android, необходимо следующее:
Visual Studio 2019 (Community, Professional или Enterprise).
ИЛИ Visual Studio 2017 (выпуск Community, Professional или Enterprise). Требуется Visual Studio 2017 версии 15.7 или более поздней.
Инструменты Visual Studio для Xamarin версии 4.10.0 или более поздней версии (устанавливается как часть рабочей нагрузки Разработка мобильных приложений на .NET).
Диспетчеру пакетов SDK Xamarin Android также требуется Java Development Kit (которая устанавливается автоматически вместе с Xamarin.Android). Существует несколько альтернатив JDK:
По умолчанию Xamarin. Android использует JDK 8, что требуется при разработке для API уровня 24 или выше (JDK 8 также поддерживает уровни API, предшествующие 24).
При разработке специально для уровня API 23 или ниже можно продолжать использовать пакет JDK 7.
если вы используете Visual Studio 15,8 Preview 5 или более поздней версии, вы можете попробовать использовать дистрибутив OpenJDK майкрософт Mobile , а не JDK 8.
Xamarin.Android не поддерживает пакет JDK 9.
Диспетчер SDK
чтобы запустить диспетчер пакетов SDK в Visual Studio, щелкните инструменты Android > пакет SDK для Android Manager.
Диспетчер пакетов SDK для Android открывается на экране Пакеты SDK и инструменты для Android. На этом экране имеются две вкладки — платформы и инструменты:
Экран Пакеты SDK и инструменты для Android более подробно описан в следующих разделах.
Расположение пакета SDK для Android
Расположение пакета SDK для Android настраивается в верхней части экрана Пакеты SDK и инструменты для Android, как показано на предыдущем снимке экрана. Это расположение нужно настроить для правильной работы вкладок Платформы и Сервис. Задание расположения пакета SDK для Android может потребоваться по одной или нескольким из следующих причин:
Диспетчер пакетов SDK для Android не смог найти пакет SDK для Android.
Вы установили пакет SDK для Android в альтернативное расположение (отличное от используемого по умолчанию).
Чтобы задать расположение пакет SDK для Android, нажмите кнопку с многоточием (. ). справа от пакет SDK для Androidного расположения. При этом открывается диалоговое окно Обзор папок, в котором можно перейти к расположению пакета SDK для Android. На следующем снимке экрана выбирается пакет SDK для Android в разделе Program Files (x86) \андроид :
При нажатии кнопки ОК диспетчер пакетов SDK будет работать с пакетом SDK для Android, установленным в выбранном расположении.
Вкладка «Сервис»
Вкладка Сервис отображает список инструментов и дополнений. Эта вкладка используется для установки инструментов пакета SDK для Android, инструментов платформы и инструментов сборки. Кроме того, можно установить эмулятор Android, низкоуровневый отладчик (LLDB), NDK, ускорение HAXM и библиотеки Google Play.
Например, чтобы скачать пакет эмулятора Android от Google, установите флажок рядом с элементом Эмулятор Android и нажмите кнопку Применить изменения:
Может появиться диалоговое окно с сообщением Для установки следующего пакета требуется принять условия лицензии:
Щелкните Принять, чтобы принять условия лицензионного соглашения. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения установки вкладка Сервис указывает, что выбранные инструменты и дополнения установлены.
Вкладка «Платформы»
Вкладка Платформы содержит список версий пакетов SDK вместе с другими ресурсами (например, образами системы) для каждой платформы:
На этом экране указана версия Android (например, Android 8.0), кодовое название (Oreo), уровень API (например, 26) и размеры компонентов платформы (например, 1 ГБ). Вкладка Платформы позволяет вам устанавливать компоненты для целевого уровня API Android. Дополнительные сведения о версиях и уровнях API Android см. в разделе Основные сведения об уровнях API Android.
Если установлены все компоненты платформы, рядом с ее именем появляется флажок. Если установлены не все компоненты платформы, для нее заполняется поле. Вы можете развернуть платформу, чтобы просмотреть ее компоненты (в том числе и установленные), щелкнув поле + слева от нее. Щелкните — , чтобы свернуть список компонентов для платформы.
Чтобы добавить в пакет SDK другую платформу, щелкайте поле рядом с ней, пока в нем не появился флажок (обозначающий установку всех компонентов), а затем нажмите кнопку Применить изменения:
Чтобы установить только отдельные компоненты, щелкните один раз поле рядом с платформой. Затем можно выбрать любые отдельные компоненты, которые вам нужны:
Обратите внимание, что число устанавливаемых компонентов отображается рядом с кнопкой Применить изменения. После нажатия кнопки Применить изменения вы увидите экран Принятие условий лицензионного соглашения, показанный ранее. Щелкните Принять, чтобы принять условия лицензионного соглашения. Это диалоговое окно может появиться несколько раз, если устанавливается несколько компонентов. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения скачивания и установки (это может занять несколько минут в зависимости от числа скачиваемых компонентов) добавленные компоненты помечаются флажком и указываются в списке Установленные.
Выбор репозитория
По умолчанию диспетчер пакетов SDK для Android скачивает компоненты и инструменты платформы из репозитория, управляемого Майкрософт. Если вам нужен доступ к экспериментальным альфа- и бета-версиям платформ и инструментов, которые еще не доступны в репозитории Майкрософт, вы можете переключить диспетчер пакетов SDK на использование репозитория Google. Чтобы сделать этот параметр, щелкните значок шестеренки в правом нижнем углу и выберите репозиторий Google (не поддерживается):
Если выбран репозиторий Google, на вкладке Платформы могут отобразиться дополнительные пакеты, недоступные ранее. (На снимке экрана выше при переходе на репозиторий Google был добавлен пакет Android SDK Platform 28.) Обратите внимание, что репозиторий Google является неподдерживаемым, поэтому использовать его для повседневной разработки не рекомендуется.
Чтобы вернуться на поддерживаемый репозиторий платформ и инструментов, щелкните Майкрософт (рекомендуется). Это восстановит список пакетов и инструментов по умолчанию.
Требования
Чтобы использовать диспетчер пакетов SDK Xamarin Android, необходимо следующее:
- Visual Studio для Mac 7.5 или более поздней версии.
Диспетчеру пакетов SDK Xamarin Android также требуется Java Development Kit (которая устанавливается автоматически вместе с Xamarin.Android). Существует несколько альтернатив JDK:
По умолчанию Xamarin. Android использует JDK 8, что требуется при разработке для API уровня 24 или выше (JDK 8 также поддерживает уровни API, предшествующие 24).
При разработке специально для уровня API 23 или ниже можно продолжать использовать пакет JDK 7.
если вы используете Visual Studio для Mac 7,7 или более поздней версии, можно попробовать использовать дистрибутив OpenJDK майкрософт для мобильных устройств , а не JDK 8.
Xamarin.Android не поддерживает пакет JDK 9.
Диспетчер SDK
чтобы запустить диспетчер пакетов sdk в Visual Studio для Mac, щелкните инструменты диспетчер пакетов sdk:
Диспетчер пакетов SDK Android открывается в окне параметров, содержащем три вкладки — Платформы, Сервис и Расположения:
Вкладки диспетчера пакетов SDK для Android описаны в следующих разделах.
Вкладка «Расположения»
Вкладка Расположения содержит три параметра для настройки расположений пакета SDK для Android, пакета NDK для Android и пакет SDK для Java (JDK). Эти расположения нужно настроить для правильной работы вкладок Платформы и Сервис.
При запуске диспетчер пакетов SDK автоматически определяет путь для каждого установленного пакета и указывает, что он был обнаружен, размещая зеленую галочку рядом с путем:
Нажмите кнопку Сбросить к значениям по умолчанию, чтобы диспетчер пакетов SDK искал пакеты SDK, NDK и JDK в расположениях по умолчанию.
Как правило, вкладка Расположения используется, чтобы изменить расположение пакета SDK для Android и (или) пакета JDK для Java. Вам не нужно устанавливать NDK для разработки приложений Xamarin. Android — NDK используется только при необходимости разработки частей приложения с помощью языков машинного кода, таких как C и C++.
Вкладка «Сервис»
Вкладка Сервис отображает список инструментов и дополнений. Эта вкладка используется для установки инструментов пакета SDK для Android, инструментов платформы и инструментов сборки. Кроме того, можно установить эмулятор Android, низкоуровневый отладчик (LLDB), NDK, ускорение HAXM и библиотеки Google Play.
Например, чтобы скачать пакет эмулятора Android от Google, установите флажок рядом с элементом Эмулятор Android и нажмите кнопку Применить изменения:
Может появиться диалоговое окно с сообщением Для установки следующего пакета требуется принять условия лицензии:
Щелкните Принять, чтобы принять условия лицензионного соглашения. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения установки вкладка Сервис указывает, что выбранные инструменты и дополнения установлены.
Вкладка «Платформы»
Вкладка Платформы содержит список версий пакетов SDK вместе с другими ресурсами (например, образами системы) для каждой платформы:
На этом экране указана версия Android (например, Android 8.1), кодовое название (Oreo), уровень API (например, 27) и размеры компонентов платформы (например, 1 ГБ). Вкладка Платформы позволяет вам устанавливать компоненты для целевого уровня API Android. Дополнительные сведения о версиях и уровнях API Android см. в разделе Основные сведения об уровнях API Android.
Если установлены все компоненты платформы, рядом с ее именем появляется флажок. Если установлены не все компоненты платформы, для нее заполняется поле. Вы можете развернуть платформу, чтобы просмотреть ее компоненты (в том числе и установленные), щелкнув стрелку слева от нее. Щелкните стрелку вниз, чтобы свернуть список компонентов для платформы.
Чтобы добавить в пакет SDK другую платформу, щелкайте поле рядом с ней, пока в нем не появился флажок (обозначающий установку всех компонентов), а затем нажмите кнопку Применить изменения:
Чтобы установить только отдельные компоненты, щелкните один раз поле рядом с платформой. Затем можно выбрать любые отдельные компоненты, которые вам нужны:
Обратите внимание, что число устанавливаемых компонентов отображается рядом с кнопкой Применить изменения. После нажатия кнопки Применить изменения вы увидите экран Принятие условий лицензионного соглашения, показанный ранее. Щелкните Принять, чтобы принять условия лицензионного соглашения. Это диалоговое окно может появиться несколько раз, если устанавливается несколько компонентов. В нижней части окна индикатор выполнения указывает ход скачивания и установки. После завершения скачивания и установки (это может занять несколько минут в зависимости от числа скачиваемых компонентов) добавленные компоненты помечаются флажком и указываются в списке Установленные.
Выбор репозитория
По умолчанию диспетчер пакетов SDK для Android скачивает компоненты и инструменты платформы из репозитория, управляемого Майкрософт. Если вам нужен доступ к экспериментальным альфа- и бета-версиям платформ и инструментов, которые еще не доступны в репозитории Майкрософт, вы можете переключить диспетчер пакетов SDK на использование репозитория Google. Чтобы сделать этот параметр, щелкните значок шестеренки в правом нижнем углу и выберите репозиторий Google (не поддерживается):
Если выбран репозиторий Google, на вкладке Платформы могут отобразиться дополнительные пакеты, недоступные ранее. (На снимке экрана выше при переходе на репозиторий Google был добавлен пакет Android SDK Platform 28.) Обратите внимание, что репозиторий Google является неподдерживаемым, поэтому использовать его для повседневной разработки не рекомендуется.
Чтобы вернуться на поддерживаемый репозиторий платформ и инструментов, щелкните Майкрософт (рекомендуется). Это восстановит список пакетов и инструментов по умолчанию.
Сводка
В этом руководстве вы узнали, как устанавливать и использовать диспетчер пакетов SDK для Android с Xamarin в Visual Studio и Visual Studio для Mac.
Источник