Kurallar
- android_binary
- aar_import
- android_library
- android_instrumentation_test
- android_local_test
- android_device
- android_ndk_repository
- android_sdk_repository
android_binary
Kural kaynağını görüntülemeandroid_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.
Örtülü çıkış hedefleri
- name.apk: Hata ayıklama anahtarlarıyla imzalanmış ve zipaligned bir Android uygulama paketi dosyasıdır. Uygulamanızı geliştirmek ve hatalarını ayıklamak için kullanılabilir. Uygulamanızı hata ayıklama anahtarlarıyla imzalandığında yayınlayamazsınız.
- name_unsigned.apk: Yukarıdaki dosyanın, herkese açık olarak yayınlanmadan önce sürüm anahtarlarıyla imzalanabilecek imzasız bir sürümü.
- name_deploy.jar: Bu hedefin geçişli kapanımını içeren bir Java arşivi.- Deploy jar'ı, bu hedefin çalışma zamanı sınıf yolunda baştan sona arama yapan bir sınıf yükleyicinin bulacağı tüm sınıfları içerir. 
- name_proguard.jar:- name_deploy.jarüzerinde ProGuard çalıştırma sonucunu içeren bir Java arşivi. Bu çıkış yalnızca proguard_specs özelliği belirtilmişse oluşturulur.
- name_proguard.map:- name_deploy.jarüzerinde ProGuard çalıştırmanın eşleme dosyası sonucu. Bu çıkış yalnızca proguard_specs özelliği belirtilmişse ve proguard_generate_mapping veya shrink_resources ayarlanmışsa oluşturulur.
Örnekler
Android kurallarına ilişkin örnekleri Bazel kaynak ağacının examples/android dizininde bulabilirsiniz.
  
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| deps | Etiket listesi; varsayılan değer  android_library,androidkısıtlamasıylajava_libraryve Android hedef platformu için.soyerel kitaplıklarını sarmalama veya oluşturmacc_library. | 
| srcs | Etiket listesi; varsayılan değer  
 
 | 
| assets | Etiket listesi; varsayılan değer  assetsdizinindeki tüm dosyalarınglob'sıdır. Ayrıca, diğer paketlerdeki diğer kurallara (dosya oluşturan tüm kurallar) veya dışa aktarılan dosyalara da başvurabilirsiniz. Ancak bu dosyaların ilgili pakettekiassets_dirdizini altında olması gerekir. | 
| assets_dir | Dize; varsayılan değer  assetsiçindeki dosyaların yolunu veren dize.assetsveassets_dirçifti, paketlenmiş öğeleri tanımlar. Bu özelliklerin ikisi de sağlanmalı veya ikisi de sağlanmamalıdır. | 
| crunch_png | Boole değeri; varsayılan değer  | 
| custom_package | Dize; varsayılan değer  | 
| debug_key | Etiket; varsayılan değer  UYARI: Üretim anahtarlarınızı kullanmayın. Bu anahtarlar kesinlikle korunmalı ve kaynak ağacınızda saklanmamalıdır. | 
| debug_signing_keys | Etiket listesi; varsayılan değer  UYARI: Üretim anahtarlarınızı kullanmayın. Bu anahtarlar kesinlikle korunmalı ve kaynak ağacınızda saklanmamalıdır. | 
| debug_signing_lineage_file | Etiket; varsayılan değer  UYARI: Üretim anahtarlarınızı kullanmayın. Bu anahtarlar kesinlikle korunmalı ve kaynak ağacınızda saklanmamalıdır. | 
| densities | Dize listesi; varsayılan değer  | 
| dex_shards | Tam sayı; varsayılan değer  Her parçanın nihai uygulamada en az bir dex ile sonuçlanacağını unutmayın. Bu nedenle, yayın ikilileri için bu değeri 1'den fazla olarak ayarlamanız önerilmez. | 
| dexopts | Dize listesi; varsayılan değer  | 
| enable_data_binding | Boole değeri; varsayılan değer  Veri bağlama içeren bir Android uygulaması oluşturmak için aşağıdakileri de yapmanız gerekir: 
 | 
