ルール
- <ph type="x-smartling-placeholder"></ph> android_binary
- <ph type="x-smartling-placeholder"></ph> aar_import
- <ph type="x-smartling-placeholder"></ph> android_library
- <ph type="x-smartling-placeholder"></ph> android_instrumentation_test
- <ph type="x-smartling-placeholder"></ph> android_local_test
- <ph type="x-smartling-placeholder"></ph> android_device
- <ph type="x-smartling-placeholder"></ph> android_ndk_repository
- <ph type="x-smartling-placeholder"></ph> android_sdk_repository
android_binary
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示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 アプリ パッケージ ファイル(.apk)を生成します。
暗黙的な出力ターゲット
name.apk
: Android アプリ 署名付きのパッケージ ファイルです。 <ph type="x-smartling-placeholder"></ph> zipaligned しているため、アプリの開発とデバッグに使用できます。 デバッグキーで署名されたアプリはリリースできません。name_unsigned.apk
: ファイルの署名なしバージョン リリースキーで署名できる上記のファイルを 公開されています。name_deploy.jar
: ファイルを含む Java アーカイブ ターゲットの推移的クロージングdeploy jar には、Deployment によって見つかる このターゲットのランタイム クラスパスを検索したクラスローダー サポートします
name_proguard.jar
: 次を含む Java アーカイブ で ProGuard を実行した結果をname_deploy.jar
。 この出力は、次の場合にのみ生成されます。 proguard_specs 属性が あります。name_proguard.map
: マッピング ファイルの結果。name_deploy.jar
で ProGuard を実行する。 この出力は、次の場合にのみ生成されます。 proguard_specs 属性が 指定され、 proguard_generate_mapping または shrink_resources が設定されている。
例
Android のルールの例は、Android アプリの examples/android
ディレクトリにあります。
Bazel ソースツリー。
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
deps
|
ラベルのリスト。デフォルトは android_library 、
java_library (android 制約あり)と
cc_library のラッピングまたは .so ネイティブ ライブラリの作成
Android ターゲット プラットフォーム。
|
srcs
|
ラベルのリスト。デフォルトは
|
assets
|
ラベルのリスト。デフォルトは glob です。
assets ディレクトリ。また、他のルール(特定の文字列を生成する
他のパッケージにエクスポートされたファイルなど、それらのファイルはすべて
対応するパッケージの assets_dir ディレクトリ。
|
assets_dir
|
String;デフォルトは assets 内のファイルへのパスを指定する文字列。
assets と assets_dir のペアは、パッケージ化された記述を示します。
両方の属性を指定するか、いずれも指定しないかのどちらかです。
|
crunch_png
|
ブール値デフォルトは |
custom_package
|
String;デフォルトは |
debug_key
|
ラベル:デフォルトは 警告: 本番環境のキーは使用しないでください。使用するのは、 厳格に保護され、ソースツリーに保持されません。 |
debug_signing_keys
|
ラベルのリスト。デフォルトは 警告: 本番環境のキーは使用しないでください。使用するのは、 厳格に保護され、ソースツリーに保持されません。 |
debug_signing_lineage_file
|
ラベル:デフォルトは 警告: 本番環境のキーは使用しないでください。使用するのは、 厳格に保護され、ソースツリーに保持されません。 |
densities
|
文字列のリスト。デフォルトは |
dex_shards
|
整数デフォルトは 最終的なアプリでは、シャードごとに少なくとも 1 つの dex が生成されます。このため、 リリース バイナリでは、この値を 1 より大きい値に設定することはおすすめしません。 |
dexopts
|
文字列のリスト。デフォルトは |
enable_data_binding
|
ブール値デフォルトは データ バインディングを使用して Android アプリを作成するには、次のことも行う必要があります。
|
incremental_dexing
|
整数設定不可デフォルトは |
instruments
|
ラベル:デフォルトは 計測する この属性が設定されている場合、この |
javacopts
|
文字列のリスト。デフォルトは これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。 |
key_rotation_min_sdk
|
String;デフォルトは |
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" と併用する必要があります。
|
main_dex_list_opts
|
文字列のリスト。デフォルトは |
main_dex_proguard_specs
|
ラベルのリスト。デフォルトは multidex 属性が legacy に設定されている場合にのみ許可されます。
|
manifest
|
ラベル:必須 Android マニフェスト ファイルの名前(通常はAndroidManifest.xml )。
resource_files または assets が定義されている場合は定義する必要があります。
|
manifest_values
|
辞書: 文字列 ->String;デフォルトは
マニフェスト内の
|
multidex
|
String;デフォルトは 可能な値: <ph type="x-smartling-placeholder">
|
nocompress_extensions
|
文字列のリスト。デフォルトは |
package_id
|
整数デフォルトは 詳しくは、AAPT2 の |
plugins
|
ラベルのリスト。デフォルトは java_plugin ごと
プラグイン属性が実行時に
作成されます。生成するリソース
プラグインは terraform.tfvars.json、
ターゲットです。
|
proguard_apply_dictionary
|
ラベル:デフォルトは |
proguard_apply_mapping
|
ラベル:デフォルトは proguard_generate_mapping によって生成されたマッピング ファイル。
新しいビルドに同じマッピングを適用するために再利用されます。
|
proguard_generate_mapping
|
ブール値設定不可デフォルトは proguard_specs が次の場合にのみ生成されます。
あります。このファイルには、元のバージョンと
難読化されたクラス、メソッド、フィールド名。
警告: この属性を使用すると、ProGuard は
仕様には、 |
proguard_specs
|
ラベルのリスト。デフォルトは |
resource_configuration_filters
|
文字列のリスト。デフォルトは en_XA および/または ar_XB 架空言語
|
resource_files
|
ラベルのリスト。デフォルトは glob です。
res ディレクトリ。
(genrules から)生成されたファイルは、次によって参照できます: ここでもラベルを付けます。唯一の制限は 生成された出力は同じ「 res 」の下に存在する必要があります他のディレクトリと同様に、
リソース ファイルが含まれます。
|
shrink_resources
|
整数デフォルトは manifest 属性や resource_files 属性など)があり、ProGuard が必要です。
Gradle リソース圧縮ツールとほぼ同じように動作する
(https://developer.android.com/studio/build/shrink-code.html#shrink-resources).
主な違い:
name_files/resource_shrinker.log
実行された分析と削除の詳細が示されます。
可能な値:
|
aar_import
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示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)
このルールでは、.aar
ファイルを次のライブラリとして使用できます。
android_library
と
android_binary
個のルール。
例
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"], )
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
aar
|
ラベル:必須 このターゲットに依存する Android ターゲットに提供する.aar ファイル。
|
exports
|
ラベルのリスト。デフォルトは |
srcjar
|
ラベル:デフォルトは |
android_library
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示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)
このルールは、ソースを .jar
ファイルにコンパイルしてアーカイブします。
Android ランタイム ライブラリ android.jar
が暗黙的に配置される
コンパイル クラスパスを指定します。
暗黙的な出力ターゲット
libname.jar
: Java アーカイブ。libname-src.jar
: ソース(「ソース JAR」)を入力します。name.aar
: Android の「aar」Java アーカイブを含むバンドル リソースを管理できます。推移的クロージャは含まれていない。
例
Android のルールの例は、Android アプリの examples/android
ディレクトリにあります。
Bazel ソースツリー。
以下の例は、
idl_import_root
の設定方法
//java/bazel/helloandroid/BUILD
に以下を含めます。
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"], )
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
deps
|
ラベルのリスト。デフォルトは android_library 、
java_library (android 制約あり)と
cc_library のラップまたは .so ネイティブ ライブラリの生成
実装することをおすすめします
|
srcs
|
ラベルのリスト。デフォルトは .java ファイルまたは .srcjar ファイルのリスト。
ターゲットが作成されます。
|
assets
|
ラベルのリスト。デフォルトは glob です。
assets ディレクトリ。また、他のルール(特定の文字列を生成する
他のパッケージにエクスポートされたファイルなど、それらのファイルはすべて
対応するパッケージの assets_dir ディレクトリ。
|
assets_dir
|
String;デフォルトは assets 内のファイルへのパスを指定する文字列。
assets と assets_dir のペアは、パッケージ化された記述を示します。
両方の属性を指定するか、いずれも指定しないかのどちらかです。
|
custom_package
|
String;デフォルトは |
enable_data_binding
|
ブール値デフォルトは データ バインディングを使用して Android アプリを作成するには、次のことも行う必要があります。
|
exported_plugins
|
ラベルのリスト。デフォルトは java_plugin のリスト(アノテーション
このライブラリに直接依存するライブラリにエクスポートできます。
指定した |
exports
|
ラベルのリスト。デフォルトは exports 属性で到達したすべてのルールの閉鎖
ルールの直接的な依存関係と見なされます。この制約は、
exports でターゲットを設定します。
|
exports_manifest
|
整数デフォルトは android_binary ターゲットにエクスポートするかどうか
依存関係があります。uses-permissions 属性はエクスポートされません。
|
idl_import_root
|
String;デフォルトは このパスは、IDL ソースを処理するときにインポート ルートとして使用されます。 このライブラリに依存します
<ph type="x-smartling-placeholder"></ph>をご覧ください。 例をご覧ください。 |
idl_parcelables
|
ラベルのリスト。デフォルトは android_library ターゲットを直接指定します
Java には変換されません。ただし、Java には変換されません。
定義できます。
直接対応する これらのファイルは、aidl コンパイラが見つけられるよう適切に配置する必要があります。 idl_import_root の説明をご覧ください。 をご覧ください。 |
idl_preprocessed
|
ラベルのリスト。デフォルトは android_library ターゲットを直接指定します
Java には変換されません。ただし、Java には変換されません。
定義できます。
直接対応する |
idl_srcs
|
ラベルのリスト。デフォルトは srcs の内容に置き換えます。
これらのファイルは、任意のプラットフォームで
このライブラリに依存する これらのファイルは、aidl コンパイラが見つけられるよう適切に配置する必要があります。 idl_import_root の説明をご覧ください。 をご覧ください。 |
javacopts
|
文字列のリスト。デフォルトは これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。 |
manifest
|
ラベル:デフォルトは AndroidManifest.xml )。
resource_files または assets が定義されている場合は定義する必要があります。
|
neverlink
|
ブール値デフォルトは neverlink とマークされたルールの出力は、次では使用されません
.apk の作成。ライブラリを提供する場合に便利
実行時の状態にします。
|
plugins
|
ラベルのリスト。デフォルトは java_plugin ごと
プラグイン属性が実行時に
作成されます。生成するリソース
プラグインは terraform.tfvars.json、
ターゲットです。
|
proguard_specs
|
ラベルのリスト。デフォルトは android_binary ターゲットに追加されます。
ここに含めるファイルには、べき等ルール(-dontnote、-dontwarn、
-keep で始まるルールを定義します。その他のオプションは
android_binary の proguard_specs: tautological 以外のマージを保証します。
|
resource_files
|
ラベルのリスト。デフォルトは glob です。
res ディレクトリ。
(genrules から)生成されたファイルは、次によって参照できます: ここでもラベルを付けます。唯一の制限は 生成された出力は同じ「 res 」の下に存在する必要があります他のディレクトリと同様に、
リソース ファイルが含まれます。
|
android_instrumentation_test
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示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)
android_instrumentation_test
ルールは、Android インストルメンテーション テストを実行します。動作
エミュレータを起動し、テスト対象のアプリケーションとテスト アプリケーションをインストールする
テスト パッケージで定義されたテストを実行します。
test_app 属性は、
テストを含む android_binary
。次にこのandroid_binary
が
テスト対象の android_binary
アプリを、
instruments 属性。
例
# 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", )
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
support_apks
|
ラベルのリスト。デフォルトは |
target_device
|
ラベル:必須 テストを実行する android_device。 すでに実行中のエミュレータまたは実機でテストを実行するには、次のコマンドを使用します。
これらの引数を使用します。
|
test_app
|
ラベル:必須 テストクラスを含む android_binary ターゲット。android_binary ターゲットには、テストに使用するターゲットを指定する必要があります
その instruments 属性。
|
android_local_test
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示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)
このルールは、android_library
ルールをローカルで単体テストするためのものです
。
Android Robolectric テスト フレームワークと連携して動作します。
詳細については、Android Robolectric サイトをご覧ください。
Robolectric テストの作成に関するコースです。
暗黙的な出力ターゲット
name.jar
: テストの Java アーカイブ。name-src.jar
: ソースを含むアーカイブ (「ソース JAR」)。name_deploy.jar
: 適切な Java デプロイ アーカイブ (明示的にリクエストされた場合にのみビルドされます)。
例
android_local_test
で Robolectric を使用するには、以下を追加します。
Robolectric の
リポジトリを WORKSPACE
ファイルに追加します。
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
ルールが取得されます。
この場合、各 android_local_test
ルールは、
@robolectric//bazel:robolectric
。下記の例をご覧ください。
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", )
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
deps
|
ラベルのリスト。デフォルトは
|
srcs
|
ラベルのリスト。デフォルトは
他のファイルはすべて無視され、 上記のファイル形式のファイルが少なくとも 1 つある。それ以外の場合 エラーが発生します。
|
custom_package
|
String;デフォルトは test_class も使用する必要があります。
|
densities
|
文字列のリスト。デフォルトは |
enable_data_binding
|
ブール値デフォルトは |
javacopts
|
文字列のリスト。デフォルトは これらのコンパイラ オプションは、グローバル コンパイラ オプションの後に javac に渡されます。 |
jvm_flags
|
文字列のリスト。デフォルトは Java バイナリのラッパー スクリプトに CLASSPATH 定義が含まれている
(依存する jar をすべて見つけるため)、適切な Java インタープリタを呼び出します。
ラッパー スクリプトによって生成されたコマンドラインには、
メインクラスの後に この属性は |
manifest
|
ラベル:デフォルトは AndroidManifest.xml )。
resource_files または assets が定義されている場合、または
テスト対象のライブラリには minSdkVersion タグが含まれています。
|
manifest_values
|
辞書: 文字列 ->String;デフォルトは applicationId さん、versionCode さん、versionName さん、
minSdkVersion 、targetSdkVersion 、
maxSdkVersion は、対応する属性もオーバーライドします
マニフェスト ファイルと
use-sdk タグを使用します。packageName は無視され、次のいずれかから設定されます
次の場合は applicationId
パッケージを指定または変更できます。
manifest_values を使用するために、ルールにマニフェストは必要ありません。
|
nocompress_extensions
|
文字列のリスト。デフォルトは |
plugins
|
ラベルのリスト。デフォルトは java_plugin が実行されます。
構築します。ライブラリは、使用する依存関係からプラグインを継承し、
exported_plugins 。リソース
生成 AI は、このルールの生成される jar に含められます。
|
resource_configuration_filters
|
文字列のリスト。デフォルトは |
resource_jars
|
ラベルのリスト。デフォルトは |
resource_strip_prefix
|
String;デフォルトは
指定すると、このパス接頭辞が |
runtime_deps
|
ラベルのリスト。デフォルトは deps と同様に、これらはランタイム クラスパスに表示されますが、
コンパイル時のクラスパスではなく、実行時にのみ必要な依存関係は、
表示されます。依存関係分析ツールは、両方に出現するターゲットを無視する
runtime_deps と deps 。
|
stamp
|
整数デフォルトは
スタンプされたバイナリは、依存関係が変更されない限り再ビルドされません。 |
test_class
|
String;デフォルトは
この属性は、実行する Java クラスの名前を指定します。
このテストを実行します。この設定が必要になることはほとんどありません。この引数を省略すると、Java クラスは
対応する名前が、このアプリケーションの |
use_launcher
|
ブール値デフォルトは この属性を false に設定すると、
launcher 属性と関連
|
android_device
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示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)
このルールにより、指定されたデバイスで構成された Android Emulator が作成されます。 仕様。このエミュレータは bazel 実行経由で起動できます 生成されたスクリプトを直接実行することもできます。推奨されるのは、 既存の android_device ルールに基づいて実装することをおすすめします。
このルールは、Bazel テストと Blaze に対する --run_under フラグのターゲットとして あります。エミュレータを起動し、テストまたは実行しているターゲットをエミュレータにコピーします。 必要に応じてテストまたは実行します
android_device
は、基盤となる KVM が
system_image は X86 ベースで、
最大 I686 CPU アーキテクチャ向けに最適化されています。KVM を使用するには、以下を追加します
tags = ['requires-kvm']
を android_device
ルールに追加します。
暗黙的な出力ターゲット
name_images/userdata.dat
: エミュレータを起動するための画像ファイルとスナップショットが含まれていますname_images/emulator-meta-data.pb
: エミュレータに渡すために必要なシリアル化された情報が含まれています。 再起動する必要があります。
例
次の例は、android_device を使用する方法を示しています。
//java/android/helloandroid/BUILD
に含まれる:
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
には以下が含まれます。
ro.product.brand=google ro.product.device=crespo ro.product.manufacturer=samsung ro.product.model=Nexus S ro.product.name=soju
このルールにより、画像と起動スクリプトが生成されます。エミュレータで bazel run :nexus_s -- --action=start を ローカルで実行する必要がありますこのスクリプトは、 次のフラグを指定します。
- --adb_port: adb を公開するポート。adb を発行する場合 これは、adb connect を発行するポートです。 できます。
- --emulator_port: エミュレータの Telnet 管理を公開するポート オンにします。
- --enable_display: true の場合にエミュレータをディスプレイで起動します(デフォルト false に設定します)。
- --action: start または kill のいずれか。
- --apks_to_install: エミュレータにインストールする APK のリスト。
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
cache
|
整数必須 エミュレータのキャッシュ パーティションのサイズ(MB 単位)。 この最小値は 16 MB です。 |
default_properties
|
ラベル:デフォルトは |
horizontal_resolution
|
整数必須 エミュレートする水平方向の画面解像度(ピクセル単位)。 最小値は 240 です。 |
platform_apks
|
ラベルのリスト。デフォルトは |
ram
|
整数必須 デバイスに対してエミュレートする RAM の量(MB)。 デバイスにインストールされている特定のアプリだけでなく、デバイス全体が対象です。「 最小値は 64MB です |
screen_density
|
整数必須 エミュレートされた画面の密度(1 インチあたりのピクセル数)。 最小値は 30 ppi です。 |
system_image
|
ラベル:必須 次のファイルを含むファイル グループ: <ph type="x-smartling-placeholder">
|
vertical_resolution
|
整数必須 エミュレートする垂直画面の解像度(ピクセル単位)。 最小値は 240 です。 |
vm_heap
|
整数必須 Android が各プロセスで使用する仮想マシンヒープのサイズ(MB 単位)。 最小値は 16 MB です。 |
android_ndk_repository
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示android_ndk_repository(name, api_level, path, repo_mapping)
Android NDK を使用してネイティブでの Android ターゲットのビルドをサポートするように Bazel を構成します。 できます。
なお、この android_ndk_repository
の実装は、
Starlark での実装。バージョン 25 以降を含む今後のバージョンの NDK のサポートは、
android_ndk_repository
の Starlark バージョンに実装されています。詳しくは、
rules_android_ndk(Starlark 用)
できます。
なお、Android 向けのビルドでは、android_sdk_repository
ルールも
WORKSPACE
ファイル。
詳しくは、 Android NDK と Bazel の使用に関するドキュメント全文をご覧ください。
例
android_ndk_repository( name = "androidndk", )
上記の例では、$ANDROID_NDK_HOME
から Android NDK を探し、
API レベルを指定します。
android_ndk_repository( name = "androidndk", path = "./android-ndk-r20", api_level = 24, )
上記の例では、ワークスペース内の Android NDK を使用します。
./android-ndk-r20
。JNI のコンパイル時に API レベル 24 のライブラリが使用されます。
できます。
cpufeatures
Android NDK には、 cpufeatures ライブラリ 実行時にデバイスの CPU を検出するために使用できます。次の例は、BigQuery の Bazel による cpufeatures。
# jni.cc #include "ndk/sources/android/cpufeatures/cpu-features.h" ...
# BUILD cc_library( name = "jni", srcs = ["jni.cc"], deps = ["@androidndk//:cpufeatures"], )
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
api_level
|
整数設定不可デフォルトは |
path
|
String;設定不可デフォルトは $ANDROID_NDK_HOME 環境変数を設定する必要があります。
Android NDK は次の場所からダウンロードできます。 Android デベロッパー サイト 。 |
repo_mapping
|
辞書: 文字列 ->String;デフォルトは たとえば、エントリ |
android_sdk_repository
<ph type="x-smartling-placeholder"></ph> ルールのソースを表示android_sdk_repository(name, api_level, build_tools_version, path, repo_mapping)
Android ターゲットのビルドをサポートするローカル Android SDK を使用するように Bazel を構成します。
例
Bazel 用の Android SDK をセットアップするために最低限必要なのは、android_sdk_repository
ルールを設定することです。
「androidsdk」という名前のWORKSPACE
ファイルで $ANDROID_HOME
を
Android SDK のパスに環境変数を設定します。Bazel は最も高い Android API レベルを使用します
Android SDK にデフォルトでインストールされるビルドツールのバージョン。
android_sdk_repository( name = "androidsdk", )
ビルドを再現できるように、path
、api_level
、
build_tools_version
属性は特定の値に設定できます。次の場合、ビルドは失敗します。
指定された API レベルまたはビルドツール バージョンが Android SDK にインストールされていません。
android_sdk_repository( name = "androidsdk", path = "./sdk", api_level = 19, build_tools_version = "25.0.0", )
上記の例では、Android SDK へのワークスペース相対パスも使用しています。これは、 Android SDK が Bazel ワークスペースの一部である場合(例: バージョンにチェックインしている場合)に有用 設定されます。
サポート ライブラリ
サポート ライブラリは、Android SDK Manager で「Android Support Repository」として入手できます。
Support ライブラリや AppCompat ライブラリなど、一般的な Android ライブラリのバージョン管理されたセットです。
ローカルの Maven リポジトリとしてパッケージ化されていますandroid_sdk_repository
が Bazel を生成します
各ライブラリのターゲットを使用でき、依存関係の
android_binary
ターゲットと android_library
ターゲット。
生成されるターゲットの名前は、
Android Support Repository(@androidsdk//${group}:${artifact}-${version}
形式)。
次の例は、android_library
がアプリケーションのバージョン 25.0.0 にどのように依存するかを示しています。
v7 appcompat ライブラリを使用します。
android_library( name = "lib", srcs = glob(["*.java"]), manifest = "AndroidManifest.xml", resource_files = glob(["res/**"]), deps = ["@androidsdk//com.android.support:appcompat-v7-25.0.0"], )
引数
属性 | |
---|---|
name |
名前:必須 このターゲットの一意の名前。 |
api_level
|
整数設定不可デフォルトは 特定のビルドに使用される API レベルは、
|
build_tools_version
|
String;設定不可デフォルトは Bazel には、バージョン 30.0.0 以降のビルドツールが必要です。 |
path
|
String;設定不可デフォルトは $ANDROID_HOME 環境変数を設定する必要があります。
Android SDK は次の場所からダウンロードできます。 Android デベロッパー サイトをご覧ください。 |
repo_mapping
|
辞書: 文字列 ->String;デフォルトは たとえば、エントリ |