生活を良くします - 怠惰なプログラミング

生活を良くします-怠惰なプログラミング

外資系でエンジニアをやっています。便利なサービスや商品、プログラミングで作ったものなどを紹介していきます

Android Studio : debugビルドとReleaseビルドの切替、releaseビルドの追加方法、署名付きapk作成方法

Android Studio

はじめに

Androidに詳しい人が周りにいないのでネットで調べながらの作業になってしまいました。

日本のプログラマーの4人に1人が使っているTeratailやおなじみのstackoverflowとかをたくさん使いましたが、もっと調べる内容をちゃんと明確にすべきだったと反省しています。

わからないところがわからない状態になりつつあるので無料の質問サイトはありがたいです。英語ができればstackoverflow、英語が苦手で日本語が好きならばteratailくらいでしょうか。



デバッグとリリース

https://developer.android.com/studio/run/index.htmldeveloper.android.com
アプリ開発の多くの場合、Android Studioではdebugとreleaseという二つのビルドタイプを設定していると思います。

Android Studioはデフォルトでdebugモードが適用されているので、別の開発環境からAndroid Studioに変えた時にどこで変更すれば良いのか迷いました。

忘れないように書いておこうと思います。

変更する場所

f:id:what_a_day:20161210225550j:plain

このselect build variantを選択すると、次のようなwindowがAndroid Studio内に現れます。Build Variantが今はreleaseとなっているのでこれをdebugにすると、debugモードになります。

debugをreleaseに変えるとそれでreleaseモードになります。

f:id:what_a_day:20161210231250p:plain

Releaseモードの追加方法

build.gradleの設定

buildtypeでデバッグとリリース時の設定を行います。この設定によってデバッグ時とリリース時でアプリの内容を変えることができます。

デバッグしやすいような機能をつけておいたり、Releaseモードで公開してはまずい情報をproguardで難読化させるなどします。

build.gradle

android {
    /*androidの基本設定*/
    buildTypes {
       debug {
            /*デバッグ時の設定*/
        }
        release {
            /*リリース時の設定*/
     }            
}


<プロジェクト名>-release.apkの作成

アプリを世の中に公開するためには、~.release.apkを作成する必要があります。また、GooglePlayなどで公開するためにはそこに署名も入れなければいけません。

案外、やり方を忘れかけるのでメモしておきます。

「Generate Signed APK...」を選択し、署名入りのapkを作成します。
f:id:what_a_day:20161210233527j:plain



すでにkeystoreにファイルを用意してあるという人はそのまま「Choose existing」を、ない人は「Create New」で新しく作ってください。
f:id:what_a_day:20161210234340j:plain



keystoreフォルダを作るときは自分のappのすぐに下に置いておくと便利です。release.jksで指定しました。

パスワードやAlias、Certificateは埋めておきましょう。また、後から要求されたりするのでパスワードは忘れないようにしておいてください。
f:id:what_a_day:20161210234737j:plain


これで無事に完成です。~release.apkが出力されます。
おそらく「build→outputs→apk」のフォルダに出力されるはずです。

想定されるエラー

Buildしたり、Runさせようとするとこういうエラーが出てくるときがあります。

The apk for your currently selected variant (ProjectName-release-unsigned.apk) is not signed. Please specify a signing configuration for this variant
f:id:what_a_day:20161210235745j:plain


これです。つまり、うまく署名できてないというエラーですね。

対応方法

先ほどのエラー画面の下にある「Fix」を選択します。すると画面が切り替わるので画像に従って入力していってください。

+ を押すと、自動的に「config」が追加されます。あとは先ほどのパスワードやAliasを打ち込んでいきます。

まだ、「OK」は押さないでください。
f:id:what_a_day:20161211000545j:plain


次にBuildTypesのところに移動します。
同じように + を選択してreleaseの設定を行います。

「sigining config」で「config」を表示させます。これでOKを押すと無事にエラーが消えているはずです。
f:id:what_a_day:20161211000908j:plain

対応法はこちらを参考にしました。
stackoverflow.com

まとめ

Androidバグシリーズ第一弾でした。ちなみに想像以上に自分はバグに当たっているのでこれからも大量のバグと、その解決策を考えることになりそうです。

ドキュメントを読んだり、サイトを見たりして解決策を探していますが、なかなか辛い作業でした。