2014-01-07 10 views
12

私はすべてのアプリケーションバリエーションに新しいタスクを追加するgradleプラグインを構築しています。この新しいタスクには、アプリケーションバリアントのパッケージ名が必要です。gradleプラグインのアプリケーションバリエーションのパッケージ名を取得する

これは、アンドロイドのGradleプラグインの最新版での動作を停止し、私の現在のコード、:これは、ビルドへの変更のアンドロイドプラグインの最新バージョンでは動作を停止しました

private String getPackageName(ApplicationVariant variant) { 
    // TODO: There's probably a better way to get the package name of the variant being tested. 
    String packageName = variant.generateBuildConfig.packageName 

    if (variant.processManifest.packageNameOverride != null) { 
     packageName = variant.processManifest.packageNameOverride 
    } 
    packageName 
} 

設定処理。それはとにかく前にハックのように思えたので、私はそれが動作を停止して驚くことではない。パッケージ名を取得する標準的な方法はありますか?

答えて

5

私はこれを使用します。

// Return the packageName for the given buildVariant 
def getPackageName(variant) { 
    def suffix = variant.buildType.packageNameSuffix 
    def packageName = variant.productFlavors.get(0).packageName 
    if (suffix != null && !suffix.isEmpty() && suffix != "null") { 
     packageName += suffix 
    } 
    return packageName 
} 
+1

、 'packageNameSuffix'はapplicationIdSuffix''に変更されました –

2

私が見つけた唯一の方法は、プロジェクトのbuild.gradlepackageNameを定義し、プラグインからproject.android.defaultConfig.packageNameを行うことでした。

プロジェクトに独自のパッケージを定義するフレーバーがある場合、stealthcopterで指定されたソリューションが機能します。

build.gradleではpackageNameが定義されているかどうかにかかわらず、無差別にプロジェクトを処理するプラグインです。これらのソリューションは理想とはほど遠いものです。

あなたが何か良いものを見つけたら教えてください。

2

これはあなたのためのNULL可能applicationIdSuffixを処理します:アンドロイドのGradleプラグインのバージョン0.11(以降)では

android.applicationVariants.all { variant -> 
    def applicationId = [variant.mergedFlavor.applicationId, variant.buildType.applicationIdSuffix].findAll().join() 
    println applicationId 
} 
関連する問題