| incremental_dexing | Tamsayı; yapılandırılamaz; varsayılan değer  | 
| instruments | Etiket; varsayılan değer  Enstrüman için  Bu özellik ayarlanırsa bu  | 
| javacopts | Dize listesi; varsayılan değer  Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir. | 
| key_rotation_min_sdk | Dize; varsayılan değer  | 
| main_dex_list | Etiket; varsayılan değer  
          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 kullanılmalıdır. | 
| main_dex_list_opts | Dize listesi; varsayılan değer  | 
| main_dex_proguard_specs | Etiket listesi; varsayılan değer  multidexözelliğilegacyolarak ayarlanmışsa izin verilir. | 
| manifest | Etiket: zorunluAndroid manifest dosyasının adı (normalde AndroidManifest.xml).
          resource_files veya assets tanımlanmışsa tanımlanmalıdır. | 
| manifest_values | Sözlük: Dize -> Dize; varsayılan değer  
          Manifest'teki tüm  
           
           
           | 
| multidex | Dize; varsayılan değer  Olası değerler: 
 | 
| nocompress_extensions | Dize listesi; varsayılan değer  | 
| package_id | Tam sayı; varsayılan değer  Daha fazla bilgi için AAPT2'nin  | 
| plugins | Etiket listesi; varsayılan değer  java_plugin, bu hedef her oluşturulduğunda çalıştırılır.  Eklenti tarafından oluşturulan kaynaklar, hedefin sonuç JAR'ına dahil edilir. | 
| proguard_apply_dictionary | Etiket; varsayılan değer  | 
| proguard_apply_mapping | Etiket; varsayılan değer  proguard_generate_mappingtarafından oluşturulan bir eşleme dosyası, yeni bir derlemeye aynı eşlemeyi uygulamak için yeniden kullanılır. | 
| proguard_generate_mapping | Boole; yapılandırılamaz; varsayılan değer  proguard_specsbelirtilirse oluşturulur. Bu dosyada, orijinal ve karartılmış sınıf, yöntem ve alan adları arasındaki eşleme listelenir.UYARI: Bu özellik kullanılıyorsa Proguard spesifikasyonu  | 
| proguard_specs | Etiket listesi; varsayılan değer  | 
| resource_configuration_filters | Dize listesi; varsayılan değer  en_XAve/veyaar_XBsözde yerel ayarlarını ekleyin. | 
| resource_files | Etiket listesi; varsayılan değer  resdizinindeki tüm dosyalarınglob'sıdır.Oluşturulan dosyalar (genrules'dan) burada da Etiket ile referans verilebilir. Tek kısıtlama, oluşturulan çıktıların, dahil edilen diğer kaynak dosyalarla aynı " res" dizininde olmasıdır. | 
| shrink_resources | Tam sayı; varsayılan değer  manifestveresource_filesözellikleri) için desteklenir ve ProGuard gerektirir.
          Çoğunlukla Gradle kaynak küçültücüyle aynı şekilde çalışır
          (https://developer.android.com/studio/build/shrink-code.html#shrink-resources).Önemli farklılıklar: 
 name_files/resource_shrinker.logda oluşturulur. Bu dosya, gerçekleştirilen analiz ve silme işlemlerini ayrıntılı olarak açıklar.Olası değerler: 
 | 
aar_import
Kural kaynağını görüntülemeaar_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 android_library ve android_binary kuralları için kitaplık olarak kullanılmasına izin verir.
Ö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 | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| aar | Etiket: zorunluBu hedefe bağlı Android hedeflerine sağlanacak .aardosyası. | 
| exports | Etiket listesi; varsayılan değer  | 
| srcjar | Etiket; varsayılan değer  | 
android_library
Kural kaynağını görüntülemeandroid_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ı derleyip .jar dosyası olarak arşivler.
  Android çalışma zamanı kitaplığı android.jar, derleme sınıfı yoluna örtülü olarak yerleştirilir.
Örtülü çıkış hedefleri
- libname.jar: Java arşivi.
- libname-src.jar: Kaynakları ("source jar") içeren bir arşiv.
- name.aar: Bu hedefin java arşivini ve kaynaklarını içeren bir Android "aar" paketi. Geçişli kapanmayı içermez.
Örnekler
Android kurallarına ilişkin örnekleri Bazel kaynak ağacının examples/android dizininde bulabilirsiniz.
Aşağıdaki örnekte idl_import_root nasıl ayarlanacağı gösterilmektedir.
//java/bazel/helloandroid/BUILD şunları içerebilir:
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 | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| deps | Etiket listesi; varsayılan değer  android_library,androidkısıtlaması olanjava_libraryve
        Android hedef platformu içincc_librarysarmalama veya.soyerel kitaplıkları oluşturma. | 
| srcs | Etiket listesi; varsayılan değer  .javaveya.srcjardosyalarının listesi.
 
 
 | 
| assets | Etiket listesi; varsayılan değer  assetsdizinindeki tüm dosyalarınglob'sıdır. Ayrıca, diğer paketlerdeki diğer kurallara (dosya oluşturan tüm kurallar) veya dışa aktarılan dosyalara da başvurabilirsiniz. Ancak bu dosyaların ilgili pakettekiassets_dirdizini altında olması gerekir. | 
| assets_dir | Dize; varsayılan değer  assetsiçindeki dosyaların yolunu veren dize.assetsveassets_dirçifti, paketlenmiş öğeleri tanımlar. Bu özelliklerin ikisi de sağlanmalı veya ikisi de sağlanmamalıdır. | 
| custom_package | Dize; varsayılan değer  | 
| enable_data_binding | Boole değeri; varsayılan değer  Veri bağlama içeren bir Android uygulaması oluşturmak için aşağıdakileri de yapmanız gerekir: 
 | 
| exported_plugins | Etiket listesi; varsayılan değer  java_pluginlistesi (ör. ek açıklama işlemcileri).
          Belirtilen  | 
| exports | Etiket listesi; varsayılan değer  exportsözellikleri aracılığıyla ulaşılan tüm kuralların kapatılması,exportsile doğrudan hedefe bağlı olan tüm kuralların doğrudan bağımlılıkları olarak kabul edilir.
 | 
| exports_manifest | Tam sayı; varsayılan değer  android_binaryhedeflerine aktarılıp aktarılmayacağı.uses-permissionsözellikleri hiçbir zaman dışa aktarılmaz. | 
| idl_import_root | Dize; varsayılan değer  Bu kitaplığa bağlı idl kaynakları işlenirken bu yol, içe aktarma kökü olarak kullanılır. 
 Örnekleri inceleyin. | 
| idl_parcelables | Etiket listesi; varsayılan değer  android_libraryhedefler için içe aktarma olarak kullanılabilir ancak Java'ya çevrilmez veya derlenmez.Bu kitaplıktaki  Bu dosyalar, aidl derleyicisinin bulabilmesi için uygun şekilde yerleştirilmelidir. Bunun ne anlama geldiği hakkında bilgi edinmek için idl_import_root açıklamasına bakın. | 
| idl_preprocessed | Etiket listesi; varsayılan değer  android_libraryhedefler için içe aktarma olarak kullanılabilir ancak Java'ya çevrilmez veya derlenmez.Bu kitaplıktaki  | 
| idl_srcs | Etiket listesi; varsayılan değer  srcsiçeriğiyle birlikte derlenir.Bu dosyalar, doğrudan veya geçişli kapanımı aracılığıyla bu kitaplığa bağlı olan tüm  Bu dosyalar, aidl derleyicisinin bulabilmesi için uygun şekilde yerleştirilmelidir. Bunun ne anlama geldiği hakkında bilgi edinmek için idl_import_root açıklamasına bakın. | 
| javacopts | Dize listesi; varsayılan değer  Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir. | 
| manifest | Etiket; varsayılan değer  AndroidManifest.xml).
          resource_files veya assets tanımlanmışsa tanımlanmalıdır. | 
