Установка Xamarin.Android в качестве системного приложения

В этом руководстве обсуждаются различия между системными и пользовательскими приложениями и описывается установка приложения Xamarin.Android в качестве системного приложения. Это руководство предназначено для авторов пользовательских образов Android. Здесь не объясняется, как создать пользовательский образ.

Системное приложение

Авторы пользовательских образов Android и изготовители устройств Android имеют возможность включить приложение Xamarin.Android в свой образ и (или) устройство в качестве системного приложения. Системным называется приложение, которое считается важным для правильной работы устройства или предоставляет важные функциональные возможности с точки зрения автора образа.

Системные приложения устанавливаются в папке /system/app/ (каталог только для чтения в файловой системе) и пользователь не может их удалять или перемещать без прав суперпользователя (root). Все остальные приложения, устанавливаемые пользователем самостоятельно (через Google Play или загружая файл неопубликованного приложения), называются пользовательскими приложениями. Пользователь может удалять пользовательские приложения, а в большинстве случаев — перемещать в другое расположение на устройстве (например, на внешнее хранилище).

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

  • Системные приложения обновляются точно так же, как пользовательские приложения. Но при этом в каталоге /system/app/ всегда сохраняется копия этого приложения, а значит всегда можно всегда выполнить откат к его исходной версии.

  • Системные приложения могут получать некоторые системные разрешения, недоступные для пользовательских приложений. Например, разрешение BLUETOOTH_PRIVILEGED, которое разрешает сопряжение с устройствами Bluetooth без вмешательства пользователя, предоставляется только системным приложениям.

У разработчиков есть возможность распространять приложения Xamarin.Android в качестве системных приложений. Для этого нужно не только включить в настраиваемый образ пакет APK, но и вручную скопировать из него две общие библиотеки libmonodroid.so и libmonosgen 2.0.so в файловую систему образа ОС. Этот процесс описан в этом руководстве.

Ограничения

Это руководство предназначено для авторов пользовательских образов Android. Здесь не объясняется, как создать пользовательский образ.

Здесь мы предполагаем, что вы уже знакомы с концепцией упаковки выпуска APK для Xamarin.Android и хорошо понимаете архитектуру ЦП для приложений Android.

Установка Xamarin.Android в качестве системного приложения

Ниже описан процесс установки приложения Xamarin.Android в качестве системного приложения.

  1. Упаковывание пакета APK для приложения Xamarin.Android— подробно описано в руководстве по публикации приложения .

  2. Извлеките общие библиотеки из APK— с помощью любой программы zip-программы откройте ФАЙЛ APK и изучите содержимое папки /lib/ . В этой папке есть подкаталог для каждого двоичного интерфейса приложения (ABI), который поддерживается приложением. Здесь будут располагаться все общие библиотеки этого интерфейса ABI, необходимые для этого конкретного приложения:

    Screenshot of .so files in the armeabi-v7a folder of taskypro.zip

    На предыдущем снимке экрана мы видим только один поддерживаемый ABI (armeabi-v7a) с двумя SO-файлами, которые используются в приложении. Обратите внимание, что извлекать следует только те файлы ABI, которые подходят для целевой архитектуры образа ОС. Например, нет смысла копировать SO-файлы из папки x86 на устройство или в образ armeabi-v7a.

  3. Скопируйте файлы .so в файл /system/lib — скопируйте файлы so, извлеченные из APK на предыдущем шаге, в папку /system/lib/ на пользовательском диске.

  4. Скопируйте APK-файл в папку /system/app — последний шаг — скопировать APK-файл в папку /system/app в РОМ.

Итоги

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