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

В этом руководстве обсуждаются различия между системными и пользовательскими приложениями и описывается установка приложения Xamarin.Android в качестве системного приложения. Это руководство предназначено для авторов пользовательских образов Android. Здесь не объясняется, как создать пользовательский образ.This guide will discuss the differences between a system app and a user app, and how to install a Xamarin.Android application as a system application. This guide applies to authors of custom Android ROM images. It will not explain how to create a custom ROM.

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

Авторы пользовательских образов Android и изготовители устройств Android имеют возможность включить приложение Xamarin.Android в свой образ и (или) устройство в качестве системного приложения.Authors of custom Android ROM images or manufacturers of Android devices may wish to include a Xamarin.Android application as a system app when distributing a ROM or a device. Системным называется приложение, которое считается важным для правильной работы устройства или предоставляет важные функциональные возможности с точки зрения автора образа.A system app is an app that is considered to be important to the functioning of the device or provide functionality that the custom ROM author always wants to be available.

Системные приложения устанавливаются в папке /system/app/ (каталог только для чтения в файловой системе) и пользователь не может их удалять или перемещать без прав суперпользователя (root).System apps are installed in the folder /system/app/ (a read-only directory on the file system) and cannot be deleted or moved by the user unless that user has root access. Все остальные приложения, устанавливаемые пользователем самостоятельно (через Google Play или загружая файл неопубликованного приложения), называются пользовательскими приложениями.In contrast, an application that is installed by the user (typically from Google Play or by sideloading the app) is known as a user app. Пользователь может удалять пользовательские приложения, а в большинстве случаев — перемещать в другое расположение на устройстве (например, на внешнее хранилище).User apps can be deleted by the user and in many cases can be moved to a different location on the device (such as some kind of external storage).

Системные приложения ведут себя так же, как и пользовательские, но с несколькими важными исключениями.System apps behave exactly like user apps, but have the following notable exceptions:

  • Системные приложения обновляются точно так же, как пользовательские приложения.System apps are upgradable just like a normal user app. Но при этом в каталоге /system/app/ всегда сохраняется копия этого приложения, а значит всегда можно всегда выполнить откат к его исходной версии.However, because a copy of the app always exists in /system/app/, it is always possible to roll back the application to the original version.

  • Системные приложения могут получать некоторые системные разрешения, недоступные для пользовательских приложений.System apps may be granted certain system-only permissions that are not available to a user app. Например, разрешение BLUETOOTH_PRIVILEGED, которое разрешает сопряжение с устройствами Bluetooth без вмешательства пользователя, предоставляется только системным приложениям.An example of a system-only permission is BLUETOOTH_PRIVILEGED, which allows applications to pair with Bluetooth devices without any user interaction.

У разработчиков есть возможность распространять приложения Xamarin.Android в качестве системных приложений.It is possible to distribute a Xamarin.Android app as a system application. Для этого нужно не только включить в настраиваемый образ пакет APK, но и вручную скопировать из него две общие библиотеки libmonodroid.so и libmonosgen 2.0.so в файловую систему образа ОС.In addition to providing an APK to the custom ROM, there are two shared libraries, libmonodroid.so and libmonosgen-2.0.so that must be manually copied from the APK to the filesytem of the ROM image. Этот процесс описан в этом руководстве.This guide will explain the steps involved.

ОграниченияRestrictions

Это руководство предназначено для авторов пользовательских образов Android.This guide applies to authors of custom Android ROM images. Здесь не объясняется, как создать пользовательский образ.It will not explain how to create a custom ROM.

Здесь мы предполагаем, что вы уже знакомы с концепцией упаковки выпуска APK для Xamarin.Android и хорошо понимаете архитектуру ЦП для приложений Android.This guide assumes familiarity with packaging a release APK for a Xamarin.Android and an understanding of CPU Architectures for Android applications.

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

Ниже описан процесс установки приложения Xamarin.Android в качестве системного приложения.The following steps describe how to install a Xamarin.Android app as a system app.

  1. Создайте пакет выпуска APK для приложения Xamarin.Android – этот процесс подробнее описан в руководстве по публикации приложения.Package a release APK of the Xamarin.Android app – This is described in more detail by the Publishing an Application guide.

  2. Извлеките из APK общие библиотеки – с помощью любой служебной программы, работающей с архивами ZIP, откройте файл APK и изучите содержимое папки /lib/.Extract shared libraries from the APK – Using any ZIP utility program, open up the APK file and examine the contents of the /lib/ folder. В этой папке есть подкаталог для каждого двоичного интерфейса приложения (ABI), который поддерживается приложением. Здесь будут располагаться все общие библиотеки этого интерфейса ABI, необходимые для этого конкретного приложения:This folder will have a subdirectory for each application binary interface (ABI)that is supported by the application; the contents of this folder will include all of the shared libraries that are required by the app on that particular ABI:

    Снимок экрана со списком SO-файлов в папке armeabi-v7a файла образа taskypro.zip

    На предыдущем снимке экрана мы видим только один поддерживаемый ABI (armeabi-v7a) с двумя SO-файлами, которые используются в приложении.In the previous screenshot, there is only one supported ABI (armeabi-v7a) holding the two .so files that are required by the app. Обратите внимание, что извлекать следует только те файлы ABI, которые подходят для целевой архитектуры образа ОС. Например, нет смысла копировать SO-файлы из папки x86 на устройство или в образ armeabi-v7a.Note that it is only necessary to extract the ABI files that are appropriate for the device or the target architecture of the device ROM, i.e. do not copy .so files from the x86 folder to an armeabi-v7a device or ROM.

  3. Скопируйте SO-файлы в каталог /system/lib – скопируйте SO-файлы, извлеченные из APK на предыдущем шаге, в папку /system/lib/ в настраиваемом образе.Copy .so files to /system/lib – Copy the .so files that were extracted from the APK in the previous step to the /system/lib/ folder on the custom ROM.

  4. Скопируйте APK-файл в каталог /system/app – последним шагом скопируйте APK-файл в каталог /system/app в настраиваемом образе.Copy the APK file to /system/app – The final step is to copy the APK file to the /system/app folder on the ROM.

СводкаSummary

В этом руководстве мы обсудили различия между системными приложениями и пользовательскими приложениями, а также описали установку приложения Xamarin.Android в качестве системного приложения.This guide discussed the difference between a system app and a user app, and explained how to install a Xamarin.Android application as a system app.