Aturan
j2objc_library
j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
Aturan ini menggunakan J2ObjC untuk menerjemahkan file sumber Java ke Objective-C, yang kemudian dapat digunakan sebagai dependensi aturan objc_library dan objc_binary. Informasi mendetail tentang J2ObjC sendiri dapat ditemukan di situs J2ObjC
Flag transpilasi J2ObjC kustom dapat ditentukan menggunakan flag build
--j2objc_translation_flags
pada command line.
Perlu diketahui bahwa file yang diterjemahkan dan disertakan dalam target j2objc_library akan dikompilasi menggunakan konfigurasi kompilasi default, konfigurasi yang sama seperti untuk sumber aturan objc_library tanpa opsi kompilasi yang ditentukan dalam atribut.
Selain itu, kode yang dihasilkan akan dihapus duplikatnya di tingkat target, bukan di tingkat sumber. Jika memiliki dua target Java berbeda yang menyertakan file sumber Java yang sama, Anda mungkin melihat error simbol duplikat pada waktu penautan. Cara yang tepat untuk menyelesaikan masalah ini adalah dengan memindahkan file sumber Java yang dibagikan ke target umum terpisah yang dapat diandalkan.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
deps
|
j2objc_library , java_library , java_import dan java_proto_library yang berisi file Java yang akan ditranspilasi ke Objective-C.
Semua target Terjemahan J2ObjC berfungsi secara berbeda bergantung pada jenis file sumber Java
sumber yang disertakan dalam penutupan transitif. Untuk setiap file sumber .java yang disertakan dalam
Pengguna dapat mengimpor file header yang dihasilkan J2ObjC dalam kode mereka. Jalur impor untuk
file ini adalah jalur relatif root dari artefak Java asli. Misalnya,
Jika aturan proto_library berada dalam penutupan transitif aturan ini, proto J2ObjC juga akan
dibuat, dikompilasi, dan ditautkan pada level biner. Untuk proto |
entry_classes
|
--j2objc_dead_code_removal
aktif. Class Java harus ditentukan dalam nama kanonisnya seperti yang ditetapkan oleh Spesifikasi Bahasa Java.
Ketika flag --j2objc_dead_code_removal ditentukan, daftar class entri akan dikumpulkan secara transitif dan digunakan sebagai titik entri untuk melakukan analisis kode mati.
Class yang tidak digunakan kemudian akan dihapus dari app bundle ObjC akhir.
|
jre_deps
|
j2objc_library ini. Hanya fungsi JRE inti yang ditautkan secara default.
|
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)
Aturan ini mengenkapsulasi library statis yang sudah dikompilasi dalam bentuk
file .a
. Tindakan ini juga memungkinkan pengeksporan header dan resource menggunakan atribut yang sama
yang didukung oleh objc_library
.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
hdrs
|
Header ini menjelaskan antarmuka publik untuk library dan akan tersedia untuk disertakan oleh sumber dalam aturan ini atau dalam aturan dependen. Header yang tidak dimaksudkan untuk disertakan oleh klien library ini harus dicantumkan dalam atribut srcs sebagai gantinya. Ini akan dikompilasi secara terpisah dari sumber jika modul diaktifkan. |
alwayslink
|
srcs dan non_arc_srcs , meskipun beberapa file tidak berisi simbol yang direferensikan oleh biner.
Hal ini berguna jika kode Anda tidak secara eksplisit dipanggil oleh kode dalam biner, misalnya jika kode Anda mendaftar untuk menerima callback yang disediakan oleh beberapa layanan.
|
archives
|
.a yang diberikan ke target Objective-C yang bergantung pada target ini.
|
includes
|
#include/#import jalur penelusuran yang akan ditambahkan ke target ini dan semua target yang bergantung.
Hal ini untuk mendukung library pihak ketiga dan open source yang tidak menentukan seluruh jalur ruang kerja dalam pernyataan #import/#include .
Jalur tersebut ditafsirkan secara relatif terhadap direktori paket, dan root genfile dan bin (misalnya Tidak seperti COPTS, tanda ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang menjadi dependensinya.) Hati-hati, karena hal ini mungkin memiliki dampak yang luas. Jika ragu, tambahkan tanda "-ikutipan" ke COPTS sebagai gantinya. |
sdk_dylibs
|
|
sdk_frameworks
|
Saat menautkan biner Apple tingkat atas, semua framework SDK yang tercantum dalam grafik dependensi transitif biner tersebut akan ditautkan. |
sdk_includes
|
#include/#import yang akan ditambahkan ke target ini dan semua target yang bergantung, dengan setiap jalur relatif terhadap $(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)
Aturan ini menghasilkan library statis dari file sumber Objective-C yang ditentukan.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
deps
|
|
srcs
|
|
hdrs
|
Header ini menjelaskan antarmuka publik untuk library dan akan tersedia untuk disertakan oleh sumber dalam aturan ini atau dalam aturan dependen. Header yang tidak dimaksudkan untuk disertakan oleh klien library ini harus dicantumkan dalam atribut srcs sebagai gantinya. Ini akan dikompilasi secara terpisah dari sumber jika modul diaktifkan. |
alwayslink
|
srcs dan non_arc_srcs , meskipun beberapa file tidak berisi simbol yang direferensikan oleh biner.
Hal ini berguna jika kode Anda tidak secara eksplisit dipanggil oleh kode dalam biner, misalnya jika kode Anda mendaftar untuk menerima callback yang disediakan oleh beberapa layanan.
|
copts
|
Perlu diperhatikan bahwa untuk project Xcode yang dihasilkan, jalur direktori yang ditentukan menggunakan flag "-I" dalam kode akan diuraikan, diawali dengan "$(WORKSPACE_ROOT)/" jika jalur tersebut merupakan jalur relatif, dan ditambahkan ke jalur penelusuran header untuk target Xcode terkait. |
defines
|
-D untuk diteruskan ke compiler. Flag tersebut harus berbentuk KEY=VALUE atau hanya KEY dan diteruskan tidak hanya ke compiler untuk target ini (seperti copts ) tetapi juga ke semua dependensi objc_ dari target ini.
Tunduk pada penggantian "Buat variabel" dan
tokenisasi Bourne shell.
|
enable_modules
|
|
implementation_deps
|
deps , header dan jalur penyertaan library ini (dan semua
dependensi transitifnya) hanya digunakan untuk kompilasi library ini, dan bukan library yang
bergantung padanya. Library yang ditentukan dengan implementation_deps tetap ditautkan
dalam target biner yang bergantung pada library ini.
|
includes
|
#include/#import jalur penelusuran yang akan ditambahkan ke target ini dan semua target yang bergantung.
Hal ini untuk mendukung library pihak ketiga dan open source yang tidak menentukan seluruh jalur ruang kerja dalam pernyataan #import/#include .
Jalur tersebut ditafsirkan secara relatif terhadap direktori paket, dan root genfile dan bin (misalnya Tidak seperti COPTS, tanda ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang menjadi dependensinya.) Hati-hati, karena hal ini mungkin memiliki dampak yang luas. Jika ragu, tambahkan tanda "-ikutipan" ke COPTS sebagai gantinya. |
linkopts
|
|
module_map
|
|
module_name
|
|
non_arc_srcs
|
|
pch
|
|
runtime_deps
|
|
sdk_dylibs
|
|
sdk_frameworks
|
Saat menautkan biner Apple tingkat atas, semua framework SDK yang tercantum dalam grafik dependensi transitif biner tersebut akan ditautkan. |
sdk_includes
|
#include/#import yang akan ditambahkan ke target ini dan semua target yang bergantung, dengan setiap jalur relatif terhadap $(SDKROOT)/usr/include .
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
available_xcodes
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
Dua target aturan ini dapat diandalkan oleh instance aturan xcode_config
untuk menunjukkan versi xcode yang tersedia secara jarak jauh dan lokal.
Hal ini memungkinkan pemilihan versi xcode resmi dari xcode yang tersedia secara kolektif.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
default
|
|
versions
|
|
xcode_config
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)
Satu target dari aturan ini dapat direferensikan oleh flag build
--xcode_version_config
untuk menerjemahkan flag --xcode_version
ke dalam versi xcode resmi yang diterima.
Hal ini memungkinkan pemilihan versi xcode resmi dari sejumlah alias yang terdaftar.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
default
|
xcode_version yang disediakan akan digunakan jika
tidak ada flag build xcode_version yang ditentukan. Ini diperlukan jika ada
versions yang ditetapkan. Nilai ini tidak dapat disetel jika remote_versions atau
local_versions ditetapkan.
|
local_versions
|
xcode_version |
remote_versions
|
xcode_version |
versions
|
xcode_version diterima |
xcode_version
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)
Mewakili satu versi xcode resmi dengan alias yang dapat diterima untuk versi xcode tersebut.
Lihat aturan xcode_config
.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
default_ios_sdk_version
|
ios_sdk_version akan mengganti nilai yang ditentukan di sini.
|
default_macos_sdk_version
|
macos_sdk_version akan mengganti nilai yang ditentukan di sini.
|
default_tvos_sdk_version
|
tvos_sdk_version akan mengganti nilai yang ditentukan di sini.
|
default_visionos_sdk_version
|
visionos_sdk_version akan mengganti nilai yang ditentukan di sini.
|
default_watchos_sdk_version
|
watchos_sdk_version akan mengganti nilai yang ditentukan di sini.
|
version
|
|