Posso trovare un modo fragile per farlo, che è forse meglio di niente affatto. Copiare e incollare il seguente alla parte inferiore del file di build.gradle del vostro modulo, sostituendo ANDROID_HOME
con il percorso della vostra installazione di Android SDK e BUILD_TOOLS_VERSION
con la stessa versione specificata nel buildToolsVersion
specifiche della vostra android
blocco:
buildscript {
dependencies {
classpath files("/Users/sbarta/sdk/build-tools/21.0.2/lib/dx.jar")
}
}
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
variant.assemble.doLast {
// Show the dex count after the assemble task is finished
showDexCount(
[filename: output.outputFile],
)
}
}
}
def showDexCount(Map... files) {
def maxReferences = (int) Math.pow(2, 16);
def buffer = 5000 // that's for safety, because you can't burn maxReferences
println "\n\n***********************************************************************************"
println "* DEX COUNTS *"
println "***********************************************************************************"
files.each {
def dex = new com.android.dex.Dex(it.filename)
def count = dex.tableOfContents.methodIds.size
if ((maxReferences - count - buffer) >= 0)
println String.format('* %1$5d (there are still %2$5d references to burn...) *',
count, maxReferences - count - buffer)
else
println String.format('* %1$5d !!!WARNING!!! Too many references, please decrease by %2$4d! *',
count, -(maxReferences - count - buffer))
}
println "***********************************************************************************\n"
}
Carica il codice dex stesso per valutare i file dex e contare il numero di metodi; aggiunge il suo lavoro alla fine dell'attività dello assemble
nello script di build, quindi lo vedrai in build da riga di comando o se lo esegui effettivamente da Android Studio (dove verrà mostrato nella console di Gradle).
Ho cercato di renderlo più resiliente e utilizzare la variabile di ambiente ANDROID_HOME invece di richiedere l'hardcode del percorso, ma l'utilizzo di variabili di ambiente durante la creazione da Android Studio è problematico (funziona comunque dalla riga di comando). Allo stesso modo, ho cercato di far entrare la versione degli strumenti di compilazione dall'altra parte nello script di build a cui è stato fatto riferimento, e ho anche provato a definire una costante globale, ma non sono riuscito a far funzionare l'ambito e l'ordine di esecuzione. Se qualcuno può migliorare su questo, si prega di commentare o modificare la risposta.
Questo è adattato da qualcosa scritto da Carlos Sobrinho; Non riesco a trovare un riferimento accessibile dal Web all'originale.
fonte
2015-01-05 18:31:05
È possibile controllare il conteggio dei metodi di ciascuna dipendenza utilizzata nel progetto un plug-in Android Studio, si prega di consultare la risposta http://stackoverflow.com/questions/30648172/gradle-library-duplicates-in-dependencies/36056607#36056607 – darwin
bene c'è un modo per capire il numero di metodi contenuti in una dipendenza? – CoDe