- Bitriseドキュメントへようこそ!
- ワークフローとパイプライン
- ワークフロー
- Androidアプリのワークフローレシピ
Androidアプリのワークフローレシピ
iOSアプリ専用のワークフローレシピ。これらの一部はクロスプラットフォームアプリのiOSバージョンに使用できますが、その他はネイティブiOSアプリ専用です。
ワークフローレシピは、一般的なワークフロータスク用の既製のソリューションを提供します。
ここでは、iOSアプリ専用のワークフローレシピを見つけることができます。これらの一部は、クロスプラットフォームアプリのiOSバージョンにも使用できますが、ネイティブiOSアプリ専用のものもあります。
(Android) Visual Studio App Center にデプロイする
説明
Visual Studio App Center を介してアプリをビルドし、テスターに配布します。
前提条件
-
既存のVisual Studio アプリ センターアプリが登録されているプロジェクト。
-
API トークンをひみつあなたの Bitrise アプリに
APPCENTER_API_TOKEN
. -
リリース ビルドをデプロイする場合は、Bitrise でコード署名を設定して、リリース キーで APK をビルドおよび署名することを忘れないでください。
指示
-
追加Android ビルド次の入力をステップ実行して設定します。
-
ビルドタイプ: これをAPK.
-
変異体: リリース、デバッグ、またはカスタム バリアントのいずれかを使用します (ある場合)。
-
-
リリース バリアントをビルドする場合は、Android サイン ステップ.
署名されていないデバッグ バリアントをデプロイする予定がある場合は、これをスキップできます。
-
追加AppCenter iOS デプロイ次の入力をステップ実行して設定します。
-
APIトークン:
$APPCENTER_API_TOKEN
-
所有者名: 例えば、
弊社
. -
アプリ名: 例えば、
マイアプリ
. App Center CLI を使用してアプリ名を取得します。これは、Visual Studio App Center Web サイトに表示されるものとは異なる場合があるためです。
-
ステップのドキュメントまたはワークフロー エディターで他のオプションを確認してください。
bitrise.yml
- android-build@1: inputs: - variant: release - build_type: apk - sign-apk@1: {} - appcenter-deploy-android@2: inputs: - owner_name: my-company - app_name: my-app - app_path: "$BITRISE_APK_PATH" - api_token: "$APPCENTER_API_TOKEN"
(Android) Firebase App Distribution へのデプロイ
説明
Firebase App Distribution を介してアプリをビルドし、テスターに配布します。この例では APK をビルドしてデプロイしますが、代わりに AAB を配布するようにワークフローを微調整できます。
前提条件
-
正確なパッケージ名が登録されている既存の Firebase プロジェクト。見る Firebase のドキュメント詳細については。
-
を実行して、Firebase からトークンを取得します。
firebase login:ci
ローカル。見る Firebase CLI ドキュメント 詳細については。 -
このトークンをひみつあなたの Bitrise アプリに
FIREBASE_TOKEN
. -
プロジェクトから Firebase アプリ ID を取得します。 一般設定 ページに移動し、この値を入力としてFirebase アプリの配布ステップ。
-
リリース ビルドをデプロイする場合は、忘れないでください Bitrise でコード署名をセットアップするにはAPK をビルドしてリリース キーで署名します。
指示
-
追加Android ビルド次の入力をステップ実行して設定します。
-
ビルドタイプ:これをAPK.
-
変異体: 使用する
リリース
、デバッグ
、またはカスタム バリアントの 1 つ (存在する場合)。
-
-
リリース バリアントをビルドする場合は、人造人間のサインステップ。
署名されていないデバッグ バリアントをデプロイする予定がある場合は、これをスキップできます。
-
追加 Firebase アプリの配布 次の入力をステップ実行して設定します。
-
Firebase トークン: 前に定義した秘密の環境変数を使用します。
$FIREBASE_TOKEN
. -
アプリのパス: これは、前の手順でビルドおよび署名された APK を指す必要があります。デフォルトでは、次の場所にあります
$BITRISE_DEPLOY_DIR/app-release-bitrise-signed.apk
ですが、正確なファイル名はプロジェクトの構成によって異なる場合があります。 -
Firebase アプリ ID: プロジェクトから Firebase アプリ ID を取得します。 一般設定 ページに移動し、この値を入力としてFirebase アプリの配布ステップ。
-
オプション: ステップ入力でテスト グループまたは個々のテスターを定義できます。
-
bitrise.yml
- android-build@1: inputs: - variant: release - build_type: apk - sign-apk@1: {} - firebase-app-distribution@0: inputs: - firebase_token: $FIREBASE_TOKEN - app_path: $BITRISE_DEPLOY_DIR/app-release-bitrise-signed.apk - app: your_app_id_from_firebase - testers: [email protected] # optional - groups: qa-team #optional
(Android) Google Play へのデプロイ (内部、アルファ版、ベータ版、製品版)
説明
Android アプリを構築し、内部、アルファ、ベータ、または製品トラックとして Google Play にアップロードします。
前提条件
-
アン Android キーストア ファイルがアップロードされました ビットライズへ。
-
Google Play API アクセス 設定されています。
指示
-
(オプション) Android の versionCode と versionName を変更する ステップ。入力変数を設定します。
-
build.gradle ファイルへのパス: デフォルト値は
$PROJECT_LOCATION/$MODULE/build.gradle
ほとんどの場合、変更する必要はありません。 -
新しいバージョン名: 例えば、
1.0.1
-
新バージョンコード: 例えば、
42
.
-
-
追加 Android ビルド 次の入力をステップ実行して設定します。
-
ビルドタイプ:これを aab.
-
変異体: 使用する
リリース
、デバッグ
、またはカスタム バリアントの 1 つ (存在する場合)。 -
モジュール: 例えば
$MODULE
.
-
-
追加 人造人間のサイン ステップ。
-
追加 Google Play デプロイ 次の入力をステップ実行して設定します。
-
サービス アカウントの JSON キー ファイル パス:
$BITRISEIO_SERVICE_ACCOUNT_JSON_KEY_URL
. -
パッケージ名: 例えば、
com.your.package.name
. -
追跡:いずれかを選択 内部、 アルファ、 ベータ、 また 製造.
-
状態: リリースのステータス。詳細については、 Google API リファレンス.おすすめされた
下書き
生産用と完了
内部テストビルド用。 -
ワークフロー エディターまたはステップのドキュメントで、その他のオプションを確認してください。
Google Play へのデプロイがエラー 403 で失敗する
Google Play ステップへのデプロイが次のエラーで失敗する場合があります。
"error: Failed to perform edit insert call, error: googleapi: Error 403: The caller does not have permission, forbidden"
考えられる解決策については、 ナレッジベースの記事.
-
bitrise.yml
- change-android-versioncode-and-versionname@1: inputs: - new_version_name: 1.0.1 - new_version_code: '42' - build_gradle_path: "$PROJECT_LOCATION/$MODULE/build.gradle" - android-build@1: inputs: - project_location: "$PROJECT_LOCATION" - module: "$MODULE" - build_type: aab - variant: release - sign-apk@1: {} - google-play-deploy@3: inputs: - service_account_json_key_path: "$BITRISEIO_SERVICE_ACCOUNT_JSON_KEY_URL" - package_name: io.bitrise.sample.android - status: completed - track: internal
(Android) Bitrise.io にデプロイ
説明
アプリをビルドし、Bitrise.io を介してテスターに配布します 船のアドオン.船での展開
指示
リリース ビルドのデプロイ
リリース ビルドをデプロイする場合は、Bitrise でコード署名を設定して、リリース キーで APK をビルドおよび署名することを忘れないでください。
-
追加Android ビルド次の入力をステップ実行して設定します。
-
ビルドタイプ:これをAPK.
-
変異体: 使用する
リリース
、デバッグ
、またはカスタム バリアントの 1 つ (存在する場合)。
-
-
リリース バリアントをビルドする場合は、人造人間のサインステップ。
署名されていないデバッグ バリアントをデプロイする予定がある場合は、これをスキップできます。
-
を追加Bitrise.io へのデプロイ - アプリ、ログ、アーティファクトステップ。
bitrise.yml
- android-build@1: inputs: - variant: release - build_type: apk - sign-apk@1: {} - deploy-to-bitrise-io@2: {}
(Android) CI ワークフローの例
説明
Android アプリのメイン ブランチでのコミットのワークフローの例。ワークフローには次が含まれます。
-
今後のプル リクエスト ビルドのためにキャッシュを埋める。
bitrise.yml
--- format_version: '11' default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: android workflows: ci: steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - git-clone@6: {} - cache-pull@2: {} - android-unit-test@1: inputs: - project_location: $PROJECT_LOCATION - variant: $VARIANT - android-build-for-ui-testing@0: inputs: - variant: $VARIANT - module: $MODULE - virtual-device-testing-for-android@1: inputs: - test_type: instrumentation - android-lint@0: inputs: - variant: "$VARIANT" - android-build@1: inputs: - project_location: "$PROJECT_LOCATION" - module: "$MODULE" - variant: "$VARIANT" - deploy-to-bitrise-io@2: {} - slack@3: inputs: - channel: "#build-notifications" - webhook_url: "$SLACK_WEBHOOK" - cache-push@2: {} app: envs: - opts: is_expand: false PROJECT_LOCATION: "." - opts: is_expand: false MODULE: app - VARIANT: debug opts: is_expand: false trigger_map: - push_branch: main workflow: ci
(Android) 毎晩のワークフローの例
説明
Android アプリのナイトリー ビルドのワークフローの例。ワークフローには次が含まれます。
-
デフォルトでは、アプリはビルド番号を取得します (
$BITRISE_BUILD_NUMBER
) をバージョン コードとして使用します。
bitrise.yml
--- format_version: '11' default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: android workflows: nightly: steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - git-clone@6: {} - cache-pull@2: {} - change-android-versioncode-and-versionname@1: inputs: - new_version_name: 1.0.0 - build_gradle_path: "$PROJECT_LOCATION/$MODULE/build.gradle" - android-build@1: inputs: - project_location: "$PROJECT_LOCATION" - module: "$MODULE" - build_type: aab - variant: release - sign-apk@1: {} - google-play-deploy@3: inputs: - service_account_json_key_path: "$BITRISEIO_SERVICE_ACCOUNT_JSON_KEY_URL" - package_name: io.bitrise.sample.android - status: completed - track: internal - android-build@1: inputs: - project_location: "$PROJECT_LOCATION" - module: "$MODULE" - variant: "$VARIANT" - deploy-to-bitrise-io@2: {} - create-install-page-qr-code@1: {} - slack@3: inputs: - channel: "#build-notifications" - thumb_url: "$BITRISE_PUBLIC_INSTALL_PAGE_QR_CODE_IMAGE_URL" - webhook_url: "$SLACK_WEBHOOK" - cache-push@2: {} app: envs: - opts: is_expand: false PROJECT_LOCATION: "." - opts: is_expand: false MODULE: app - VARIANT: debug opts: is_expand: false
(Android) プルリクエストのワークフロー例
説明
Android プル リクエスト検証のワークフローの例。ワークフローには次が含まれます。
-
プル リクエストのワークフローをトリガーします。
bitrise.yml
--- format_version: '11' default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: android workflows: pull-request: steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - git-clone@6: {} - cache-pull@2: {} - android-unit-test@1: inputs: - project_location: $PROJECT_LOCATION - variant: $VARIANT - android-build-for-ui-testing@0: inputs: - variant: $VARIANT - module: $MODULE - virtual-device-testing-for-android@1: inputs: - test_type: instrumentation - android-lint@0: inputs: - variant: "$VARIANT" - android-build@1: inputs: - project_location: "$PROJECT_LOCATION" - module: "$MODULE" - variant: "$VARIANT" - deploy-to-bitrise-io@2: {} - create-install-page-qr-code@1: {} - comment-on-github-pull-request@0: inputs: - body: |- ![QR code]($BITRISE_PUBLIC_INSTALL_PAGE_QR_CODE_IMAGE_URL) $BITRISE_PUBLIC_INSTALL_PAGE_URL - personal_access_token: "$GITHUB_ACCESS_TOKEN" - cache-push@2: {} app: envs: - opts: is_expand: false PROJECT_LOCATION: "." - opts: is_expand: false MODULE: app - VARIANT: debug opts: is_expand: false trigger_map: - pull_request_source_branch: "*" workflow: pull-request
(Android) 仮想デバイスでインストルメンテーション テストを実行する
説明
仮想デバイスでインストルメンテーション (Espresso など) または robo/gameloop テストを実行します。 当社のデバイス テスト ソリューション Firebase Test Lab に基づいています。結果のログ、ビデオ、スクリーンショットは Bitrise で見つけることができます。
指示
-
を追加UI テスト用の Android ビルドステップ。入力変数を設定します。
-
プロジェクトの場所: デフォルトを使用
$BITRISE_SOURCE_DIR
また$PROJECT_LOCATION
.特定のパスを設定できますが、通常は自動的に公開される環境変数が最適なオプションです。 -
変異体: 使用
$VARIANT
環境変数、またはバリアントを手動で指定します。 -
モジュール: 1 つを指定するか、空白のままにして、すべてのモジュールでテストを実行します。
-
-
を追加[ベータ] Android の仮想デバイス テストステップ。入力変数を設定します。
-
試験の種類:計装(またロボまたゲームループ)
-
(オプション) テストデバイス(デフォルト:NexusLowRes,24,en,縦)。
-
-
を追加Bitrise.io にデプロイする テスト結果をテストレポート アドオン。
仮想デバイスでインストルメンテーション テストを実行する際の潜在的な問題
仮想デバイスでインストルメンテーション テストを実行しているときに、予期しない問題が発生する場合があります。ナレッジベースでいくつかの例と考えられる解決策を見つけることができます。
bitrise.yml
- android-build-for-ui-testing@0: inputs: - variant: $VARIANT - module: $MODULE - virtual-device-testing-for-android@1: inputs: - test_type: instrumentation - deploy-to-bitrise-io@2: {}
(Android) リリースワークフローの例
説明
アプリのリリース ドラフトを Google Play にアップロードするワークフローの例。ワークフローには次が含まれます。
-
に基づくバージョン名の設定ビルドに渡される環境変数(
$VERSION_NAME
)。
bitrise.yml
--- format_version: '11' default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git project_type: android workflows: release: steps: - activate-ssh-key@4: run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}' - git-clone@6: {} - change-android-versioncode-and-versionname@1: inputs: - new_version_name: "$VERSION_NAME" - new_version_code: "$BITRISE_BUILD_NUMBER" - build_gradle_path: "$PROJECT_LOCATION/$MODULE/build.gradle" - android-build@1: inputs: - project_location: "$PROJECT_LOCATION" - module: "$MODULE" - build_type: aab - variant: release - sign-apk@1: {} - google-play-deploy@3: inputs: - service_account_json_key_path: "$BITRISEIO_SERVICE_ACCOUNT_JSON_KEY_URL" - package_name: io.bitrise.sample.android - status: draft - track: production app: envs: - opts: is_expand: false PROJECT_LOCATION: "." - opts: is_expand: false MODULE: app - VARIANT: debug opts: is_expand: false
(Android) Lint の実行
説明
Android プロジェクトで Lint を実行します。
指示
-
追加Android リントステップ。入力変数を設定します。
-
プロジェクトの場所: デフォルトを使用
$BITRISE_SOURCE_DIR
また$PROJECT_LOCATION
.特定のパスを設定できますが、自動的に公開されます 環境変数 通常、最適なオプションです。
-
変異体: 使用
$VARIANT
環境変数、またはバリアントを手動で指定します。 -
モジュール: 1 つを指定するか、空白のままにして、すべてのモジュールで lint を実行します。
-
-
を追加Bitrise.io にデプロイするステップ。このステップでは、lint レポートをビルド アーティファクト.
bitrise.yml
- android-lint@0: inputs: - variant: $VARIANT - deploy-to-bitrise-io@2: {}
Gradle ビルド プロファイリングを有効にする
説明
すべての Gradle ビルドのパフォーマンス レポートを生成して保存し、ビルド速度の問題を特定したり、異なるビルドを比較したりします。
指示
Bitrise ワークフローで使用する Android または Gradle ステップに関係なく、Gradle の追加のコマンド ライン引数を定義するオプションがあります。追加- プロフィール
関連する入力変数に追加して、Gradle タスクのパフォーマンス レポートを生成します。以下の例では、引数を Android 単体テスト ステップ。
-
追加 Android 単体テスト ワークフローに進み、必要な入力変数を設定します。
-
プロジェクトの場所:
$PROJECT_LOCATION
. -
モジュール:
$MODULE
. -
変異体:
$VARIANT
. -
引数:
--profile2
.
-
-
を追加 脚本 ワークフローの最後まで進み、レポート ファイルを圧縮し、ZIP ファイルをデプロイ ディレクトリにコピーします。
#!/usr/bin/env bash # fail if any commands fails set -e # debug log set -x zip -r $BITRISE_DEPLOY_DIR/gradle-profile.zip $PROJECT_LOCATION/build/reports/profile
Gradle は HTML レポートを
build/reports/profile/
、そのため、そのフォルダー内のすべてのファイル (HTML、CSS、および JS ファイル) を取得して圧縮し、ZIP アーカイブを次の場所に移動する必要があります。$BITRISE_DEPLOY_DIR
.このフォルダー内のファイルは、ビルド ページの アーティファクト タブ。 -
アプリの手動ビルドをトリガーします。
-
ダウンロードして解凍します
gradle-profile.zip
ファイルを開き、ブラウザで HTML レポートを開きます。 -
に行く アーティファクト タブを開き、レポートでビルドのさまざまな側面を確認します。
-
の概要タブには、タスクの実行以外に費やされた時間が表示されます。
-
のタスクの実行タブには、実行時間でソートされたすべてのタスクが一覧表示されます。
-
キャッシュされたタスクは次のようにマークされます最新の.これは、Bitrise キャッシュの手順複数のビルドのレポートを比較します。キャッシング
Gradle の最適化のアイデアについては、 Googleのこの記事をチェックしてください.
ビルド ログにのみタスクの実行時間を表示したい場合は、ビルド時間トラッカープラグイン。
-
bitrise.yml
- android-unit-test@1: inputs: - project_location: $PROJECT_LOCATION - module: $MODULE - arguments: "--profile" - variant: $VARIANT - script@1: title: Collect Gradle profile report inputs: - content: |- #!/usr/bin/env bash # fail if any commands fails set -e # debug log set -x zip -r $BITRISE_DEPLOY_DIR/gradle-profile.zip $PROJECT_LOCATION/build/reports/profile - deploy-to-bitrise-io@1: {}
(Android) 単体テストを実行する
説明
単体テストを実行する (例えば、testDebugUnitTest
) Android アプリの場合。
指示
-
を追加Android 単体テストステップ。
入力変数を設定します。
-
プロジェクトの場所: デフォルトを使用
$BITRISE_SOURCE_DIR
また$PROJECT_LOCATION
.特定のパスを設定できますが、通常は自動的に公開される環境変数が最適なオプションです。 -
変異体: 使用
$VARIANT
環境変数、またはバリアントを手動で指定します。 -
モジュール: 1 つを指定するか、空白のままにして、すべてのモジュールでテストを実行します。
-
-
を追加Bitrise.io にデプロイするテスト結果をテストレポート アドオン。
bitrise.yml
- android-unit-test@1: inputs: - project_location: $PROJECT_LOCATION - variant: $VARIANT - deploy-to-bitrise-io@2: {}
(Android) エミュレーターを使用してテストを実行する
説明
ローカル エミュレーター インスタンスであらゆる種類のテスト (ユニット、インストルメンテーション) を実行します。
指示
-
を追加AVDマネージャーステップ。エミュレーターをカスタマイズするには、ステップ構成を参照してください。
AVD Manager ステップの使用
の AVDマネージャー バックグラウンドで開始されます。これには数分かかる場合があります。そのため、ワークフローの最初に AVD Manager ステップを追加することをお勧めします ( SSH キー (RSA 秘密キー) をアクティブ化 ステップと Gitクローン ステップ) ビルドを高速化します。
-
を追加 UI テスト用の Android ビルド ステップし、必要な入力を構成します。
-
を追加Androidエミュレータを待ちます ステップ。
-
を追加 Android 計装テストステップし、必要な入力を構成します。
-
を追加テスト結果をテスト レポート アドオンにエクスポートする次の入力でステップします。
-
テストの名前:
エミュレータ テスト
. -
テスト結果のベース パス:
$BITRISE_SOURCE_DIR/app/build/outputs/androidTest-results
.プロジェクト内のモジュール名に基づいてパスを調整することをお勧めします。
-
テスト結果検索パターン:
*.xml
.
-
-
を追加Bitrise.io にデプロイするテスト結果をテストレポート アドオン。
bitrise.yml
- avd-manager@1: {} - android-build-for-ui-testing@0: inputs: - module: "$ANDROID_TESTING_MODULE" - variant: "$ANDROID_V_DEBUG" - wait-for-android-emulator@1: - android-instrumented-test@0: {} - custom-test-results-export@0: inputs: - search_pattern: "*.xml" - base_path: $BITRISE_SOURCE_DIR/app/build/outputs/androidTest-results - test_name: Emulator tests - deploy-to-bitrise-io@2: