- 公開日:2015年09月18日
- 最終更新日:2016年01月31日
記事概要
androidのアプリ開発をする前の準備の手順をまとめました。その3の続きです。
環境
- Android Studio1.3.0
- OS X Yosemite
プロジェクトビルド
続いてアプリのビルド設定を行います。
途中参加のプロジェクトとかでよく見かけるビルドパターンに、
Android StudioやEclipseでapkファイルを出力する
というものがあります。
この手法は
ビルドのアンチパターン
です。今後はやめましょう。この手法を採用している現場に限って、keystoreを無くしただの、パスワードが分からないだのと無用なトラブルを巻き起こしている確率が高いと思います。
Android Studioから取り入れられたgradleを使ったビルド手法は、先人のノウハウが詰まっています。
gradleを使えば、簡単にandroidアプリのビルドを自動化できます。この作業を後回しにすると、設定をやらなくなるので、
最初に自動化してください
build.gradleの設定
では、まずapp/build.gradleの設定を行ないます。
Android Studio1.3.0のデフォルトで作成されたapp/build.gradleは以下のように記述されています。
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
apkファイルの作成を自動化するには、signingConfigsをbuildTypesの上に追記します。
// 追加 signingConfigs { debug { } release { } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
signingConfigsの中にdebugとreleaseを追加しました。
debugは「開発」apkでreleaseは「公開」apkになります。
続いて、buildTypesにもdebugを追加します。
signingConfigs { debug { } release { } } buildTypes { // 追加 debug { } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
これで準備OKです。では、signingConfigsでapkファイル自動出力の設定をしていきましょう。
signingConfigs
signingConfigsを利用すると、証明書の設定がおこなえます。この設定により、gradleコマンドを実行するだけで様々な種類のapkを作成、出力できるようになります。
adnroidアプリの開発でよくありがちなのが、
「keystoreのパスワードがわかない」
「keystoreファイルが見つからない」
等のヒューマンミス(管理不備)です。
最悪のケースだと、
「keystoreを作成した外注先のエンジニアが辞めていた」
なんてこともあります(経験済)。
そういったケースを防ぐためにも、gradleでビルドの設定をしておくべきです。
keystoreの設定
apk作成時に利用するkeystoreを設定しましょう。以下のように記載します。
signingConfigs { debug { // 追加 storeFile file("debug.keystore") } release { // 追加 storeFile file("release.keystore") } } buildTypes { debug { } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
debug(開発)用のdebug.keystoreはandroid導入時にインストールされたkeystoreを利用しましょう。では、debug.keystoreファイルをプロジェクトフォルダ配下に移してみましょう。
// macの場合、debug.keystoreファイルはここの配下にある cd ~/.android/ // ファイルリストの確認 ls -l // debug用のkeystore debug.keystore // debug.keystoreをコピー cp -a debug.keystore {プロジェクトフォルダ}
debug(開発)用のkeystoreの準備は完了です。続いて、公開(release)用のkeystoreをプロジェクトフォルダ配下に配置します。当然ゼロベースで作るアプリに本番keystoreはないので、Android Studioで作成します。
【Generate Signed APK】を選択します。
【Create new ...】を選択します。
keystoreの出力場所を選択します。プロジェクトフォルダの配下を指定します。
File name:はrelease.keystoreにしておきます。(どんな名称でも平気です)
keystoreに必要なデータを入力していきます。入力したpasswordは忘れないようにメモするか、キャプチャを撮っておきます。
入力したら、先へ進みます。全ての手続きが終わりrelease.apkが作成されるとPOPで知らせてくれます。
これで本番用のkeystoreが完成しました。
では、今入力した情報をapp/build.gradleのreleaseに記載します。
まずは、app/build.gradleにパスワードを設定します。
signingConfigs { debug { storeFile file("debug.keystore") // 追加 storePassword "android" } release { storeFile file("release.keystore") // 追加 storePassword "xxxxxxx" } } buildTypes { debug { } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
storePasswordにパスワードを記述します。debug.keystoreはデフォルトのままで問題ないと思います。
keyAliasの設定をします。
signingConfigs { debug { storeFile file("debug.keystore") storePassword "android" // 追加 keyAlias "androiddebugkey" } release { storeFile file("release.keystore") storePassword "xxxxxxx" // 追加 keyAlias "xxxxxxx" } } buildTypes { debug { } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
Aliasで入力したAliasを設定します。
最後にkeyPasswordの設定をします。
signingConfigs { debug { storeFile file("debug.keystore") storePassword "android" keyAlias "androiddebugkey" // 追加 keyPassword "android" } release { storeFile file("release.keystore") storePassword "xxxxxxx" keyAlias "xxxxxxx" // 追加 keyPassword "android" } } buildTypes { debug { } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
証明書の設定は完了です。最後に上記で設定した証明を利用する設定をbuildTypesに記述します。
signingConfigs { debug { storeFile file("debug.keystore") storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } release { storeFile file("release.keystore") storePassword "xxxxxxx" keyAlias "xxxxxxx" keyPassword "android" } } buildTypes { debug { // 追加 signingConfig signingConfigs.debug } release { // 追加 signingConfig signingConfigs.release minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
signingConfigsで設定した証明書の内容が反映されるようになりました。
最後にapkを出力できるようにzipAlignEnabledをtrueにして記載します。
signingConfigs { debug { storeFile file("debug.keystore") storePassword "android" keyAlias "androiddebugkey" keyPassword "android" } release { storeFile file("release.keystore") storePassword "xxxxxxx" keyAlias "xxxxxxx" keyPassword "android" } } buildTypes { debug { signingConfig signingConfigs.debug // 追加 zipAlignEnabled true } release { signingConfig signingConfigs.release // 追加 zipAlignEnabled true minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
apkファイルを出力
コマンドプロンプトを開いてコマンドを叩きます。
// プロジェクトフォルダに移動 cd {projecrFolder} // gradleを実行 ./gradlew clean build
apkファイルが出力されたことを確認します。出力場所は、{プロジェクトフォルダ}/app/build/outputs/apkです。
apkが作成されていることが確認できました。
これでターミナルのコマンドからや、jenkins等のツールを利用してapkが作成できるようになりました。
gitで管理すればkeystoreやパスワード等の紛失も心配もありません。
でも、これだけではまだ不十分です。次はgradleで環境ごとのパッケージ設定をします。
続きます。
- Androidアプリ開発の準備をテンプレート化した - その1 Android Studioを最新にする -
- Androidアプリ開発の準備をテンプレート化した - その2 プロジェクトの作成 -
- Androidアプリ開発の準備をテンプレート化した - その3 .gitignoreの作成とgitの登録 -
- Androidアプリ開発の準備をテンプレート化した - その5 開発ビルドと本番ビルドの設定 環境ごとにパッケージを切り替える -
0 件のコメント:
コメントを投稿