前のいくつかの記事で、Gradle の基礎知識と Gradle プラグインに関する知識を学びました。Gradle とそのプラグインに関する知識については、以下の記事を先に読んでください。
- Gradle 系列之初识 Gradle
- Gradle 之 Groovy 基础
- Gradle 系列之构建脚本基础
- Gradle 系列之 Gradle 任务
- Gradle 系列之 Gradle 插件
- Gradle 系列之 Java Gradle 插件
- Gradle 系列之 Android Gradle 插件
前の記事 では、Android Gradle プラグインの設定方法について説明しました。最初に Android の build.gradle 設定ファイルに触れたとき、私も戸惑っていました。各設定項目の具体的な意味がわからなかったので、この記事では Android 開発での基本的な設定について説明します。もしこのような疑問がある場合、この記事はある程度役に立つと思います。
- デフォルトの設定
- 署名情報の設定
- アプリケーションのビルドタイプ
- 混合使用の有効化
- zipalign 最適化の有効化
デフォルトの設定#
defaultConfig は、Android Gradle 設定ファイルの 1 つの設定ブロックであり、defaultConfig のタイプは ProductFlavor です。カスタムの ProductFlavor がない場合、デフォルトの ProductFlavor を使用して Android プロジェクトを構成します。以下では、defaultConfig のいくつかの設定プロパティについて説明します。
//デフォルトのProductFlavor設定ブロック
defaultConfig {
//アプリのパッケージ名を設定
applicationId "com.manu.base"
//アプリの最小サポートAndroidバージョン、次の2つのminSdkVersionの設定効果は同じです
minSdkVersion 19
<!--minSdkVersion 'KitKat'-->
//アプリが基于するAndroid SDKの設定
targetSdkVersion 26
//アプリの内部バージョン番号、通常はバージョンアップに使用されます
versionCode 1
//アプリの外部バージョン番号、ユーザーが表示するバージョン番号です
versionName "1.0"
//テスト時に使用するランナーを設定
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//テストアプリのパッケージ名を設定
testApplicationId "com.manu.androidgradleproject.test"
//指定された署名ファイルの設定を使用
signingConfig signingConfigs.release
}
署名情報の設定#
アプリの署名情報を設定することの利点は、アプリが悪意のある変更を受けないようにすることです。署名により、アプリの一意性が保証され、同じ署名を使用する後続のアップグレードパッケージのみが正常にインストールできます。署名ファイルを作成した後、パッケージング時に署名ファイルのパスワード、エイリアスなどを毎回指定する必要がないように、通常、アプリの開発時にはデバッグモードとリリースモードで異なる署名ファイルを設定します。
ステップ 1:署名証明書ファイルを作成します。以下の図のように関連する情報を入力します。
ステップ 2:signConfigs ブロックを使用して、作成した署名証明書ファイルの関連情報を設定します。
//署名ファイルの設定
signingConfigs {
release{
//署名証明書ファイル
storeFile file("project.jks")
//署名証明書ファイルのパスワード
storePassword "111111"
//署名証明書のエイリアス
keyAlias "project_jks"
//署名証明書内のキーパスワード
keyPassword "111111"
}
debug{
//デフォルトでは、デバッグモードの署名はAndroid SDKによって自動生成されるデバッグ署名ファイルに設定されています
//デフォルトの署名ファイルの場所:.android/debug.keystore
}
}
ステップ 3:署名ファイルの設定を使用するために、android {} の defaultConfig {} 内で上記の設定を使用します。具体的な例は以下の通りです。
defaultConfig {
//...
//指定された署名ファイルの設定を使用
signingConfig signingConfigs.release
}
defaultConfig {} で設定するだけでなく、debug または release モードごとに異なる署名ファイルを個別に設定することもできます。buildTypes {} で個別に設定できます。具体的な例は以下の通りです。
buildTypes {
release {
signingConfig signingConfigs.release
//...
}
debug{
signingConfig signingConfigs.debug
//...
}
//...
}
アプリのビルドタイプの設定#
Android Gradle には、デバッグとリリースの 2 つのビルドタイプが組み込まれています。前者は通常デバッグ状態で使用され、後者は通常公式リリース状態で使用されます。他のビルドタイプを追加する方法は、buildTypes {} に追加するだけです。buildTypes はドメインオブジェクトを受け入れるため、追加するビルドタイプはすべて BuildType です。したがって、BuildType の関連するプロパティを使用してビルドタイプを設定できます。以下は、BuildType の一般的な設定プロパティのいくつかです。
buildTypes {
release {
//...
}
debug{
//署名の設定
signingConfig signingConfigs.debug
//このビルドタイプでのapplicationIdのサフィックスを設定します。生成されるApkのパッケージ名は、applicationIdにサフィックスが追加されます
applicationIdSuffix '.debug'
//デバッグ用のApkを生成するかどうかを設定します
denbuggable true
//jni(c/c++)コードのデバッグ用Apkを生成するかどうかを設定します
jniDebuggable true
//プロガードの混淆を有効にするかどうかを設定します
minifyEnabled true
//プログラム内のメソッド数が65535を超える場合、自動的に複数のdexに分割する機能を有効にするかどうかを設定します
multiDexEnabled true
//プロガードの混淆に使用する設定ファイルを設定します。複数の混淆ファイルを設定できます
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
//未使用のリソースを自動的にクリーンアップするかどうかを設定します。デフォルトはfalseです
shrinkResources true
//zipalign最適化を有効にする(後述)
zipAlignEnabled true
}
}
buildTypes {} に新しいビルドタイプを追加した後、Android Gradle は自動的に SourceSet を生成し、Apk の構築は対応する SourceSet から行われます。新しいビルドタイプの名前が既存のものと重複しないように注意してください。新しいビルドタイプを作成すると同時に、Android Gradle プラグインは対応する assemble タスクを生成して、そのタイプのプロジェクトをビルドするために使用します。たとえば、release には assembleRelease が対応しており、このタスクを実行すると対応する Apk が生成されます。
混合使用の有効化#
コードの混合使用は、逆コンパイルの難易度を高めるためのものであり、正式版のアプリをリリースする際には通常、コードの混合使用を行います。実際、Android SDK にはデフォルトの混合使用ファイルがすでに用意されており、Android SDK の tools/progrard ディレクトリにあります。内容は、基本的な混合使用できないコンテンツです。次の 2 つのデフォルトの混合使用ファイルがあります。
//最適化なし
proguard-android.txt
//最適化済み
proguard-android-optimize.txt
では、どのように混合使用を使用するのでしょうか。buildTypes {} の対応するビルドタイプの下で、minifyEnabled を true に設定して混合使用を有効にし、具体的な混合使用ファイルを設定します。具体的な例は以下の通りです。
buildTypes {
release {
//混合使用を有効にする
minifyEnabled false
//混合使用ファイルを設定
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
//...
}
zipalign 最適化の有効化#
zipalign は、apk ファイルを整理して最適化するための Android が提供するツールであり、システムとアプリの実行効率を向上させ、apk 内のリソースの読み取りを高速化し、メモリの使用量を減らすことができます。zipalign 最適化を有効にするには、buildTypes {} の対応するビルドタイプで zipalign 最適化を有効にするだけです。具体的な例は以下の通りです。
buildTypes {
release {
//zipalign最適化を有効にする
zipAlignEnabled true
//''
}
//...
}
この記事では、Android 開発でよく使用されるいくつかの設定項目について説明しました。役に立った場合は、フォローやいいねをしてサポートしてください。