ツールバーの [ Build > Generate Signed APK... ] から
ウィザードに従えば生成できます。
しかし、CUI から Signed APK を生成したいことがあるかと思います。
また、そのプロジェクトを public リポジトリで管理している場合に
署名に関する設定を公開しないようにするにはどうすればいいのかという問題もあります。
以下に示す方法では、証明に関する設定を gradle.properties に記述し、
.gitignore で gradle.properties を公開しないようにすることで
署名に関する情報を秘密にしておくおことが可能です。
Generate signed APK has been named by program · bc41551 · wada811/Android-Material-Design-Colors
apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.0.1" defaultConfig { applicationId "at.wada811.android.material.design.colors.sample" minSdkVersion 8 targetSdkVersion 21 versionCode 2 versionName "1.1.0" } signingConfigs { release } buildTypes { release { runProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } } ... if (project.hasProperty('storeFile')) { android.signingConfigs.release.storeFile = new File(System.getenv('HOME'), storeFile) } if (project.hasProperty('storePassword')) { android.signingConfigs.release.storePassword = storePassword } if (project.hasProperty('keyAlias')) { android.signingConfigs.release.keyAlias = keyAlias } if (project.hasProperty('keyPassword')) { android.signingConfigs.release.keyPassword = keyPassword }
storeFile=/path/to/your.keystore storePassword=keystorePass keyAlias=appAlias keyPassword=appPass
gradle.properties
new File(System.getenv('HOME'), storeFile) がキモで、
file(storeFile) にするとプロジェクトの相対パスで認識されるから
プロジェクトに keystore を含めるか、無理やり相対パスからたどるかになるんだけど
前者はプロジェクトごとに keystore を入れなければならなくて一元管理できないし、
後者は環境によってパスが変わりうるから微妙になります。
その点、new File(System.getenv('HOME'), storeFile) は $HOME からの絶対パスになるので統一しやすいです。