Эта директива сгенерирует изображения и стартовый скрипт. Вы можете запустить эмулятор локально, выполнив команду bazel run :nexus_s -- --action=start. Скрипт предоставляет следующие флаги:
- --adb_port: Порт для экспонирования adb. Если вы хотите использовать adb-команды с эмулятором, используйте этот порт для подключения adb.
- --emulator_port: Порт для экспонирования консоли управления эмулятора telnet.
- --enable_display: Запускает эмулятор с дисплеем, если значение true (по умолчанию false).
- --action: Либо start, либо kill.
- --apks_to_install: Список APK-файлов для установки на эмулятор.
Аргументы
| Атрибуты |
name | Имя; обязательно Уникальное имя для этой цели. |
cache | Целое число; обязательно Размер кеш-раздела эмулятора в мегабайтах. Минимальное значение — 16 мегабайт. |
default_properties | Метка; значение по умолчанию None Единственный файл свойств, который будет размещен в /default.prop на эмуляторе. Это позволяет автору правила дополнительно настроить эмулятор, чтобы он больше походил на реальное устройство (в частности, управлять строками UserAgent и другим поведением, которое может привести к тому, что приложение или сервер будут вести себя иначе на конкретном устройстве). Свойства в этом файле переопределят только для чтения свойства, обычно устанавливаемые эмулятором, такие как ro.product.model. |
horizontal_resolution | Целое число; обязательно Разрешение экрана по горизонтали в пикселях для эмуляции. Минимальное значение — 240. |
platform_apks | Список меток; значение по умолчанию [] Список APK-файлов, которые будут установлены на устройстве во время загрузки. |
ram | Целое число; обязательно Объем оперативной памяти в мегабайтах для эмуляции устройства. Это относится ко всему устройству, а не только к конкретному приложению, установленному на устройстве. Минимальное значение — 64 мегабайта. |
screen_density | Целое число; обязательно Плотность эмулированного экрана в пикселях на дюйм. Минимальное значение — 30 ppi. |
system_image | Метка; обязательно Файл-группа, содержащая следующие файлы: - system.img: Система раздел
- kernel-qemu: Ядро Linux, которое будет загружено эмулятором
- ramdisk.img: Образ initrd, который будет использоваться при загрузке
- userdata.img: Начальный раздел userdata
- source.properties: Файл свойств, содержащий информацию об изображениях
Эти файлы являются частью Android SDK или предоставляются сторонними разработчиками (например, Intel предоставляет изображения x86). |
vertical_resolution | Целое число; обязательно Разрешение экрана по вертикали в пикселях для эмуляции. Минимальное значение — 240. |
vm_heap | Целое число; обязательно Размер виртуальной кучи в мегабайтах, которую Android будет использовать для каждого процесса. Минимальное значение — 16 мегабайт. |
android_ndk_repository
android_ndk_repository(name, api_level, path, repo_mapping)
Настраивает Bazel для использования Android NDK для поддержки построения Android-целей с нативным кодом.
Обратите внимание, что это реализация android_ndk_repository заменяется реализацией в Starlark. Поддержка будущих версий NDK, включая версии 25 и выше, будет реализована в версии Starlark android_ndk_repository. См. rules_android_ndk для версии Starlark.
Обратите внимание, что для построения для 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 | Имя; обязательно Уникальное имя для этой цели. |
api_level | Целое число; не настраиваемое; значение по умолчанию 0 Уровень API Android для компиляции. Если не указано, будет использоваться наивысший установленный API-уровень. |
path | Строка; не настраиваемое; значение по умолчанию "" Абсолютный или относительный путь к Android NDK. Должен быть задан либо этот атрибут, либо переменная окружения $ANDROID_NDK_HOME. Android NDK можно загрузить с сайта разработчика Android.
|
repo_mapping | Словарь: Строка -> Строка; значение по умолчанию {} Словарь, сопоставляющий локальное имя репозитория с глобальным именем репозитория. Это позволяет управлять разрешением зависимостей рабочего пространства для зависимостей этого репозитория. Например, запись "@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 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"],
)
Аргументы