- --adb_port: Порт для экспонирования adb. Если вы хотите выполнить команды adb для эмулятора, это тот порт, к которому вы подключитесь с помощью adb connect.
- --emulator_port: Порт для экспонирования консоли управления telnet эмулятора.
- --enable_display: Запускает эмулятор с дисплеем, если значение true (по умолчанию false).
- --action: Либо start, либо kill.
- --apks_to_install: Список apk-файлов для установки на эмулятор.
Аргументы
| Атрибуты |
name | Name; required Уникальное имя для этого целевого объекта. |
cache | Integer; required Размер кеш-раздела эмулятора в мегабайтах. Минимальное значение — 16 мегабайт. |
default_properties | Label; optional Файл свойств, который будет помещён в /default.prop эмулятора. Это позволяет автору правила дополнительно настроить эмулятор, чтобы он больше походил на реальное устройство (в частности, управляя строками UserAgent и другим поведением, которое может заставить приложение или сервер вести себя иначе по отношению к конкретному устройству). Свойства в этом файле переопределят только для чтения свойства, обычно устанавливаемые эмулятором, такие как ro.product.model. |
horizontal_resolution | Integer; required Горизонтальное разрешение экрана в пикселях для эмуляции. Минимальное значение — 240. |
platform_apks | List of labels; optional Список apk-файлов, которые будут установлены на устройстве во время загрузки. |
ram | Integer; required Объём оперативной памяти в мегабайтах для эмуляции устройства. Это относится ко всему устройству, а не только к конкретному приложению, установленной на устройстве. Минимальное значение — 64 мегабайта. |
screen_density | Integer; required Плотность эмулированного экрана в пикселях на дюйм. Минимальное значение — 30 ppi. |
system_image | Label; required Набор файлов, содержащий следующие файлы: - system.img: Системный раздел
- kernel-qemu: Ядро Linux, которое загрузит эмулятор
- ramdisk.img: Изображение initrd для использования во время загрузки
- userdata.img: Изначальный раздел userdata
- source.properties: Файл свойств, содержащий информацию об изображениях
Эти файлы являются частью android sdk или предоставляются третьими сторонами (например, Intel предоставляет изображения x86). |
vertical_resolution | Integer; required Вертикальное разрешение экрана в пикселях для эмуляции. Минимальное значение — 240. |
vm_heap | Integer; required Размер виртуальной кучи в мегабайтах, которую Android будет использовать для каждого процесса. Минимальное значение — 16 мегабайт. |
android_ndk_repository
android_ndk_repository(name, api_level, path, repo_mapping)
Настраивает Bazel для использования Android NDK для поддержки построения целевых объектов Android с использованием нативного кода.
Обратите внимание, что для компиляции для Android также требуется правило android_sdk_repository в вашем файле WORKSPACE.
Дополнительную информацию можно найти в полном руководстве по использованию Android NDK с Bazel.
Примеры
android_ndk_repository(
name = "androidndk",
)
В приведенном выше примере будет определено местоположение вашего Android NDK из $ANDROID_NDK_HOME и обнаружен самый высокий уровень API, который он поддерживает.
android_ndk_repository(
name = "androidndk",
path = "./android-ndk-r20",
api_level = 24,
)
В приведенном выше примере будет использован Android NDK, расположенный в вашем рабочем пространстве в ./android-ndk-r20. Он будет использовать библиотеки уровня API 24 при компиляции вашего кода JNI.
cpufeatures
Android NDK содержит библиотеку cpufeatures, которая может быть использована для определения процессора устройства во время выполнения. Следующий пример демонстрирует, как использовать cpufeatures с Bazel.
# jni.cc
#include "ndk/sources/android/cpufeatures/cpu-features.h"
...
# BUILD
cc_library(
name = "jni",
srcs = ["jni.cc"],
deps = ["@androidndk//:cpufeatures"],
)
Аргументы
| Атрибуты |
name | Name; required Уникальное имя для этого целевого объекта. |
api_level | Integer; optional; nonconfigurable; default is 0 Уровень API Android для компиляции. Если не указано, будет использоваться самый высокий установленный уровень API. |
path | String; optional; nonconfigurable Абсолютный или относительный путь к Android NDK. Должен быть указан либо этот атрибут, либо переменная среды $ANDROID_NDK_HOME. Android NDK можно загрузить с сайта разработчика Android.
|
repo_mapping | Dictionary: String -> String; optional Словарь из локального имени репозитория в глобальное имя репозитория. Это позволяет управлять разрешением зависимостей рабочего пространства для зависимостей данного репозитория. Например, запись "@foo": "@bar" объявляет, что всякий раз, когда этот репозиторий зависит от "@foo" (например, от зависимости от "@foo//some:target" ), он должен фактически разрешать эту зависимость в глобально объявленном "@bar" ("@bar//some:target").
|
android_sdk_repository
android_sdk_repository(name, api_level, build_tools_version, path, repo_mapping)
Настраивает Bazel для использования локального Android SDK для поддержки построения целевых объектов Android.
Примеры
Минимальные настройки Android SDK для Bazel — это добавление правила
android_sdk_repository с именем "androidsdk" в ваш файл
WORKSPACE и установка переменной среды
$ANDROID_HOME в путь к вашему Android SDK. По умолчанию Bazel будет использовать самый высокий уровень API Android и версию инструментов сборки, установленных в Android SDK.
android_sdk_repository(
name = "androidsdk",
)
Для обеспечения воспроизводимости сборки атрибуты path, api_level и build_tools_version могут быть установлены в конкретные значения. Сборка завершится ошибкой, если Android SDK не имеет установленного указанного уровня API или версии инструментов сборки.
android_sdk_repository(
name = "androidsdk",
path = "./sdk",
api_level = 19,
build_tools_version = "25.0.0",
)
В приведенном выше примере также показано использование пути, относительного к рабочему пространству, для Android SDK. Это полезно, если Android SDK является частью вашего рабочего пространства Bazel (например, если он добавлен в систему контроля версий).
Библиотеки поддержки
Библиотеки поддержки доступны в Android SDK Manager как "Android Support Repository". Это набор версионированных общих библиотек Android, таких как библиотеки Support и AppCompat, упакованные как локальный репозиторий Maven. android_sdk_repository генерирует целевые объекты Bazel для каждой из этих библиотек, которые можно использовать в зависимостях целевых объектов android_binary и android_library.
Названия сгенерированных целевых объектов получены из координат Maven библиотек в Android Support Repository, отформатированные как @androidsdk//${group}:${artifact}-${version}. Следующий пример показывает, как целевой объект android_library может зависеть от версии 25.0.0 библиотеки v7 appcompat.
android_library(
name = "lib",
srcs = glob(["*.java"]),
manifest = "AndroidManifest.xml",
resource_files = glob(["res/**"]),
deps = ["@androidsdk//com.android.support:appcompat-v7-25.0.0"],
)
Аргументы
| Атрибуты |
name | Name; required Уникальное имя для этого целевого объекта. |
api_level | Integer; optional; nonconfigurable; default is 0 Android API уровень для построения по умолчанию. Если не указано, будет использоваться самый высокий установленный уровень API. Уровень API для конкретной сборки можно переопределить с помощью флага android_sdk. android_sdk_repository создаёт целевой объект android_sdk для каждого уровня API, установленного в SDK, с именем @androidsdk//:sdk-${level}, независимо от того, задан ли этот атрибут. Например, для компиляции по нестандартному уровню API: bazel build --android_sdk=@androidsdk//:sdk-19 //java/com/example:app.
Чтобы просмотреть все целевые объекты android_sdk , сгенерированные android_sdk_repository
, можно выполнить bazel query "kind(android_sdk, @androidsdk//...)".
|
build_tools_version | String; optional; nonconfigurable Версия инструментов сборки Android для использования из Android SDK. Если не указано, будет использоваться последняя установленная версия инструментов сборки. Bazel требует инструменты сборки версии 30.0.0 или более поздней.
|
path | String; optional; nonconfigurable Абсолютный или относительный путь к Android SDK. Должен быть указан либо этот атрибут, либо переменная среды $ANDROID_HOME. Android SDK можно загрузить с сайта разработчика Android.
|
repo_mapping | Dictionary: String -> String; optional Словарь из локального имени репозитория в глобальное имя репозитория. Это позволяет управлять разрешением зависимостей рабочего пространства для зависимостей данного репозитория. Например, запись "@foo": "@bar" объявляет, что всякий раз, когда этот репозиторий зависит от "@foo" (например, от зависимости от "@foo//some:target" ), он должен фактически разрешать эту зависимость в глобально объявленном "@bar" ("@bar//some:target").
|