9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BitriseでAndroidアプリをビルドする

Last updated at Posted at 2018-12-06

この記事なに

  • BitriseでAndroidアプリをビルドする際の超基本的な手順をざっくりと記述しています
  • ほぼ公式ドキュメントに記載されている内容です

##Bitriseとは
Bitrise
BitriseのGitHub
GUIで直感的にビルドフローを作成できるOSSなCIサービスです。

プランは4つあり、月あたりのビルド回数や利用メンバー数、並列処理数などに違いがあるようです。Hobbyという無料プランも用意されているので、趣味の開発でもBitriseでCI廻せます:dizzy:

Bitriseでは基本的にGUIでビルドフローを作っていきます。また、フローを作っていくと最終的にはymlファイルが生成されるため、慣れている方はこのymlを直接編集することも可能です。

Bitriseのアカウント作成

Sign-up画面でユーザー名、パスワードを設定します。
途中で所属企業の情報を聞かれますが、空欄のままでも問題ありませんでした。
sign-up.png
アカウントができました:tada:

BitriseとGitHubを連携

上記の画面下部のAdd First Appボタンをクリックするとアプリの登録・設定画面に進みます。Bitriseでは1つのレポジトリをアプリ(App)として登録・管理していくイメージになります。

連携先としてGitHubを選択しレポジトリを選択、ビルド対象ブランチ名など必要な情報を入力していきます:muscle:
ここでprivateレポジトリを選択した場合にはSSH Keyの設定画面が出てきますが、焦らずこのページを参照して自動or手動でKeyを設定します:thumbsup:

レポジトリがCloneされてチェックが行われ、
validation.png

Androidプロジェクトと認識されます:sparkles:
done_validation.png

ビルドしたいModule、Variantを入力していきます:muscle:
また、デフォルトでそうなっていると思いますが、The root directory of an Android projectはカレントパス(.)を入力すると吉です。
setting_configuration.png

最後にWebHookを設定するか聞かれますが、ここでは一旦スキップします。
最初のビルドをスタートします:star:
first_build.png

ビルド中の画面
building.png

ビルドが終わるまで待ちます。
ここでビルドが失敗しても気にせずに先に進みます:punch:

Workflowの作成

BitriseのWorkflowを作っていきます。先程のビルド画面の↓のボタンを押すとWorkflow編集画面に飛べます。
open_workflow_editor.png

画面左側にActivate SSH key (RSA private key)から始まるボックスが縦に並んでいるかと思います。この1つ1つのボックスがBitriseではStepと呼ばれ、Stepの一連の流れがWorkflowとなります。

StepはDrag&Dropで順番を入れ替えることが可能で、Step間の+ボタンから新たなStepを追加することができます。

デフォルトで用意されているAndroid Unit Testの下にAndroid Build,Sign APKを追加してみました↓
steps.png

そしてWorkflowは1つのレポジトリに複数作成することができます。
例えば、PullRequest時、デイリービルド時、リリース時...などにそれぞれ対応するWorkflowをつくることが可能です。

↓このボタンから新しいWorkflowを追加できて......
add_workflow.png

こんな感じで入力してDoneすると、primary-Workflowがコピーされてstaging-Workflowが作られます:sparkles:
plus_workflow.png

環境変数について

ステップの前に環境変数について簡単に説明します。

Env vars

通常の環境変数です。デフォルトで$MODULEなどが定義されている他、追加・削除・編集が可能です。
特定のWorkflow内でのみ参照可能な変数も作ることができます。

Secrets

編集方法、使用方法はEnv varsと変わりませんが、Secretsのvalueは暗号化されて保存され、bitrise.ymlにも記述されません。従って、センシティブな情報を定義するのにピッタリです。
Slack連携URLやkeystoreのパスワードなどはEnv varsではなくSecretsで管理するのが良いでしょう

ステップ

Androidのビルドに関するStepを簡単に見ていきます。

Install missing Android SDK components

名前の通りですが、SDKをインストールするステップになります。

NDKのインストール

NDKが必要なアプリの場合にはNDKバージョンにビルドに必要なNDKバージョンを書けばOKです。
ndk_version.png
参考

Android Build

ビルドステップになります。
ステップ設定パネル下部のOptionsから、apkファイルの格納先を指定できます。
apk_dir.png
Androidライブラリをビルドする場合にはapkではなくaarへのパスを指定しましょう。

Sign APK

ビルドアップステップで作成したapkに署名をするステップです。
署名の方法には複数の種類があるので、お好みの方法で実装してください。

Variantごとに異なる署名をしたい

実は、上記の方法ではアップロードできるkeystoreファイルは1つだけです。
debug、staging、releaseで異なる署名をすることができません困った:mask:

そんな時にはGENERIC FILE STORAGEを使います。
なおこの方法ではSign APKステップは不要です。

keystoreを複数アップロードし、前述したSecretsにそれぞれのkeystoreでの署名に必要なkeystore passwordkey aliaskey passwordを登録します。
keystore_info.png
さらに公式ドキュメントを参考にして、File DownloaderBUILD APKステップの前に追加し、keystoreファイルを任意の場所にダウンロードしておきます。

Android Studioでbuild.gradleを開き、signing情報としてSecretsを参照するようにします。

build.gradle
    signingConfigs {
        staging {
            storeFile file(System.getenv('HOME') + '/keystore/staging.keystore')
            keyPassword System.getenv('STAGING_KEYSTORE_PASS')
            keyAlias System.getenv('STAGING_KEY_ALIAS')
            keyPassword System.getenv('STAGING_KEY_PASS')
        }
    }

これでAndroid Buildステップにて署名されたapkが生成されます:sparkles:

Triggerの設定

作ったWorkflowを実施するタイミングを設定します。
TriggerはWorkflow編集画面の「Trigger」タブから設定できます:point_up:

setting_trigger.png ↑のような設定で、任意のブランチにPullRequestが作成されたタイミングでpullrequest-workflowが実行されるようになります:star2:

まとめ

  • Bitriseではビルドステップを視覚的に作れるので、CIに不慣れでもあまりハマることなくビルドまで持っていける
  • 公式ドキュメントが充実しています
  • どんどんCI廻していきましょう!
9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?