Errore: configurazione con il nome "predefinito" non trovata in Android Studio


117

Sto usando la libreria di volley per eseguire operazioni di rete in Android. Quindi sto cercando di aggiungere questa libreria nel mio progetto che viene creato in Android Studio e sistema gradle.

Ho aggiunto la libreria di pallavolo nel mio progetto ma quando mi sincronizzo con gradle ricevo un messaggio di errore. Ho provato tutte le risposte che vedo qui ma niente ha funzionato per me.

Messaggio di errore : configurazione con il nome "predefinito" non trovata in Android Studio

Volley / build.gradle

apply plugin: 'android-library'

android {

    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    sourceSets {
        defaultConfig {
            minSdkVersion 8
            targetSdkVersion 19
        }

        main {
            assets.srcDirs       = ['assets']
            res.srcDirs          = ['res']
            aidl.srcDirs         = ['src']
            resources.srcDirs    = ['src']
            renderscript.srcDirs = ['src']
            java.srcDirs         = ['src']
            manifest.srcFile 'AndroidManifest.xml'

        }
    }
}

app / build.gradle

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile project(':library:volley')
}

radice / build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.1'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

settings.gradle

include ':app'
include ':library:volley'

Hai aggiunto la cartella della libreria nella posizione corretta come nome progetto / libreria ??
Ajay S

Ho aggiunto la directory della libreria nella directory dell'app
Bot



1
Nel mio caso manca uno dei miei file di configurazione gradle, non è correttamente push.
Zar E Ahmer

Risposte:


68

Aggiungi la cartella della libreria nella posizione principale del tuo progetto e copia tutti i file della libreria lì. Ad esempio YourProject / library quindi sincronizzalo e riposa le cose mi sembra OK.


5
Può anche significare che il file build.gradle o i file .iml mancano nelle directory della libreria
WKS

7
@aleb per ottenere messaggio di errore completo è sufficiente eseguire comando da terminale: ./gradlew assembleDebug. Puoi farlo da Android Studioo da un'app terminale esterna.
undici

Puoi pubblicare esempi e foto? grazie, perché questo metodo non funziona
consegna il

Grazie amico che mi ha salvato la giornata. Grazie <3
Gufran Khurshid

1
Questo mi ha portato a realizzare che mi mancavano i miei sottomoduli, che è più esplicitamente ampliato dalla risposta di @ ViliusK.
Ionoclast Brigham

96

Provare:

git submodule init
git submodule update

1
Questo sicuramente funziona per le librerie che vengono aggiunte come sottomodulo, grazie!
Arne

@Vilius, da quale directory lo eseguo in Terminal? Ho provato a eseguirlo nella directory del mio progetto, ma dice Not a git repository (or any of the parent directories). Ho un'app di esempio che ho provato a importare e non è stata configurata per gradle, quindi l'hanno incartata. Mi chiedo se questo sia parte del problema. In effetti, non ho nemmeno un settings.gradlefile. Solo build.gradlee alcuni altri.
Azurespot

2
Dovresti eseguire dalla directory principale del progetto. Dovrebbe essere un progetto di git repo. E dovrebbe essere un progetto con sottoprogetti. Cerca nel build.gradlefile qualcosa del tipocompile project(':libs:my-custom:library')
ViliusK

1
> Un sottomodulo ti permette di mantenere un altro repository Git in una sottodirectory del tuo repository. L'altro repository ha una propria cronologia, che non interferisce con la cronologia del repository corrente. Questo può essere utilizzato per avere dipendenze esterne come ad esempio librerie di terze parti. fonte
ViliusK

3
In che modo il sottomodulo git ha qualcosa a che fare con l'errore di compilazione gradle?
teddy

22

Questo è probabilmente un caso raro, ma per me una libreria inclusa in settings.gradle non era presente.

Ad esempio, avevo: include ':libraries:Android-RateThisApp:library'nel mio settings.gradle

ma la cartella Android-RateThisApp era vuota. Non appena ho controllato questo sottomodulo, la sincronizzazione gradle riesce.


Sì, probabilmente hai dovuto git submodule inite git submodule update. È un caso comune quando si controlla un progetto con sottomoduli.
ViliusK

non è affatto raro ... questo è il caso per me con questo errore di sorta..MOLTO del tempo.
sirvon

Questo è stato il caso per me! Aggiornate le mappe
reattive

14

Se desideri utilizzare la stessa cartella della libreria per diversi progetti, puoi fare riferimento ad essa in gradle a una posizione esterna come questa:

settings.gradle:

include 'app', ':volley'
project(':volley').projectDir = new File('../libraries/volley')

nella tua app build.gradle

dependencies {
    ...
    compile project(':volley')
...}

