と に基づいてアプリに別の名前を付けられるように、gradle ファイルを変更しようとしていFlavor
ますBuild Type
。これまでのところ、 Android Gradle Plugin Docsの手法をFlavor
使用して、ベースの命名を簡潔にすることに成功しています。Manifest Merging
現時点の
これらは、私のホーム画面debug
とrelease
ビルドの両方のアプリケーションの名前です。
Flavor Debug App Name Release App Name
-------- -------------- ----------------
entity_1 App Name App Name
entity_2 App Name App Name
... ... ...
entity_2 App Name App Name
hub Hub Hub
近いけど…
望ましい
Flavor Debug App Name Release App Name
-------- -------------- ----------------
entity_1 App Name - Entity_1_name App Name
entity_2 App Name - Entity_2_name App Name
... ... ...
entity_n App Name - Entity_n_name App Name
hub Hub Hub
debug
これが欲しいので、ホーム画面でどのフレーバーがどれであるかがわかります。ユーザーは自分のデバイスに 1 つしか持っていないので、フレーバーを区別することは気にしませんrelease
(複数持つことは可能かもしれませんが、私は気にしません)。
Gradle の拡張性を考えると、これは可能だと思います。ただし、私は高度な Gradle ユーザーではありません。
では、目的の出力を得るためにコードを簡潔に (可能な限り) 拡張するにはどうすればよいでしょうか?
注: 上記の表はversionNameSuffix
、アプリ名の接尾辞として使用されています。ただし、デバッグ ビルド タイプでのみ使用しているフレーバーを判別できるようにするものであれば何でもかまいません (別の追加変数??)。
非目標
Android/Gradle: App name based on build type *and* product フレーバー
String Resource
への回答のように、ソリューションには興味がありません。純粋な Gradle ベースのソリューションが推奨されます。Manifest Merger
私が現在実装している方法から離れることには興味がありません。https://stackoverflow.com/a/28465883/2333021の答えは、私がすでに行ったことを実装する別の方法であり、デバッグビルドでのみこれを行うことを許可していません(私が見ることができる.そうであれば、それから私に知らせてください)。
コード
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "..."
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
manifestPlaceholders = [ applicationLabel:"App Name"]
}
productFlavors {
entity_1 {
versionNameSuffix ' - Entity_1_name'
applicationIdSuffix 'entity_1'
}
entity_2 {
versionNameSuffix ' - Entity_2_name'
applicationIdSuffix 'entity_2'
}
hub {
versionNameSuffix ' - Hub'
applicationIdSuffix 'hub'
manifestPlaceholders = [ applicationLabel:"Hub" ]
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
マニフェスト
<manifest ...>
<application
...
android:label="${applicationLabel}"
... >
アップデート
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
ext {
APP_NAME = "App Name"
HUB_NAME = "Hub"
}
defaultConfig {
applicationId "..."
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
productFlavors {
one_million {
versionNameSuffix ' - Entity_1'
applicationIdSuffix 'entity_1'
manifestPlaceholders = [ applicationLabel: APP_NAME + versionNameSuffix ]
}
udacity {
versionNameSuffix ' - Entity_2'
applicationIdSuffix 'entity_2'
manifestPlaceholders = [ applicationLabel: APP_NAME + versionNameSuffix ]
}
hub {
versionNameSuffix ' - Hub'
applicationIdSuffix 'hub'
manifestPlaceholders = [ applicationLabel: HUB_NAME ]
}
}
buildTypes {
release {
manifestPlaceholders = [ applicationLabel: APP_NAME ]
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
新しい出力
Flavor Debug App Name Release App Name
-------- -------------- ----------------
entity_1 App Name - Entity_1_name App Name
entity_2 App Name - Entity_2_name App Name
... ... ...
entity_n App Name - Entity_n_name App Name
hub Hub App Name <- Issue (Release)