Kurallar
- android_binary
- aar_import
- android_library
- android_instrumentation_test
- android_local_test
- android_device
- android_ndk_repository
- android_sdk_repository
android_binary
android_binary(name, deps, srcs, assets, assets_dir, compatible_with, crunch_png, custom_package, debug_key, debug_signing_keys, debug_signing_lineage_file, densities, deprecation, dex_shards, dexopts, distribs, enable_data_binding, exec_compatible_with, exec_properties, features, incremental_dexing, instruments, javacopts, key_rotation_min_sdk, licenses, main_dex_list, main_dex_list_opts, main_dex_proguard_specs, manifest, manifest_values, multidex, nocompress_extensions, package_id, plugins, proguard_apply_dictionary, proguard_apply_mapping, proguard_generate_mapping, proguard_specs, resource_configuration_filters, resource_files, restricted_to, shrink_resources, tags, target_compatible_with, testonly, visibility)
Android uygulama paketi dosyaları (.apk) oluşturur.
Dolaylı çıkış hedefleri
name.apk
: Bir Android uygulaması hata ayıklama anahtarları ve zipaligned varsa uygulamanızı geliştirmek ve hata ayıklamak için kullanılabilir. Hata ayıklama anahtarlarıyla imzalandığında uygulamanızı bırakamazsınız.name_unsigned.apk
: Belgenin imzalanmamış sürümü öğesini kullanarak yayınlamadan önce sürüm anahtarlarıyla imzalanabilecek dosyayı teslim etmeyi amaçlar.name_deploy.jar
: geçişli olarak kapatılmasına neden olabilir.Dağıtma jar dosyası, her bir komut dosyasının Bu hedefin çalışma zamanı sınıf yolunu arayan classloader baştan sona.
name_proguard.jar
: Aşağıdakileri içeren bir Java arşivi ProGuard'ı çalıştırmanın sonucuname_deploy.jar
. Bu çıkış yalnızca şu durumlarda üretilir: proguard_specs özelliği belirtiliyor.name_proguard.map
: Eşleme dosyası sonucu:name_deploy.jar
üzerinde ProGuard'ı çalıştırıyorum. Bu çıkış yalnızca şu durumlarda üretilir: proguard_specs özelliği belirtilmiş ve proguard_generate_mapping veya shrink_resources ayarlanmış olmalıdır.
Örnekler
Android kuralı örneklerini şu uygulamanın examples/android
dizininde bulabilirsiniz:
Bazel kaynak ağacı.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
deps
|
android_library ,
android kısıtlaması ile java_library ve
Şu öğe için .so yerel kitaplığı sarmalama veya oluşturma: cc_library
Android hedef platformu.
|
srcs
|
|
assets
|
glob
assets dizini. Ayrıca, başka kurallara da dâhil olmak üzere
dosyaları) ya da diğer paketlerdeki dışa aktarılan dosyaları (bu dosyalar,
İlgili paketteki assets_dir dizini.
|
assets_dir
|
assets içindeki dosyaların yolunu belirten dize.
assets ve assets_dir çifti, "paketlenmiş" ifadesini tanımlar
öğelerin her ikisi de sağlanmalı veya hiçbiri sağlanmamalıdır.
|
crunch_png
|
|
custom_package
|
|
debug_key
|
UYARI: Üretim anahtarlarınızı kullanmayın, temin edilir ve kaynak ağacınızda tutulmaz. |
debug_signing_keys
|
UYARI: Üretim anahtarlarınızı kullanmayın, temin edilir ve kaynak ağacınızda tutulmaz. |
debug_signing_lineage_file
|
UYARI: Üretim anahtarlarınızı kullanmayın, temin edilir ve kaynak ağacınızda tutulmaz. |
densities
|
|
dex_shards
|
Her kırığın son uygulamada en az bir dex olacağını unutmayın. İşte bu nedenle Bunun 1'den fazlasına ayarlanması, yayın ikili programları için önerilmez. |
dexopts
|
|
enable_data_binding
|
Veri bağlama ile Android uygulaması oluşturmak için aşağıdakileri de yapmanız gerekir:
|
incremental_dexing
|
|
instruments
|
Bu özellik ayarlanırsa |
javacopts
|
Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir. |
key_rotation_min_sdk
|
|
main_dex_list
|
android/support/multidex/MultiDex$V19.class android/support/multidex/MultiDex.class android/support/multidex/MultiDexApplication.class com/google/common/base/Objects.class multidex="manual_main_dex" ile birlikte kullanılmalıdır.
|
main_dex_list_opts
|
|
main_dex_proguard_specs
|
multidex özelliği legacy olarak ayarlanırsa izin verilir.
|
manifest
|
AndroidManifest.xml ).
resource_files veya assets tanımlanırsa tanımlanmalıdır.
|
manifest_values
|
|
multidex
|
. Olası değerler:
|
nocompress_extensions
|
|
package_id
|
Daha fazla bilgi için AAPT2'nin |
plugins
|
java_plugin
Eklentiler özelliği
bu hedef oluşturuldu. Kaynaklar:
eklenti,
yardımcı olur.
|
proguard_apply_dictionary
|
|
proguard_apply_mapping
|
proguard_generate_mapping tarafından oluşturulan
yeniden kullanılır.
|
proguard_generate_mapping
|
proguard_specs
belirtiliyor. Bu dosya, orijinal ile
kod karartma uygulanmış sınıf, yöntem ve alan adları.
UYARI: Bu özellik kullanılırsa ProGuard
spesifikasyon ne |
proguard_specs
|
|
resource_configuration_filters
|
en_XA ve/veya ar_XB sözde yerel ayar.
|
resource_files
|
glob
res dizini.
. Oluşturulan dosyalara (genrules'tan) şuradan referans verilebilir: Buraya da etiket ekleyin. Tek kısıtlama şu: oluşturulan çıkışlar aynı " res " altında olmalıdır diğer dizinlerdeki gibi
kaynak dosyalarının her biri.
|
shrink_resources
|
manifest ve resource_files özellikleri) gerektirir ve ProGuard gerektirir.
Gradle kaynak daraltıcı ile aynı şekilde çalışır.
(https://developer.android.com/studio/build/shrink-code.html#shrink-resources).
Önemli farklılıklar:
name_files/resource_shrinker.log
oluşturulan analiz ve silme işlemlerinin ayrıntılarını içeren bir belge de oluşturulur.
Olası değerler:
|
aar_import
aar_import(name, deps, data, aar, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, licenses, restricted_to, srcjar, tags, target_compatible_with, testonly, visibility)
Bu kural, .aar
dosyalarının şunlar için kitaplık olarak kullanılmasına izin verir:
android_library
ve
android_binary
kural.
Örnekler
aar_import( name = "google-vr-sdk", aar = "gvr-android-sdk/libraries/sdk-common-1.10.0.aar", ) android_binary( name = "app", manifest = "AndroidManifest.xml", srcs = glob(["**.java"]), deps = [":google-vr-sdk"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
aar
|
.aar dosyası.
|
exports
|
|
srcjar
|
|
android_library
android_library(name, deps, srcs, data, assets, assets_dir, compatible_with, custom_package, deprecation, distribs, enable_data_binding, exec_compatible_with, exec_properties, exported_plugins, exports, exports_manifest, features, idl_import_root, idl_parcelables, idl_preprocessed, idl_srcs, javacopts, licenses, manifest, neverlink, plugins, proguard_specs, resource_files, restricted_to, tags, target_compatible_with, testonly, visibility)
Bu kural, kaynaklarını bir .jar
dosyasında derler ve arşivler.
Android çalışma zamanı kitaplığı android.jar
örtülü olarak başlatıldı
emin olmanız gerekir.
Dolaylı çıkış hedefleri
libname.jar
: Bir Java arşivi.libname-src.jar
: Şunu içeren bir arşiv: kaynakları ("kaynak jar") kolaylaştırır.name.aar
: Android "aar" Java arşivini içeren paket ve kaynaklarını gözden geçireceğiz. Geçişli kapatmayı içermez.
Örnekler
Android kuralı örneklerini şu uygulamanın examples/android
dizininde bulabilirsiniz:
Bazel kaynak ağacı.
Aşağıdaki örnekte şunlar gösterilmektedir:
idl_import_root
nasıl ayarlanır?
//java/bazel/helloandroid/BUILD
şunları içeriyor:
android_library( name = "parcelable", srcs = ["MyParcelable.java"], # bazel.helloandroid.MyParcelable # MyParcelable.aidl will be used as import for other .aidl # files that depend on it, but will not be compiled. idl_parcelables = ["MyParcelable.aidl"] # bazel.helloandroid.MyParcelable # We don't need to specify idl_import_root since the aidl file # which declares bazel.helloandroid.MyParcelable # is present at java/bazel/helloandroid/MyParcelable.aidl # underneath a java root (java/). ) android_library( name = "foreign_parcelable", srcs = ["src/android/helloandroid/OtherParcelable.java"], # android.helloandroid.OtherParcelable idl_parcelables = [ "src/android/helloandroid/OtherParcelable.aidl" # android.helloandroid.OtherParcelable ], # We need to specify idl_import_root because the aidl file which # declares android.helloandroid.OtherParcelable is not positioned # at android/helloandroid/OtherParcelable.aidl under a normal java root. # Setting idl_import_root to "src" in //java/bazel/helloandroid # adds java/bazel/helloandroid/src to the list of roots # the aidl compiler will search for imported types. idl_import_root = "src", ) # Here, OtherInterface.aidl has an "import android.helloandroid.CallbackInterface;" statement. android_library( name = "foreign_interface", idl_srcs = [ "src/android/helloandroid/OtherInterface.aidl" # android.helloandroid.OtherInterface "src/android/helloandroid/CallbackInterface.aidl" # android.helloandroid.CallbackInterface ], # As above, idl_srcs which are not correctly positioned under a java root # must have idl_import_root set. Otherwise, OtherInterface (or any other # interface in a library which depends on this one) will not be able # to find CallbackInterface when it is imported. idl_import_root = "src", ) # MyParcelable.aidl is imported by MyInterface.aidl, so the generated # MyInterface.java requires MyParcelable.class at compile time. # Depending on :parcelable ensures that aidl compilation of MyInterface.aidl # specifies the correct import roots and can access MyParcelable.aidl, and # makes MyParcelable.class available to Java compilation of MyInterface.java # as usual. android_library( name = "idl", idl_srcs = ["MyInterface.aidl"], deps = [":parcelable"], ) # Here, ServiceParcelable uses and thus depends on ParcelableService, # when it's compiled, but ParcelableService also uses ServiceParcelable, # which creates a circular dependency. # As a result, these files must be compiled together, in the same android_library. android_library( name = "circular_dependencies", srcs = ["ServiceParcelable.java"], idl_srcs = ["ParcelableService.aidl"], idl_parcelables = ["ServiceParcelable.aidl"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
deps
|
android_library ,
android kısıtlaması ile java_library ve
cc_library .so yerel kitaplığı sarmalama veya oluşturma
Android hedef platformu için.
|
srcs
|
.java veya .srcjar dosyalarının listesi:
işlenir.
|
assets
|
glob
assets dizini. Ayrıca, başka kurallara da dâhil olmak üzere
dosyaları) ya da diğer paketlerdeki dışa aktarılan dosyaları (bu dosyalar,
İlgili paketteki assets_dir dizini.
|
assets_dir
|
assets içindeki dosyaların yolunu belirten dize.
assets ve assets_dir çifti, "paketlenmiş" ifadesini tanımlar
öğelerin her ikisi de sağlanmalı veya hiçbiri sağlanmamalıdır.
|
custom_package
|
|
enable_data_binding
|
Veri bağlama ile Android uygulaması oluşturmak için aşağıdakileri de yapmanız gerekir:
|
exported_plugins
|
java_plugin listesi (ör. ek açıklama)
işlemcileri) doğrudan bu kitaplığa bağımlı kitaplıklara aktarmak için kullanılır.
Belirtilen |
exports
|
exports özellikleri üzerinden erişilen tüm kuralların kapatılması
doğrudan bağımlılığı olan herhangi bir kuralın doğrudan
exports ile hedefleyin.
|
exports_manifest
|
android_binary hedeflerine dışa aktarılıp aktarılmayacağı
arasında değişir. uses-permissions özellikleri hiçbir zaman dışa aktarılmaz.
|
idl_import_root
|
Bu yol, bu kitaplığa bağımlı hale geleceksiniz.
Bkz. örnekler. |
idl_parcelables
|
android_library hedef
veya geçişli kapanma yoluyla gerçekleştirilir, ancak Java'ya çevrilmez.
veya derlenebilir.
Yalnızca doğrudan karşılık gelen Bu dosyaların, yardımcı derleyici tarafından bulunabilmesi için uygun şekilde yerleştirilmesi gerekir. idl_import_root açıklamasına bakın 'ni inceleyin. |
idl_preprocessed
|
android_library hedef
veya geçişli kapanma yoluyla gerçekleştirilir, ancak Java'ya çevrilmez.
veya derlenebilir.
Yalnızca |
idl_srcs
|
srcs içeriğine sahip.
Bu dosyalar,
Doğrudan bu kitaplığa bağlı Bu dosyaların, yardımcı derleyici tarafından bulunabilmesi için uygun şekilde yerleştirilmesi gerekir. idl_import_root açıklamasına bakın 'ni inceleyin. |
javacopts
|
Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir. |
manifest
|
AndroidManifest.xml ).
resource_files veya assets tanımlanırsa tanımlanmalıdır.
|
neverlink
|
neverlink olarak işaretlenen bir kuralın çıkışları şurada kullanılmayacak:
.apk oluşturuldu. Kitaplık tarafından sağlanacaksa yararlıdır
ortamını bozar.
|
plugins
|
java_plugin
Eklentiler özelliği
bu hedef oluşturuldu. Kaynaklar:
eklenti,
yardımcı olur.
|
proguard_specs
|
android_binary hedefine eklenir.
Buraya eklenen dosyalar sadece ideaklı kurallara, yani -dontnote, -dontwarn,
yan etkileri ve -keep ile başlayan kuralları içerir. Diğer seçenekler yalnızca
android_binary öğesinin proguard_specs (totoolojik olmayan birleştirmeler için)
|
resource_files
|
glob
res dizini.
. Oluşturulan dosyalara (genrules'tan) şuradan referans verilebilir: Buraya da etiket ekleyin. Tek kısıtlama şu: oluşturulan çıkışlar aynı " res " altında olmalıdır diğer dizinlerdeki gibi
kaynak dosyalarının her biri.
|
android_instrumentation_test
android_instrumentation_test(name, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, support_apks, tags, target_compatible_with, target_device, test_app, testonly, timeout, toolchains, visibility)
Bir android_instrumentation_test
kuralı, Android araç testlerini çalıştırır. Bu
emülatörü başlatın, test edilen uygulamayı, test uygulamasını yükleyin ve
ve test paketinde tanımlanan testleri çalıştırın.
test_app özelliği
Testin yer aldığı android_binary
. Sırasıyla bu android_binary
android_binary
uygulamasını
enstrümanlar özelliğiyle birlikte kullanılamaz.
Örnek
# java/com/samples/hello_world/BUILD android_library( name = "hello_world_lib", srcs = ["Lib.java"], manifest = "LibraryManifest.xml", resource_files = glob(["res/**"]), ) # The app under test android_binary( name = "hello_world_app", manifest = "AndroidManifest.xml", deps = [":hello_world_lib"], )
# javatests/com/samples/hello_world/BUILD android_library( name = "hello_world_test_lib", srcs = ["Tests.java"], deps = [ "//java/com/samples/hello_world:hello_world_lib", ... # test dependencies such as Espresso and Mockito ], ) # The test app android_binary( name = "hello_world_test_app", instruments = "//java/com/samples/hello_world:hello_world_app", manifest = "AndroidManifest.xml", deps = [":hello_world_test_lib"], ) android_instrumentation_test( name = "hello_world_uiinstrumentation_tests", target_device = ":some_target_device", test_app = ":hello_world_test_app", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
support_apks
|
|
target_device
|
Testin çalıştırılacağı android_device cihazı. Testi zaten çalışan bir emülatörde veya fiziksel bir cihazda çalıştırmak için
şu bağımsız değişkenlerden bahsedelim:
|
test_app
|
android_binary hedefi, hangi hedef üzerinden test edildiğini belirtmelidir
instruments özelliğiyle ilişkilidir.
|
android_local_test
android_local_test(name, deps, srcs, data, args, compatible_with, custom_package, densities, deprecation, enable_data_binding, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, licenses, local, manifest, manifest_values, nocompress_extensions, plugins, resource_configuration_filters, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, visibility)
Bu kural, android_library
kurallarının yerel olarak birim testi için kullanılır
(cihazda değil).
Android Robolectric test çerçevesiyle çalışır.
Ayrıntılı bilgi için Android Robolectric sitesine göz atın.
testler yazacağım.
Dolaylı çıkış hedefleri
name.jar
: Testin Java arşivi.name-src.jar
: Kaynakları içeren bir arşiv ("kaynak jar").name_deploy.jar
: Uygun bir Java dağıtım arşivi (yalnızca açıkça istenirse oluşturulur).
Örnekler
Robolectric'i android_local_test
ile kullanmak için
Robolectric'in
deponuzu WORKSPACE
dosyanıza ekleyin:
http_archive( name = "robolectric", urls = ["https://github.com/robolectric/robolectric/archive/<COMMIT>.tar.gz"], strip_prefix = "robolectric-<COMMIT>", sha256 = "<HASH>", ) load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories") robolectric_repositories()
maven_jar
kurallarını getirir.
Daha sonra her android_local_test
kuralı
@robolectric//bazel:robolectric
. Aşağıdaki örneğe bakın.
android_local_test( name = "SampleTest", srcs = [ "SampleTest.java", ], manifest = "LibManifest.xml", deps = [ ":sample_test_lib", "@robolectric//bazel:robolectric", ], ) android_library( name = "sample_test_lib", srcs = [ "Lib.java", ], resource_files = glob(["res/**"]), manifest = "AndroidManifest.xml", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
deps
|
|
srcs
|
Diğer dosyalar yoksayıldığı sürece yukarıda açıklanan dosya türünde en az bir dosya olduğundan emin olun. Aksi halde oluşur.
|
custom_package
|
test_class öğesini de kullanmanız gerekecektir.
|
densities
|
|
enable_data_binding
|
|
javacopts
|
Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir. |
jvm_flags
|
Java ikili programı için sarmalayıcı komut dosyası bir CLASSPATH tanımı içeriyor
(bağımlı tüm jar'ları bulmak için) kullanır ve doğru Java yorumlayıcısını çağırır.
Sarmalayıcı komut dosyası tarafından oluşturulan komut satırı,
ana sınıf ve ardından Bu özelliğin |
manifest
|
AndroidManifest.xml ).
source_files veya öğeler tanımlanırsa ya da
test edilen kitaplıklarda minSdkVersion etiketi vardır.
|
manifest_values
|
applicationId , versionCode , versionName ,
minSdkVersion , targetSdkVersion ve
maxSdkVersion , ilgili özellikleri de geçersiz kılar
ve
kullanımlar-sdk etiketleri. packageName yoksayılır ve şu iki ayardan ayarlanır:
Şu durumda applicationId
manifest dosyasındaki pakete göre ayarlanır.
manifest_values parametresi kullanmak için kuralda bir manifest dosyası olması gerekmez.
|
nocompress_extensions
|
|
plugins
|
java_plugin bu kuralla birlikte çalıştırılır
geliştirildi. Bir kitaplık,
exported_plugins Kaynaklar
oluşturulan dosya, bu kuralın ortaya çıkan jar'ına dahil edilir.
|
resource_configuration_filters
|
|
resource_jars
|
|
resource_strip_prefix
|
Belirtilirse bu yol öneki |
runtime_deps
|
deps ürününde olduğu gibi çalışma zamanı sınıf yolunda görünür, ancak
üzerinde çalışmalıdır. Yalnızca çalışma zamanında gereken bağımlılıklar
burada görebilirsiniz. Bağımlılık analizi araçları,
runtime_deps ve deps .
|
stamp
|
Bağımlılıkları değişmediği sürece damgalı ikili programlar yeniden oluşturulmaz. |
test_class
|
Bu özellik, çalıştırılacak bir Java sınıfının adını belirtir
inceleyeceğiz. Bunun ayarlanması nadiren gerekir. Bu bağımsız değişken atlanırsa Java sınıfı
adı bu videonun |
use_launcher
|
Bu özellik false (yanlış) değerine ayarlanırsa
Başlatıcı özelliğini ve ilgili
|
android_device
android_device(name, cache, compatible_with, default_properties, deprecation, distribs, exec_compatible_with, exec_properties, features, horizontal_resolution, licenses, platform_apks, ram, restricted_to, screen_density, system_image, tags, target_compatible_with, testonly, vertical_resolution, visibility, vm_heap)
Bu kural, belirtilen özellikler. Bu emülatör, bazel çalıştırmasıyla başlatılabilir komutunu çalıştırarak veya oluşturulan komut dosyasını doğrudan yürütebilirsiniz. Birlikte çalıştığınız kendi kurallarınızı tanımlamak yerine mevcut android_device kurallarınızı kullanın.
Bu kural, "bazel testi ve blaze" yapmak için --run_under bayrağı için uygun bir hedeftir gerekir. Bir emülatör başlatır, test edilen/çalıştırılan hedefi emülatöre kopyalar, uygun şekilde test eder veya çalıştırır.
Temel alınan temelde KVM görüntülerinin oluşturulmasında android_device
,
system_image, X86 tabanlıdır ve
en çok I686 CPU mimarisi için optimize edilmiştir. KVM'yi kullanmak için ekleyin
android_device
kuralına tags = ['requires-kvm']
.
Dolaylı çıkış hedefleri
name_images/userdata.dat
: Resim dosyaları ve emülatörü başlatacak anlık görüntüler içerirname_images/emulator-meta-data.pb
: Emülatöre iletilecek serileştirilmiş bilgileri içerir yeniden başlatın.
Örnekler
Aşağıdaki örnekte android_device özelliğinin nasıl kullanılacağı gösterilmektedir.
//java/android/helloandroid/BUILD
şunu içerir:
android_device( name = "nexus_s", cache = 32, default_properties = "nexus_s.properties", horizontal_resolution = 480, ram = 512, screen_density = 233, system_image = ":emulator_images_android_16_x86", vertical_resolution = 800, vm_heap = 32, ) filegroup( name = "emulator_images_android_16_x86", srcs = glob(["androidsdk/system-images/android-16/**"]), )
//java/android/helloandroid/nexus_s.properties
şunu içerir:
ro.product.brand=google ro.product.device=crespo ro.product.manufacturer=samsung ro.product.model=Nexus S ro.product.name=soju
Bu kural, resimler ve bir başlangıç komut dosyası oluşturur. Emülatörü başlatabilirsiniz. bazel run :nexus_s -- --action=start öğesini yürüterek yerel olarak çalıştırın. Komut dosyası, şu işaretler:
- --adb_port: adb'nin açılacağı bağlantı noktası. Adb dosyası oluşturmak komutları, adb connect'i vereceğiniz bağlantı noktasıdır. .
- --emulator_port: Emülatörün telnet yönetimini açığa çıkaran bağlantı noktası konsolu açık duruma getirin.
- --enable_display: Doğruysa emülatörü bir ekranla başlatır (varsayılan false olarak ayarlayın).
- --action: Ya başlat ya da sonlandır.
- --apks_to_install: Emülatöre yüklenecek apk'lerin listesi.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
cache
|
|
default_properties
|
|
horizontal_resolution
|
|
platform_apks
|
|
ram
|
|
screen_density
|
|
system_image
|
|
vertical_resolution
|
|
vm_heap
|
|
android_ndk_repository
android_ndk_repository(name, api_level, path, repo_mapping)
Yerel öğelerle Android hedefleri oluşturmayı desteklemek için Bazel'i Android NDK kullanacak şekilde yapılandırır girin.
Android için geliştirme yapmak için android_sdk_repository
kuralının
WORKSPACE
dosya
Daha fazla bilgi için kullanım hakkındaki dokümanların tamamını inceleyin.
Örnekler
android_ndk_repository( name = "androidndk", )
Yukarıdaki örnek, $ANDROID_NDK_HOME
cihazındaki Android NDK'nızı bulup algılayacak
desteklediği en yüksek API düzeyine sahip olmalıdır.
android_ndk_repository( name = "androidndk", path = "./android-ndk-r20", api_level = 24, )
Yukarıdaki örnekte,
./android-ndk-r20
JNI'nizi derlerken API düzey 24 kitaplıklarını kullanır
girin.
cpuözellikleri
Android NDK, cpufeatures kitaplığı Bu kimlik, çalışma zamanında cihazın CPU'sunu algılamak için kullanılabilir. Aşağıdaki örnekte, cpufeatures'ı tıklayın.
# jni.cc #include "ndk/sources/android/cpufeatures/cpu-features.h" ...
# BUILD cc_library( name = "jni", srcs = ["jni.cc"], deps = ["@androidndk//:cpufeatures"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
api_level
|
|
path
|
$ANDROID_NDK_HOME ortam değişkeni ayarlanmalıdır.
Android NDK şuradan indirilebilir: Android geliştirici sitesi ziyaret edin. |
repo_mapping
|
Örneğin, |
android_sdk_repository
android_sdk_repository(name, api_level, build_tools_version, path, repo_mapping)
Android hedefleri oluşturmayı desteklemek için Bazel'i yerel Android SDK'sı kullanacak şekilde yapılandırır.
Örnekler
Bazel için Android SDK'sı ayarlamak isterseniz en azandroid_sdk_repository
kuralı uygulamanız gerekir.
"androidsdk" adlı WORKSPACE
dosyanızdan $ANDROID_HOME
ortam değişkenini Android SDK'nızın yoluna ekleyin. Bazel en yüksek Android API düzeyini kullanacak
varsayılan olarak Android SDK'da yüklü olan derleme araçları sürümünü de kullanabilirsiniz.
android_sdk_repository( name = "androidsdk", )
Yeniden oluşturulabilir derlemeler sağlamak için path
, api_level
ve
build_tools_version
özellikleri, belirli değerlere ayarlanabilir. Derleme şu durumlarda başarısız olur:
Android SDK'da belirtilen API düzeyi veya derleme araçları sürümü yüklü değil.
android_sdk_repository( name = "androidsdk", path = "./sdk", api_level = 19, build_tools_version = "25.0.0", )
Yukarıdaki örnekte, Android SDK'ya çalışma alanına bağlı bir yolun kullanımı da gösterilmektedir. Bu Android SDK, Bazel çalışma alanınızın bir parçasıysa (ör. kontrolü).
Destek Kitaplıkları
Destek Kitaplıkları, Android SDK Yöneticisi'nde "Android Destek Deposu" olarak bulunur.
Bu, Support ve AppCompat kitaplıkları gibi ortak Android kitaplıklarının sürümlü bir kümesidir.
depo olarak paketlenir. android_sdk_repository
, Bazel oluşturur
bağımlılıklarında kullanılabilecek bu kitaplıkların her biri için
android_binary
ve android_library
hedefleri.
Oluşturulan hedeflerin adları
@androidsdk//${group}:${artifact}-${version}
biçimindeki Android Destek Deposu.
Aşağıdaki örnekte bir android_library
değerinin
v7 uygulama uyumluluğu kitaplığı.
android_library( name = "lib", srcs = glob(["*.java"]), manifest = "AndroidManifest.xml", resource_files = glob(["res/**"]), deps = ["@androidsdk//com.android.support:appcompat-v7-25.0.0"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
api_level
|
Belirli bir derleme için kullanılan API düzeyi,
|
build_tools_version
|
Bazel için derleme araçları 30.0.0 veya sonraki sürümleri gerekir. |
path
|
$ANDROID_HOME ortam değişkeni ayarlanmalıdır.
Android SDK'sı şuradan indirilebilir: Android geliştirici sitesine gidin. |
repo_mapping
|
Örneğin, |