Правила
j2objc_library
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
Это правило использует J2ObjC для трансляции файлов исходного кода Java в Objective-C, которые затем могут быть использованы в качестве зависимостей правил objc_library и objc_binary. Подробную информацию о самом J2ObjC можно найти на сайте J2ObjC
Настраиваемые флаги транспиляции J2ObjC можно указать, используя флаг сборки --j2objc_translation_flags в командной строке.
Обратите внимание, что переведенные файлы, включенные в цель j2objc_library, будут компилироваться с использованием стандартной конфигурации компиляции, той же, что и для исходных файлов правила objc_library без указания опций компиляции в атрибутах.
Кроме того, сгенерированный код дедублицируется на уровне цели, а не на уровне исходного кода. Если у вас есть две разные цели Java, которые включают те же файлы исходного кода Java, вы можете увидеть ошибку дублирования символов во время линковки. Правильный способ решения этой проблемы — поместить общие файлы исходного кода Java в отдельную общую цель, от которой можно зависеть.
Аргументы
| Атрибуты | |
|---|---|
name |
Уникальное имя для этой цели. |
deps |
j2objc_library, java_library, java_import и java_proto_library, содержащих файлы исходного кода Java, которые должны быть транслированы в Objective-C. Все цели Трансляция J2ObjC работает по-разному в зависимости от типа включенных файлов исходного кода Java. Для каждого файла исходного кода .java, включенного в Пользователи могут импортировать сгенерированные J2ObjC файлы заголовков в свой код. Пути импорта этих файлов — это корневые относительные пути исходных артефактов Java. Например, Если правила proto_library присутствуют в транзитивном замыкании этого правила, прото J2ObjC также будут сгенерированы, скомпилированы и подключены на уровне двоичного файла. Для протокола |
entry_classes |
--j2objc_dead_code_removal
. Классы Java должны быть указаны в своих канонических именах, как определено в Спецификации языка Java. При использовании флага --j2objc_dead_code_removal, список входных классов будет собран транзитивно и будет использован в качестве точек входа для выполнения анализа "мертвого кода". Неиспользуемые классы будут удалены из конечного пакета приложения Objective-C. |
jre_deps |
j2objc_library. По умолчанию подключается только основная функциональность JRE. |
objc_import
objc_import(name, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)
Это правило инкапсулирует уже скомпилированную статическую библиотеку в виде файла .a. Оно также позволяет экспортировать заголовки и ресурсы с использованием тех же атрибутов, что и поддерживаемые правилом objc_library.
Аргументы
| Атрибуты | |
|---|---|
name |
Уникальное имя для этой цели. |
hdrs |
Эти заголовки описывают общедоступный интерфейс библиотеки и будут доступны для включения источниками в этом правиле или в зависимых правилах. Заголовки, которые не предназначены для включения клиентами этой библиотеки, должны быть указаны в атрибуте srcs вместо этого. Эти файлы будут компилироваться отдельно от исходного кода, если включены модули. |
alwayslink |
srcs и non_arc_srcs, даже если некоторые из них не содержат символы, на которые ссылается двоичный файл. Это полезно, если ваш код не вызывается явно кодом в двоичном файле, например, если ваш код регистрируется для получения обратного вызова, предоставляемого какой-либо службой. |
archives |
.a , предоставляемых целям Objective-C, зависящим от этой цели. |
includes |
#include/#import путей поиска, которые нужно добавить к этой цели и всем зависимым целям. Это для поддержки сторонних и открытых библиотек, которые не указывают полный путь рабочего пространства в своих #import/#include операциях. Пути интерпретируются относительно каталога пакета, и корневые каталоги genfiles и bin (например, В отличие от COPTS, эти флаги добавляются для этого правила и для каждого правила, которое от него зависит. (Примечание: не правила, от которых оно зависит!) Будьте очень осторожны, так как это может иметь далеко идущие последствия. В случае сомнений, добавьте флаги «-iquote» в COPTS вместо этого. |
sdk_dylibs |
|
sdk_frameworks |
При линковке верхнего уровня приложения Apple подключаются все фреймворки SDK, перечисленные в графе транзитивных зависимостей этого двоичного файла. |
sdk_includes |
#include/#import путей поиска, которые нужно добавить к этой цели и всем зависимым целям, где каждый путь относится к $(SDKROOT)/usr/include. |
textual_hdrs |
|
weak_sdk_frameworks |
|
objc_library
objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, implementation_deps, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)
Это правило создает статическую библиотеку из заданных файлов исходного кода Objective-C.