3

製品フレーバーで呼び出されるカスタム メソッドを作成しようとしています。

現在のビルド スクリプト:

   buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android'

def defineHost(String val) {
    buildConfig "public static final String host = \"" + val + "\";";
}

android {

    compileSdkVersion 17
    buildToolsVersion "18.1.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

    productFlavors {

        flavor1 {
            packageName "flavor1"
            defineHost("test")
        }
        flavor2 {
            packageName "flavor2"
            defineHost("test2")
        }

    }

}
dependencies {
    compile 'com.android.support:appcompat-v7:+'
}

次のエラーが表示されます。

Gradle: プロジェクト ':Test' の評価中に問題が発生しました。

GroupableProductFlavorDsl_Decorated{name=flav1, minSdkVersion=-1, targetSdkVersion=-1, renderscriptTargetApi=-1, versionCode=-1, versionName=null, packageName=flavor1, testPackageName=null の引数 [test] のメソッド defineHost() が見つかりませんでした、testInstrumentationRunner=null、signingConfig=null}。

製品バリアントの BuildConfig にいくつかの変数を追加しようとしています。各バリアントの defineHost にすべてを記述できますが、きれいにしたいです。BuildConfig でバリアント構成の定数を実現する方法に関する他の提案を開きます。

4

2 に答える 2

0

私はこれがうまくいくと信じています:

def defineHost(String val) {
    return "public static final String host = \"" + val + "\";"
}


buildConfig defineHost("test")

私はこれをテストしていませんが、私のアプリの 1 つで似たようなことをしています。

于 2014-01-18T00:22:27.403 に答える