Gradleを使用してAndroidアプリケーションのパッケージ名を変更することはできますか?
一意のパッケージ名を持つ同じアプリの2つのコピーをコンパイルする必要があります(したがって、市場に2回公開できます)。
このようなことができます
Android {
...
defaultConfig {
minSdkVersion 8
versionCode 10
}
flavorDimensions "flavor1", "flavor2"
productFlavors {
flavor1 {
applicationId "com.example.flavor1"
versionCode 20
}
flavor2 {
applicationId "com.example.flavor2"
minSdkVersion 14
}
}
}
フィールドを変更することもできますAndroid.defaultConfig.applicationId
一度限りのビルドを行いたい場合。
から取得: http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Product-Flavor-Configuration
product flavoursEthanの答えのように を使用するより簡単な代替手段として、build typesをカスタマイズすることもできます。
アプローチの選択方法:
(2つのアプローチを組み合わせて、すべてのビルドバリアントが個別のパッケージ名になることも考えられますが、これはテストしていません。)
debugビルドタイプ、およびその他すべての非releaseタイプの場合、applicationIdSuffix
を定義します。デフォルトのパッケージ名。 ( Android Gradleプラグインバージョン0.11より前 この設定はpackageNameSuffix
と呼ばれていました。)
Android {
buildTypes {
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
}
beta {
applicationIdSuffix '.beta'
versionNameSuffix '-BETA'
// NB: If you want to use the default debug key for a (non-debug)
// build type, you need to specify it:
signingConfig signingConfigs.debug
}
release {
// signingConfig signingConfigs.release
// runProguard true
// ...
}
}
}
上記のdebug
とrelease
はいくつかの側面が設定されたデフォルトのビルドタイプであり、beta
は完全にカスタムのビルドタイプです。さまざまなタイプを作成するには、通常どおりassembleDebug
、assembleBeta
などを使用します。
同様に、versionNameSuffix
を使用して、AndroidManifestのデフォルトのバージョン名をオーバーライドできます(非常に便利です!)。例えば。上記で設定した「0.8」→「0.8-BETA」。
リソース:
私自身はこれまでproductFlavors
をこの正確な目的のために使用していましたが、ビルドタイプのカスタマイズは私のニーズにより近いように思われます。
更新(2016):それ以来、すべてのプロジェクトでこのアプローチを使用してきました。 Android Best Practices Futuriceのガイドにも含まれています。
1.0.0+のgradleプラグインバージョンでは、 移行ガイド に記載されているようにapplicationIdを使用する必要があります
ProductFlavorsで名前が変更されたプロパティ
packageName => applicationId
したがって、build.gradleで次を使用します。
productFlavors {
flavor1 {
applicationId "com.example.flavor1"
}
flavor2 {
applicationId "com.example.flavor2"
}
}
イーサンの答えから、flavorGroupsとpackageNameは両方とももう利用できません。以下は2015年3月の時点で機能します。
Android {
...
defaultConfig {
minSdkVersion 8
versionCode 10
}
flavorDimensions "flavor"
productFlavors {
flavor1 {
flavorDimension "flavor"
applicationId "com.example.flavor1"
versionCode 20
}
flavor2 {
flavorDimension "flavor"
applicationId "com.example.flavor2"
minSdkVersion 14
}
}
}