2016-03-29 9 views
1

Stellen Sie sich diese Einstellung:Wie schließe ich `applicationIdSuffix` in einen generierten Ressourcenwert ein?

android { 
    buildTypes { 
     debug { 
      applicationIdSuffix ".debug" 
     } 
    } 
    productFlavors { 
     foo { 
      applicationId defaultConfig.applicationId + '.foo' 
     } 
    } 

}

Wie kann ich einen dynamischen String-Wert wie

resValue "string", "package_name", applicationId 

so eingerichtet, dass sie die applicationIdSuffix enthält für Debug baut?

Wenn ich dies zu defaultConfig hinzufügen, ist es die applicationId von my defaultConfig, die gesetzt ist. Wenn ich dies der Flavour-Konfiguration hinzufüge, fehlt die applicationIdSuffix (dies ist null auf dieser Ebene).

Irgendwelche Hinweise?

+0

* Wenn ich das zu * hinzufüge, was ist 'this'? – Blackbelt

+0

@Blackbelt Die Zeilenfolge "resValue". –

Antwort

2

Der coole Teil über ApplicationIdSuffix ist, dass Sie es in Aromen sowie in Build-Typen verwenden können. Check this out:

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "dev.bmax.suffixtext" 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     debug { 
      applicationIdSuffix '.debug' 
     } 
    } 

    productFlavors { 
     prod { 
      applicationIdSuffix '.prod' 
     } 
     mock { 
      applicationIdSuffix '.mock' 
     } 
    } 
} 

Nun, wenn ich meine ‚prodDebug‘ Variante der Endanwendung ID ist ‚dev.bmax.suffixtext.prod.debug‘ bauen, das ist, was Sie wollen, wenn ich das richtig verstehe Ihre Frage.

EDIT

  1. Sie den Namen der Variante in einer Gradle Aufgabe wie folgt zugreifen können:

    applicationVariants.all { variant -> 
        // Use 'variant.name' 
    } 
    
  2. 0.14.3

    Gradle Android Plugin-Version hinzugefügt Unterstützung der spezifischen Variante BuildConfigField/resValue:

    applicationVariants.all { variant -> 
        variant.resValue "string", "name", "value" 
    } 
    
+0

Ok, ich wusste nicht, dass 'applicationIdSuffix' auch auf Flavour-Ebene verfügbar ist, aber das ist eigentlich nicht mein Problem. Ich möchte, dass die Anwendungs-ID _resolved_ in die generierte strings.xml geschrieben wird, so dass ich sie z. in einer Präferenz-Bildschirm XML-Konfiguration. –

+0

Ich nehme an, Sie generieren die Zeichenfolgen in einer Gradle-Aufgabe. Verwenden Sie $ {variant.name} anstelle von 'applicationId'. –

+0

'> Eigenschaft 'variant' konnte auf ProductFlavor_Decorated nicht gefunden werden {Name = dev, Dimension = Backend, minSdkVersion = null, ZielSDKVersion = null, rendscriptTargetApi = null, rendscriptSupportModeEnabled = null, ringscriptNdkModeEnabled = null, versionCode = null, versionName = null, applicationId = meine.app.id, testApplicationId = null, testInstrumentationRunner = null, testInstrumentierungRunnerArgumente = {}, testHandleProfiling = null, testFunktionstest = null, signingConfig = null, resConfig = null, mBuildConfigFields = {}, mResValues ​​= {}, mProguardFiles = [] , mConsumerProguardFiles = [], mManifestPlaceholders = {}}. ' –

Verwandte Themen