2016-04-27 5 views
0

ich das nächste Stück Code in meinem build.gradle habe:Verwenden buildConfigField in build.gradle an einem anderen Ort in build.gradle definiert

productFlavors { 
     //DIMENSION - APP 
     slid { 
      dimension "app" 
      applicationId "com.slid" 
      versionCode 1 
      versionName "1.0.0" 

      manifestPlaceholders = [one_app_id : "273e0-b8f-4c7f-87-0f4eb68da"] 
     } 
} 

Was will ich Zugang zu tun ist, one_app_id von manifestPlaceholders in meiner java Code.

Da ich nicht in der Lage war, dies zu tun (oder zumindest ich war nicht in der Lage, einen Weg zu finden), ich will 273e0-b8f-4c7f-87-0f4eb68da ein buildConfigFieldString mit dem gleichen Wert definieren, aber ich möchte es einen Verweis auf manifestPlaceholders/one_app_id machen, damit ich Schreibe die ID nicht zweimal.

Meine Frage ist: buildConfigField "String", "ONE__ID", '[reference_here]' Was kann ich anstelle von [reference_here]?

ODER

Wie kann ich tun, ich in die andere Richtung, das heißt haben die ID eingestellt als buildConfigField und setzen dann die Referenz in der manifestPlaceholder Zum Beispiel manifestPlaceholders = [one_app_id: [?!reference_here?!]]

P. S. keine Sorge, die ID nicht gültig ist :)

+1

- 'FOO' funktioniert, wenn Sie' FOO' irgendwo definieren, zB in 'gradle.properties' oder als einfache globale Variable. – CommonsWare

+0

Ja, ich habe die Lösung von gradle.properties gefunden, aber ich möchte, dass der ID-Wert in build.gradle und nicht woanders angezeigt wird. Ich werde Aromen verwenden und dieses Projekt muss leicht mit neuen Daten ausgefüllt werden, wenn eine neue Geschmacksrichtung benötigt wird (eine dritte Partei wird diese Werte ausfüllen und einen neuen Build generieren, also muss es geradlinig sein, leider :() – AndreiBogdan

+0

"aber ich möchte, dass der ID-Wert in build.gradle angezeigt wird" - verwenden Sie dann eine globale Konstante: http://StackOverflow.com/a/4859715/115145 – CommonsWare

Antwort

0

Basierend auf CommonsWare Vorschlag ich habe es geschafft, es wie dies zu tun: „Was kann ich anstelle von [reference_here]“

ext { 
    oneAppId = "" 
} 

android { 

    productFlavors { 
      //DIMENSION - APP 
      slid { 
       dimension "app" 
       applicationId "com.slid" 
       versionCode 1 
       versionName "1.0.0" 

       ext.oneAppId = '"273e0-8567-558da"' 
       manifestPlaceholders = [one_app_id : ext.oneAppId] //Used by the third party library 
       buildConfigField "String", "ONE_APPID", ext.oneAppId //I'll use this in java 
      } 
    } 

} 
Verwandte Themen