Questo ha funzionato per me quando avevo un intero progetto come sottomodulo, ma volevo solo usare il modulo libreria di quel progetto (ed escludere l'app di esempio).
phreakhead

6

Anch'io sto affrontando questo problema ma seguo i seguenti passaggi: - 1) Aggiungo il modulo (Libreria) a un nome di cartella particolare ThirdPartyLib

Per risolvere questo problema vado su settings.gradle piuttosto che aggiungere follwing: -

project (':'). projectDir = new File ('ThirdPartyLib /')

: - è il nome del modulo ...


3

Per diagnosticare questo errore, passare rapidamente a un terminale o utilizzare il terminale integrato in Android Studio (accessibile nella barra di stato in basso). Passare alla directory principale del PROGETTO (dove settings.gradlesi trova).

1.) Controlla per assicurarti di settings.gradleincludere il sottoprogetto. Qualcosa come questo. Ciò garantisce che la tua build multi-progetto conosca il tuo sottoprogetto di libreria.

include ':apps:App1', ':apps:App2', ':library:Lib1'

Dove il testo tra i due punti sono sottodirectory.

2.) Esegui il seguente comando gradle solo per vedere se Gradle può darti un elenco di attività per la libreria. Usa lo stesso qualificatore nella settings.gradledefinizione. In questo modo verranno rilevati i problemi con lo script di build della libreria in isolamento.

./gradlew :library:Lib1:tasks --info

3.) Assicurati che l'output dell'ultimo passaggio includa un'attività "assembleDefault". Se non si è assicurato che la libreria includa il plug-in della libreria Android in build.gradle. Come questo in alto.

apply plugin: 'com.android.library'

So che la domanda del poster originale ha avuto risposta, ma credo che la risposta si sia evoluta nell'ultimo anno e penso che ci siano più ragioni per l'errore. Penso che questo flusso di risoluzione dovrebbe aiutare coloro che si imbattono nelle varie questioni.


3

Controlla il settings.gradlefile. I moduli inclusi potrebbero essere mancanti o in un'altra directory. Ad esempio, con la riga sotto settings.gradle, gradle cerca il common-libmodulo all'interno della directory del progetto:

include ':common-lib'

Se manca, puoi trovare e copiare questo modulo nel tuo progetto o fare riferimento al suo percorso nel settings.gradlefile:

include ':common-lib'
project(':common-lib').projectDir = new File('<path to your module i.e. C://Libraries/common-lib>') // 

0

Per me, (come da alcuni commenti che ho visto), il problema era che gradle non riusciva a trovare il build.gradle per la libreria importata. Questa configurazione è semplice ma il messaggio di errore è un po 'criptico. Ad esempio, stavo usando il progetto android-map-utils e ho dovuto includerlo nelle mie impostazioni.gradle aggiungendo queste 2 linee in questo modo.

include ':android-map-utils'
project(':android-map-utils').projectDir = new File(settingsDir, '..\\..\\modules\\android-maps-utils-master\\library')

Il percorso della libreria è relativo al file settings.gradle del mio progetto. Quindi, l'ho semplicemente fatto riferimento nelle mie dipendenze del file build.gradle della mia app in questo modo

...

    dependencies {
    ....
        compile project(':android-map-utils')
    ....

    }

Consiglio di importare un modulo alla volta, compilarlo e controllarlo.


0

Se supponi di aver individuato questo errore dopo aver rimosso alcuni moduli del nodo, idealmente non dovrebbe essere presente la libreria in build.gradle (Modulo: app). Può essere rimosso manualmente e sincronizzare nuovamente il progetto.


0

Ho anche affrontato lo stesso problema e il problema era che le librerie mancavano in alcuni dei seguenti file.

settings.gradle, app / build.gradle, package.json, MainApplication.java

Supponiamo che la libreria sia react-native-vector-icons, allora dovrebbe essere menzionata nei seguenti file;

Nel file app / build.gradle nella sezione delle dipendenze aggiungi:

compilare il progetto (': react-native-vector-icons')

Nel file settings.gradle nella cartella Android, aggiungi quanto segue:

include il progetto ': react-native-vector-icons' (': react-native-vector-icons'). projectDir = new File (rootProject.projectDir, '../node_modules/react-native-vector-icons/android' )

In MainApplication.java, aggiungi quanto segue:

Importa la dipendenza: import com.oblador.vectoricons.VectorIconsPackage;

e poi aggiungi: new VectorIconsPackage () nel metodo getPackages ().


0

La rimozione di poche dipendenze native di reazione ha risolto il problema

Eliminando queste righe il problema viene risolto. Questa riga è stata creata da rnpm link ma è un bug.

compile project(':react-native-gps')
compile project(':react-native-maps')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.