前の数記事で 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 設定ファイル内の設定ブロックで、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"
//単体テスト時に使用するRunnerを設定
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
//テストアプリのパッケージ名を設定
testApplicationId "com.manu.androidgradleproject.test"
//指定された署名ファイルを使用して設定
signingConfig signingConfigs.release
}
署名情報の設定#
アプリの署名情報を設定する利点は、アプリが悪意のある改ざんを防ぐことです。署名はアプリの唯一性を保証し、同じ署名を使用した後続のアップグレードパッケージのみが正常にインストールできます。署名ファイルを作成した後、設定を行わなければ、パッケージ化するたびに署名ファイルのパスワードやエイリアスなどを指定する必要があります。一般的にアプリ開発時には、デバッグとリリースモードで異なる署名ファイルを設定します。
第一歩:署名証明書ファイルを作成し、以下の図のように関連情報を入力します:
第二歩:signConfigs 設定ブロックを使用して、作成した署名証明書ファイルの関連情報を設定します:
//署名ファイル設定
signingConfigs {
release{
//署名証明書ファイル
storeFile file("project.jks")
//署名証明書ファイルのパスワード
storePassword "111111"
//署名証明書のキーエイリアス
keyAlias "project_jks"
//署名証明書内のキーのパスワード
keyPassword "111111"
}
debug{
//デフォルトでは、デバッグモードの署名はAndroid SDKによって自動生成されたデバッグ署名ファイル証明書に設定されています
//デフォルトの署名ファイルの場所:.android/debug.keystore
}
}
第三歩:署名ファイル設定を使用し、android {} 内の defaultConfig {} で上記の設定を使用します。具体的には以下のようになります:
defaultConfig {
//...
//指定された署名ファイル設定を使用
signingConfig signingConfigs.release
}
defaultConfig {} 内で設定するだけでなく、デバッグまたはリリースモードで異なる署名ファイルを設定することも可能で、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
//proguard混乱を有効にするかどうかを設定
minifyEnabled true
//プログラム内のメソッド数が65535を超えた場合、自動的に複数のdexに分割する機能を有効にするかどうかを設定
multiDexEnabled true
//proguard混乱に使用する設定ファイルを設定。複数の混乱ファイルを設定できます
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
//未使用のリソースを自動的にクリーンアップするかどうかを設定。デフォルトはfalse
shrinkResources true
//zipalign最適化を有効にする(下記参照)
zipAlignEnabled true
}
}
buildTypes {} に新しいビルドタイプを追加すると、Android Gradle は自動的に SourceSet を生成します。Apk のビルドは対応する SourceSet から行われます。新しいビルドタイプの名前は既存のものと同じであってはならず、src ディレクトリ内に新しく作成したビルドタイプのソースコードディレクトリやリソースファイルを追加する必要があります。ビルドタイプを作成すると、Android Gradle プラグインはそのタイプのプロジェクトをビルドするための対応する assemble タスクも生成します。たとえば、release に対応するのは assembleRelease であり、このタスクを実行すると対応する Apk が生成されます。
混乱の使用#
コードの混乱は、逆コンパイルの難易度を高めるために主に使用されます。正式版アプリをリリースする際には、一般的にコードの混乱を行います。実際、Android SDK にはデフォルトの混乱ファイルが提供されています。具体的な場所は Android SDK の tools/proguard の下です。中には、混乱させてはいけない最も基本的な内容が含まれています。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 開発におけるいくつかの一般的な設定項目について紹介しました。役に立ったと感じたら、フォローやいいねでサポートしてください。