| neverlink | Boole değeri; varsayılan değer  neverlinkolarak işaretlenen bir kuralın çıkışları.apkoluşturulurken kullanılmaz. Kitaplık, yürütme sırasında çalışma zamanı ortamı tarafından sağlanacaksa kullanışlıdır. | 
| plugins | Etiket listesi; varsayılan değer  java_plugin, bu hedef her oluşturulduğunda çalıştırılır.  Eklenti tarafından oluşturulan kaynaklar, hedefin sonuç JAR'ına dahil edilir. | 
| proguard_specs | Etiket listesi; varsayılan değer  android_binaryhedefine eklenirler.
        Burada yer alan dosyalar yalnızca idempotent kurallar içermelidir. Bu kurallar şunlardır: -dontnote, -dontwarn, assumenosideeffects ve -keep ile başlayan kurallar. Diğer seçenekler, çelişkili olmayan birleştirme işlemleri için yalnızcaandroid_binary'nın proguard_specs dosyasında görünebilir. | 
| resource_files | Etiket listesi; varsayılan değer  resdizinindeki tüm dosyalarınglob'sıdır.Oluşturulan dosyalar (genrules'dan) burada da Etiket ile referans verilebilir. Tek kısıtlama, oluşturulan çıktıların, dahil edilen diğer kaynak dosyalarla aynı " res" dizininde olmasıdır. | 
android_instrumentation_test
Kural kaynağını görüntülemeandroid_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)
  android_instrumentation_test kuralı, Android araç testlerini çalıştırır. Bir emülatör başlatır, test edilen uygulamayı, test uygulamasını ve gerekli diğer uygulamaları yükler ve test paketinde tanımlanan testleri çalıştırır.
  test_app özelliği, testi içeren android_binary değerini belirtir. Bu android_binary, instruments özelliği aracılığıyla test edilen android_binary uygulamasını belirtir.
