Ho un progetto Android che dipende da diversi moduli e ogni modulo dipende dalla revisione della libreria android support-v4In che modo gradle gestisce più moduli con diverse revisioni della libreria di supporto v4?
1) La mia app dipende anche dalla più recente libreria di supporto Android v4 (revisione 21) quindi in questo build.gralde ho messo una linea del genere:
dependencies {
compile 'com.android.support:support-v4:21.0.0'
}
2) Facebook SDK modulo (v.3.15), che dipende anche dal supporto Android biblioteca v4, ma la revisione 13 e il suo file build.gradle dice:
dependencies {
compile 'com.android.support:support-v4:13.0.+'
compile files('../libs/bolts.jar')
}
3) ed un altro modulo che, possiamo chiamare Module3 in questo caso, dipende anche dal supporto-v4 ma con una revisione diversa rispetto agli altri moduli, così:
dependencies {
compile 'com.android.support:support-v4:19.0.+'
compile files('../libs/bolts.jar')
}
Domande:
1) In che modo gradle gestisce diverse revisioni di librerie support-v4?
2) Che cosa fa esattamente?
3) Che cosa significa in termini di dimensioni apk?
"In che modo gradle gestisce diverse revisioni di librerie di supporto v4?" - a seconda delle impostazioni 'build.gradle'' compile', ne userà una che corrisponde a tutto, o fallirà la build. Nell'app può essere presente solo una copia di qualsiasi dipendenza, altrimenti si verificheranno collisioni sui nomi delle classi. – CommonsWare
Puoi spiegarlo meglio per questo esempio, per favore? Significa che gradle usa l'ultima revisione per questo esempio? – Noodles
Il mio istinto sarebbe che fallirebbe la compilazione, in quanto non esiste alcuna versione di quella libreria che è contemporaneamente tre versioni differenti. Ma, non ho giocato molto con questo scenario. Se hai già impostato, esegui un rapporto sulle dipendenze Gradle per vedere esattamente cosa utilizzerà: http://www.gradle.org/docs/current/userguide/tutorial_gradle_command_line.html (vedi "Elenco delle dipendenze del progetto") – CommonsWare