3

この例のように 2 つの異なるフレーバー ディメンションがあり、次のように applicationId を動的に生成したい

com.company.apple

代わりに、このスクリプトは次の applicationId を生成します

null.company.apple

これは、一番下の関数が、結合されたリストではなく、完全な productFlavor リストを反復処理するためだと思います。

flavorDimensions "product", "license"

productFlavors.all {
    ext.scheme = null
    ext.scheme_tail = ""
    ext.kind = null
    ext.license = null
}

productFlavors {
    apple {
        dimension "product"
        kind = "apple"
        scheme = "companyapple"
    }

    orange {
        dimension "product"
        scheme = "companyorange"
        kind = "orange"
    }

    kiwi {
        dimension "product"
        scheme = "companykiwi"
        kind = "kiwi"
    }

    com {
        dimension "license"
        license = "com"
        scheme_tail = ''
    }

    eu {
        dimension "license"
        license = "eu"
        scheme_tail = "eu"
    }

    uk {
        dimension "license"
        license = "uk"
        scheme_tail = "uk"
    }

}

productFlavors.all {
    applicationId license + ".company." + kind
    ext.fileProvider = applicationId + ".fileprovider"
    manifestPlaceholders = [scheme: "$scheme$scheme_tail", fileProvider: "$fileProvider"]
    buildConfigField("String", "FILE_PROVIDER", "\"$fileProvider\"")
    buildConfigField("String", "SCHEME", "\"$scheme$scheme_tail\"")
    buildConfigField("String", "KIND", "\"$kind\"")
    buildConfigField("String", "LICENSE", "\"$license\"")
}

結合されたリストを繰り返し処理して、buildConfig フィールドと applicationIds を作成するにはどうすればよいですか?

manifestPlaceholders は次のように消費されます。

    <activity android:name=".FruitViewerActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <data android:scheme="${scheme}" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity>

    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${fileProvider}"
        android:grantUriPermissions="true">

        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />

    </provider>

ありがとう、ローリー

4

2 に答える 2

0
apple {
    dimension "product"
    kind = "apple"
    licence = "apple"
    scheme = "companyapple"
}

フレーバーにライセンスがないため、デフォルトでnull

于 2018-01-30T14:20:06.603 に答える