Ö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 | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| support_apks | Etiket listesi; varsayılan değer  | 
| target_device | Etiket: zorunlu Testin üzerinde çalıştırılacağı android_device. Testi zaten çalışan bir emülatörde veya fiziksel bir cihazda çalıştırmak için şu argümanları kullanın:
         | 
| test_app | Etiket: zorunluTest sınıflarını içeren android_binary hedefi. android_binaryhedefi,instrumentsözelliği aracılığıyla hangi hedefi test ettiğini belirtmelidir. | 
android_local_test
Kural kaynağını görüntülemeandroid_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 (cihazda değil) birim testine yöneliktir.
Android Robolectric test çerçevesiyle çalışır.
Robolectric testleri yazma hakkında ayrıntılı bilgi için Android Robolectric sitesini inceleyin.
Örtülü çıkış hedefleri
- name.jar: Testin Java arşivi.
- name-src.jar: Kaynakları içeren bir arşiv ("kaynak jar").
- name_deploy.jar: Dağıtıma 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 WORKSPACE dosyanıza Robolectric'in deposunu ekleyin:
http_archive(
    name = "robolectric",
    urls = ["https://github.com/robolectric/robolectric-bazel/archive/<COMMIT>.tar.gz"],
    strip_prefix = "robolectric-bazel-<COMMIT>",
    sha256 = "<HASH>",
)
load("@robolectric//bazel:robolectric.bzl", "robolectric_repositories")
robolectric_repositories()
maven_jar kurallarını getirir.
Ardından her android_local_test kuralı @robolectric//bazel:robolectric'e bağlı olmalıdır. Aşağıdaki örneğe bakın.
android_local_test(
    name = "SampleTest",
    srcs = [
        "SampleTest.java",
    ],
    manifest = "LibManifest.xml",
    deps = [
        ":sample_test_lib",
        "@robolectric//bazel:android-all",
    ],
)
android_library(
    name = "sample_test_lib",
    srcs = [
         "Lib.java",
    ],
    resource_files = glob(["res/**"]),
    manifest = "AndroidManifest.xml",
)
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| deps | Etiket listesi; varsayılan değer  
         | 
