2016-05-20 12 views
5

Sto lavorando al corso Udacity di Google per i nuovi Android Devs e ho avuto qualche problema con la build di Gradle e ne ho definito una costante. Ho provato a circondare il campo con più varianti di "," e che dico online, ma niente sembra funzionare. Mi chiedevo come formattare la linea all'interno di buildTypes.each, visto qui?buildTypes.each Stringa per API in configurazione Android Gradle

buildTypes.each { 
    it.buildConfigField "String", "OPEN_WEATHER_MAP_API_KEY", **APICodeHere** 
} 

Ecco la totalità del codice per costruire Gradle dell'app.

android { 
compileSdkVersion 21 
buildToolsVersion "21.1.2" 

defaultConfig { 
    applicationId "com.example.android.sunshine.app" 
    minSdkVersion 10 
    targetSdkVersion 21 
    versionCode 1 
    versionName "1.0" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
buildTypes.each { 
    it.buildConfigField "String", "OPEN_WEATHER_MAP_API_KEY", **APICodeHere** 
} 

} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:appcompat-v7:21.0.2' 
} 

Grazie !!!

risposta

9

sto anche prendendo questo corso e ho avuto lo stesso problema. la formattazione che alla fine ha lavorato per io sono questo:

it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', "\"6df0...9ac\"" 

Incollare la chiave API Open Weather esadecimale al posto di 6df0...9ac in alto. Spero possa aiutare!

+0

Dopo aver provato molte cose diverse, questa soluzione ha risolto il problema per me! Vorrei che lo menzionassero nel corso. – rOOb85

0

puoi renderlo visibile attraverso github chiamandolo da una cartella che aprirai sotto il pacchetto di progetto.

app.gradle: 

def keystorePropertiesFile = rootProject.file("keystore.properties") 
     def keystoreProperties = new Properties() 
     keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) 

     buildTypes.each { 
      it.buildConfigField 'String', 'youtubeapi', 
        keystoreProperties['YoutubeApi'] 
     }` 
project.keystore.properties: 
YoutubeApi="keykeykeykeykapikey"; 
0

Gradle crea un file BuildConfig per memorizzare le variabili create da se stesso come VERSION_CODE, APPLICATION_ID, e altri.

Quindi quello che dovresti fare è mettere l'istruzione buildTypes.each{} all'interno del tuo file app.gradle per creare alcune nuove variabili che vuoi creare lì.

Nel file app.gradle, il codice dovrebbe essere simile a questo:

... 
buildTypes{ 
    release { 
     bla bla bla 
    } 
    buildTypes.each { 
     it.buildConfigField("TYPE_OF_PARAM", "PARAM_NAME", "PARAM_VALUE") 
    } 
} 

dove

  • TYPE_OF_PARAM è il tipo che si desidera impostare per il vostro "variabile" (String, per esempio).
  • PARAM_NAME è il nome della nuova variabile creata.
  • PARAM_VALUE è il valore che si desidera impostare sulla variabile.

IMPORTANTE

Se si imposta una nuova variabile stringa, è necessario utilizzare il \" per impostare le virgolette alla nuova variabile. Quindi, se sto impostando una stringa, dovrei modificare il PARAM_VALUE su "\"My String\"". In questo modo, quando gradle imposta la variabile String, imposterà anche le virgolette.

La speranza che aiuta qualcuno.

Problemi correlati