Imansible trovare il metodo android () per gli argomenti durante la creazione di un progetto Android da gradle

Ho un progetto Android basato su gradel con 4 sottomoduli – due librerie e due applicazioni. Stavo cercando di semplificare i file build.gradle di each submodule spostando alcuni dei codici condivisi / configurazioni al file build.gradle di livello superiore e utilizzare i subprojects {} per rendere disponibile quel codice a ciascun module.

La struttura del file system ha il seguente aspetto:

  • Come posso eseguire il debug di javascript su Android?
  • come get il frame rate del video in android os?
  • Aggiunta di IthemeszedOverlay alla mia mappa
  • Come mostrare le icone nel menu Sovrapposizione in ActionBar
  • Android Studio Git .gitignore vs progetto> Impostazioni> Controllo versione> File ignorati
  • L'imbottitura interna di Spinner è più grande su Android 6.0.1
  •  Root |- App1/ |- App2/ |- Lib1/ |- Lib2/ |- build.gradle |- settings.gradle 

    Il problema è che se aggiungo una sezione android {} ai sottoprogetti allora le attività gradle falliscono. Ad esempio, questo è il mio file build.gradle di livello superiore:

     subprojects { project -> android { buildToolsVersion "20.0.0" } } 

    La gradle di return restituisce questo:

    Cosa è andato storto: si è verificato un problema di valutazione del progetto root "android". Imansible trovare il metodo android () per argomenti [build_7dngpra6ldok366maq0on77r7e $ _run_closure3_closure5 @ 43d95624] sul progetto root 'android'.

    Ho cercato messaggi simili e alcune persone suggeriscono di aggiungere la linea apply plugin: 'android' a each sottoprogetto per esporre il metodo android() mancante che gradle si lamenta. Tuttavia, questa soluzione non funziona per me perché aggiungerà in modo efficace quella linea al progetto della libreria, che richiede il apply plugin: 'android-library' invece, la apply plugin: 'android-library' .

    C'è un modo per utilizzare android {} all'interno di subprojects {} quando si dispone di applicazioni e librerie nello stesso progetto?

  • L'app android si blocca quando è stato superato Thread pool 9 e le attività in coda 128
  • Android come fare l'ascoltatore a una variabile personalizzata?
  • Android Combina molti bitmap a uno grande va storto e non riesce a riciclare bitmap
  • Quando Android uccide un'applicazione, una function può essere interrotta a metà strada?
  • Errore di precompilazione di Android su 21.0.1 android sdk
  • AsyncTask, RejectedExecutionException e Task Limit
  • 2 Solutions collect form web for “Imansible trovare il metodo android () per gli argomenti durante la creazione di un progetto Android da gradle”

    Questa è in realtà una limitazione sul modo in cui il plugin android-gradle è strutturato e vi è una soluzione individuata sul sito web degli strumenti Android .

    Se si dispone di molti moduli Android, è ansible evitare di impostare manualmente gli stessi valori in tutti. Poiché probabilmente hai un mix di progetti Android e Android, non puoi applicare questi plugin attraverso una chiusura di sottoprogetti.

    La soluzione proposta è:

    … nel build.gradle del progetto radice:

     ext { compileSdkVersion = 19 buildToolsVersion = "19.0.1" } 

    in tutti i moduli android:

     android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion } 

    Uno pensa di aver notato che questo non funziona su versioni precedenti di gradle (stavo provando con 1.10 e ho ottenuto un errore). Con Gradle 2.1 questo sembra funzionare correttamente però.

    C'è un problema minore con la risposta di user4118620 … alless su Gradle 2.10 quando l'ho usata. Per avere la chiave visibile ai moduli android. Dobbiamo mettere l'ext nell'ambito del sottoprogetto

    Al file gradle root è necessario aggiungere quanto segue

     subprojects { ext{ <android_compile_sdk_key> = <sdk_value> <android_build_key> = <build_value> } } 

    Ad ognuno dei submoduli, segui semplicemente ciò che ha menzionato in precedenza

     android { compileSdkVersion <android_compile_sdk_key> buildToolsVersion <android_build_key> } 

    È ansible trovare i documenti relativi alla multi-building gradle nel seguente collegamento

    https://docs.gradle.org/current/userguide/multi_project_builds.html#sub:adding_specific_behavior

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.