| srcs | Etiket listesi; varsayılan değer  
 
 Yukarıda açıklanan dosya türlerinden en az biri olduğu sürece diğer tüm dosyalar yoksayılır. Aksi takdirde hata oluşur. 
         | 
| custom_package | Dize; varsayılan değer  test_classözelliğini de kullanmanız gerekir. | 
| densities | Dize listesi; varsayılan değer  | 
| enable_data_binding | Boole değeri; varsayılan değer  | 
| javacopts | Dize listesi; varsayılan değer  Bu derleyici seçenekleri, genel derleyici seçeneklerinden sonra javac'a iletilir. | 
| jvm_flags | Dize listesi; varsayılan değer  Bir Java ikilisi için sarmalayıcı komut dosyası, CLASSPATH tanımı içerir (tüm bağımlı JAR'ları bulmak için) 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ın adını ve ardından  Bu özelliğin  | 
| manifest | Etiket; varsayılan değer  AndroidManifest.xml).
        resource_files veya assets tanımlanmışsa ya da test edilen kitaplıkların manifest dosyalarından herhangi birindeminSdkVersionetiketi varsa tanımlanmalıdır. | 
| manifest_values | Sözlük: Dize -> Dize; varsayılan değer  applicationId,versionCode,versionName,minSdkVersion,targetSdkVersionvemaxSdkVersion, manifest ve uses-sdk etiketlerinin
        ilgili özelliklerini de geçersiz kılar.packageNameyoksayılır ve belirtilmişseapplicationId'den, belirtilmemişse manifestteki paketten ayarlanır.
        manifest_values kullanmak için kuralda manifest olması gerekmez. | 
| nocompress_extensions | Dize listesi; varsayılan değer  | 
| plugins | Etiket listesi; varsayılan değer  java_plugin, bu kural her oluşturulduğunda çalıştırılır. Kitaplıklar,exported_pluginskullanan bağımlılıklardan da eklentileri devralabilir. Eklenti tarafından oluşturulan kaynaklar, bu kuralın ortaya çıkan JAR'ına dahil edilir. | 
| resource_configuration_filters | Dize listesi; varsayılan değer  | 
| resource_jars | Etiket listesi; varsayılan değer  | 
| resource_strip_prefix | Dize; varsayılan değer  
            Belirtilirse bu yol öneki,  | 
| runtime_deps | Etiket listesi; varsayılan değer  depsgibi bunlar da çalışma zamanı sınıf yolunda görünür ancak bunlardan farklı olarak derleme zamanı sınıf yolunda görünmez. Yalnızca çalışma zamanında gereken bağımlılıklar burada listelenmelidir. Bağımlılık analizi araçları, hemruntime_depshem dedepsiçinde görünen hedefleri yoksaymalıdır. | 
| stamp | Tam sayı; varsayılan değer  
 Damgalı ikili dosyalar, bağımlılıkları değişmediği sürece yeniden oluşturulmaz. | 
| test_class | Dize; varsayılan değer  
        Bu özellik, bu test tarafından çalıştırılacak bir Java sınıfının adını belirtir. Bu ayarın yapılması nadiren gerekir. Bu bağımsız değişken atlanırsa bu  | 
| use_launcher | Boole değeri; varsayılan değer  Bu özellik yanlış olarak ayarlanırsa bu hedef için launcher özelliği ve ilgili  | 
android_device
Kural kaynağını görüntülemeandroid_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 özelliklerle yapılandırılmış bir Android emülatörü oluşturur. Bu emülatör, bazel run komutuyla veya oluşturulan komut dosyasını doğrudan çalıştırarak başlatılabilir. Kendi kurallarınızı tanımlamak yerine mevcut android_device kurallarını kullanmanız önerilir.
Bu kural, bazel test ve blaze run için --run_under işaretiyle uygun bir hedeftir. Bir emülatör başlatır, test edilen/çalıştırılan hedefi emülatöre kopyalar ve uygun şekilde test eder veya çalıştırır.
android_device Temel system_image X86 tabanlıysa ve en fazla I686 CPU mimarisi için optimize edilmişse KVM görüntüleri oluşturmayı destekler. KVM'yi kullanmak için android_device kuralına  tags = ['requires-kvm']  ekleyin.
Örtülü çıkış hedefleri
- name_images/userdata.dat: Emülatörü başlatmak için resim dosyaları ve anlık görüntüler içerir.
- name_images/emulator-meta-data.pb: Emülatöre aktarılıp yeniden başlatılması için gerekli olan seri hale getirilmiş bilgileri içerir.
Örnekler
Aşağıdaki örnekte android_device'ın 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 şunları 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ıç senaryosu oluşturur. bazel run :nexus_s -- --action=start komutunu çalıştırarak emülatörü yerel olarak başlatabilirsiniz. Komut dosyası aşağıdaki işaretleri kullanıma sunar:
- --adb_port: adb'nin kullanıma açılacağı bağlantı noktası. Emülatöre adb komutları göndermek istiyorsanız adb connect komutunu bu bağlantı noktasına gönderebilirsiniz.
- --emulator_port: Emülatörün telnet yönetim konsolunun gösterileceği bağlantı noktası.
- --enable_display: Doğruysa emülatörü ekranla başlatır (varsayılan olarak yanlıştır).
- --action: Başlatma veya sonlandırma.
- --apks_to_install: Emülatöre yüklenecek APK'ların listesi.
Bağımsız değişkenler
| Özellikler | |
|---|---|
| name | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| cache | Tam sayı; zorunluEmülatörün önbellek bölümünün megabayt cinsinden boyutu. Bunun minimum değeri 16 megabayttır. | 
| default_properties | Etiket; varsayılan değer  | 
| horizontal_resolution | Tam sayı; zorunluEmüle edilecek yatay ekran çözünürlüğü (piksel). Minimum değer 240'tır. | 
| platform_apks | Etiket listesi; varsayılan değer  | 
| ram | Tam sayı; zorunluCihaz için emüle edilecek RAM miktarı (megabayt cinsinden). Bu ayar, cihazda yüklü belirli bir uygulama için değil, cihazın tamamı için geçerlidir. Minimum değer 64 megabayttır. | 
| screen_density | Tam sayı; zorunluEmüle edilen ekranın inç başına piksel cinsinden yoğunluğu. Bunun minimum değeri 30 ppi'dir. | 
| system_image | Etiket: zorunluAşağıdaki dosyaları içeren bir dosya grubu: 
 | 
