Aturan
perpustakaan_j2objc_
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 itu sendiri dapat ditemukan di situs J2ObjC
Flag transpilation J2ObjC kustom dapat ditentukan menggunakan flag build
--j2objc_translation_flags
dalam command line.
Perhatikan bahwa file terjemahan yang disertakan dalam target j2objc_library akan dikompilasi menggunakan konfigurasi kompilasi default, konfigurasi yang sama seperti sumber aturan objc_library tanpa opsi kompilasi yang ditentukan dalam atribut.
Selain itu, kode yang dibuat duplikatnya pada tingkat target, bukan tingkat sumber. Jika Anda memiliki dua target Java berbeda yang menyertakan file sumber Java yang sama, Anda mungkin akan melihat error simbol duplikat pada waktu penautan. Cara yang tepat untuk menyelesaikan masalah ini adalah dengan memindahkan file sumber Java bersama 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 Cara kerja terjemahan J2ObjC berbeda-beda 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 dibuat J2ObjC dalam kodenya. 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 di tingkat biner. Untuk proto
|
entry_classes
|
--j2objc_dead_code_removal
aktif. Class Java harus ditentukan dalam nama kanonisnya seperti yang didefinisikan 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 final.
|
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
. Produk ini juga memungkinkan ekspor 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 disediakan untuk penyertaan oleh sumber dalam aturan ini atau dalam aturan dependen. Header yang tidak dimaksudkan untuk disertakan oleh klien library ini harus dicantumkan dalam atribut src. Keduanya akan dikompilasi secara terpisah dari sumber jika modul diaktifkan. |
alwayslink
|
srcs dan non_arc_srcs , meskipun beberapa di antaranya tidak memiliki simbol yang direferensikan oleh biner.
Ini berguna jika kode Anda tidak secara eksplisit dipanggil oleh kode dalam biner, misalnya, jika kode Anda mendaftar untuk menerima beberapa callback yang disediakan oleh beberapa layanan.
|
archives
|
.a yang disediakan untuk target Objective-C yang bergantung pada target ini.
|
includes
|
#include/#import yang akan ditambahkan ke target ini
dan semua target yang bergantung.
Ini untuk mendukung library pihak ketiga dan open source yang tidak
menentukan seluruh jalur ruang kerja di
pernyataan #import/#include -nya.
Jalur ditafsirkan secara relatif terhadap direktori paket, dan
rootfile serta root bin (misalnya Tidak seperti COPTS, flag ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang bergantung padanya) Berhati-hatilah, karena hal ini dapat memiliki efek jangkauan yang luas. Jika ragu, tambahkan "-iQuote" flag ke COPTS. |
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, 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 diberikan.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
deps
|
|
srcs
|
|
hdrs
|
Header ini menjelaskan antarmuka publik untuk library dan akan disediakan untuk penyertaan oleh sumber dalam aturan ini atau dalam aturan dependen. Header yang tidak dimaksudkan untuk disertakan oleh klien library ini harus dicantumkan dalam atribut src. Keduanya akan dikompilasi secara terpisah dari sumber jika modul diaktifkan. |
alwayslink
|
srcs dan non_arc_srcs , meskipun beberapa di antaranya tidak memiliki simbol yang direferensikan oleh biner.
Ini berguna jika kode Anda tidak secara eksplisit dipanggil oleh kode dalam biner, misalnya, jika kode Anda mendaftar untuk menerima beberapa callback yang disediakan oleh beberapa layanan.
|
copts
|
Perlu diketahui bahwa untuk project Xcode yang dihasilkan, jalur direktori yang ditentukan menggunakan "-I" flag di copt akan diurai, diawali dengan "$(WORKSPACE_ROOT)/" jika berupa jalur relatif, dan ditambahkan ke jalur penelusuran header untuk target Xcode terkait. |
defines
|
-D tambahan untuk diteruskan ke compiler. Class tersebut harus berada dalam bentuk KEY=VALUE atau KEY , dan tidak hanya diteruskan ke compiler untuk target ini (sebagaimana copts ), tetapi juga ke semua dependensi objc_ dari target ini.
Tunduk pada substitusi "Make variabel" dan
tokenisasi shell Bourne.
|
enable_modules
|
|
includes
|
#include/#import yang akan ditambahkan ke target ini
dan semua target yang bergantung.
Ini untuk mendukung library pihak ketiga dan open source yang tidak
menentukan seluruh jalur ruang kerja di
pernyataan #import/#include -nya.
Jalur ditafsirkan secara relatif terhadap direktori paket, dan
rootfile serta root bin (misalnya Tidak seperti COPTS, flag ini ditambahkan untuk aturan ini dan setiap aturan yang bergantung padanya. (Catatan: bukan aturan yang bergantung padanya) Berhati-hatilah, karena hal ini dapat memiliki efek jangkauan yang luas. Jika ragu, tambahkan "-iQuote" flag ke COPTS. |
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
|
|
kode_tersedia
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 tersedia secara lokal.
Ini memungkinkan pemilihan versi xcode resmi dari xcode yang tersedia secara kolektif.
Argumen
Atribut | |
---|---|
name |
Nama unik untuk target ini. |
default
|
|
versions
|
|
Konfigurasi_xcode
xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)
Satu target aturan ini dapat dirujuk 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. Ini mungkin tidak ditetapkan jika remote_versions atau
local_versions ditetapkan.
|
local_versions
|
xcode_version |
remote_versions
|
xcode_version |
versions
|
xcode_version |
versi_xcode
xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_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 menggantikan nilai yang ditentukan di sini.
|
default_macos_sdk_version
|
macos_sdk_version akan menggantikan nilai yang ditentukan di sini.
|
default_tvos_sdk_version
|
tvos_sdk_version akan menggantikan nilai yang ditentukan di sini.
|
default_watchos_sdk_version
|
watchos_sdk_version akan menggantikan nilai yang ditentukan di sini.
|
version
|
|