| vertical_resolution | Tam sayı; zorunluEmüle edilecek dikey ekran çözünürlüğü (piksel). Minimum değer 240'tır. | 
| vm_heap | Tam sayı; zorunluAndroid'in her işlem için kullanacağı sanal makine yığınının megabayt cinsinden boyutu. Minimum değer 16 megabayttır. | 
android_ndk_repository
Kural kaynağını görüntülemeandroid_ndk_repository(name, api_level, path, repo_mapping)
Android hedeflerinin yerel kodla oluşturulmasını desteklemek için Bazel'i Android NDK kullanacak şekilde yapılandırır.
android_ndk_repository öğesinin bu uygulamasının Starlark'taki bir uygulamayla değiştirildiğini unutmayın. 25 ve sonraki sürümler de dahil olmak üzere NDK'nın gelecekteki sürümleri için destek, android_ndk_repository'nın Starlark sürümünde uygulanacaktır. Starlark sürümü için rules_android_ndk bölümüne bakın.
Android için derleme yapmanın, WORKSPACE dosyanızda bir android_sdk_repository kuralı gerektirdiğini unutmayın.
Daha fazla bilgi için Android NDK'yı Bazel ile kullanma hakkındaki tam dokümanı okuyun.
Örnekler
android_ndk_repository(
    name = "androidndk",
)
Yukarıdaki örnek, Android NDK'nizi $ANDROID_NDK_HOME konumunda bulur ve desteklediği en yüksek API düzeyini algılar.
android_ndk_repository(
    name = "androidndk",
    path = "./android-ndk-r20",
    api_level = 24,
)
Yukarıdaki örnekte, çalışma alanınızın ./android-ndk-r20 bölümünde bulunan Android NDK kullanılır. JNI kodunuzu derlerken API düzeyi 24 kitaplıklarını kullanır.
cpufeatures
Android NDK, bir cihazın CPU'sunu çalışma zamanında algılamak için kullanılabilecek cpufeatures kitaplığını içerir. Aşağıdaki örnekte, Bazel ile cpufeatures'ın nasıl kullanılacağı gösterilmektedir.
# 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 | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| api_level | Tamsayı; yapılandırılamaz; varsayılan değer  | 
| path | Dize; yapılandırılamaz; varsayılan değer  $ANDROID_NDK_HOMEortam değişkeni ayarlanmalıdır.Android NDK'yı Android Developers sitesinden indirebilirsiniz. | 
| repo_mapping | Sözlük: Dize -> Dize; varsayılan değer  Örneğin,  | 
android_sdk_repository
Kural kaynağını görüntülemeandroid_sdk_repository(name, api_level, build_tools_version, path, repo_mapping)
Android hedeflerinin oluşturulmasını desteklemek için Bazel'i yerel bir Android SDK'sını kullanacak şekilde yapılandırır.
Örnekler
Bazel için bir Android SDK'sı ayarlamak üzere yapmanız gereken minimum işlem,WORKSPACE dosyanıza "androidsdk" adlı bir android_sdk_repository kuralı yerleştirmek ve $ANDROID_HOME ortam değişkenini Android SDK'nızın yoluna ayarlamaktır. Bazel, varsayılan olarak Android SDK'ya yüklenen en yüksek Android API düzeyini ve derleme araçları sürümünü kullanır.
android_sdk_repository(
    name = "androidsdk",
)
Yeniden üretilebilir derlemeler sağlamak için path, api_level ve build_tools_version özellikleri belirli değerlere ayarlanabilir. Android SDK'da belirtilen API düzeyi veya derleme araçları sürümü yüklü değilse derleme başarısız olur.
android_sdk_repository(
    name = "androidsdk",
    path = "./sdk",
    api_level = 19,
    build_tools_version = "25.0.0",
)
Yukarıdaki örnekte, Android SDK'ya giden çalışma alanına göreli bir yolun kullanımı da gösterilmektedir. Bu, Android SDK'sı Bazel çalışma alanınızın bir parçasıysa (ör. sürüm kontrolüne dahil edilmişse) kullanışlıdır.
Destek Kitaplıkları
Destek kitaplıkları, Android SDK Yöneticisi'nde "Android Support Repository" (Android Destek Deposu) olarak sunulur.
Bu, yerel bir Maven deposu olarak paketlenmiş, Support ve AppCompat kitaplıkları gibi yaygın Android kitaplıklarının sürümlendirilmiş bir kümesidir. android_sdk_repository, android_binary ve android_library hedeflerinin bağımlılıklarında kullanılabilecek bu kitaplıkların her biri için Bazel hedefleri oluşturur.
Oluşturulan hedeflerin adları, Android Destek Deposu'ndaki kitaplıkların Maven koordinatlarından türetilir ve @androidsdk//${group}:${artifact}-${version} olarak biçimlendirilir.
Aşağıdaki örnekte, bir android_library öğesinin v7 appcompat kitaplığının 25.0.0 sürümüne nasıl bağlı olabileceği gösterilmektedir.
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 | Ad; zorunlu Bu hedef için benzersiz bir ad. | 
| api_level | Tamsayı; yapılandırılamaz; varsayılan değer  Belirli bir derleme için kullanılan API düzeyi,  
 | 
| build_tools_version | Dize; yapılandırılamaz; varsayılan değer  Bazel için derleme araçlarının 30.0.0 veya sonraki bir sürümü gerekir. | 
| path | Dize; yapılandırılamaz; varsayılan değer  $ANDROID_HOMEortam değişkeni ayarlanmalıdır.Android SDK'sı Android Developers sitesinden indirilebilir. | 
| repo_mapping | Sözlük: Dize -> Dize; varsayılan değer  Örneğin,  |