Benötigen Sie ein Gradle-Projekt aus einem anderen Verzeichnis


77

Ich habe ein Verzeichnis / Projekt-Setup wie folgt:

C:\
    _dev\
        Projects\
            Logger
            MyProject

Logger ist ein Android-Bibliotheksprojekt mit Gradle. MyProject ist ein Standard-Android-Projektprojekt, das die Logger- Bibliothek verwenden muss.

Ich verwende Android Studio und habe versucht, Logger zu den externen Bibliotheken hinzuzufügen . Während dies während der Entwicklung funktioniert, erhalte ich Nachrichten darüber, dass die Klasse beim Erstellen nicht gefunden wurde.

Ich bin völlig neu in Gradle, habe aber in meinem build.gradle in MyProject Folgendes versucht :

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.0"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 18
    }

    dependencies {
        compile files("../Logger")
    }
}

dependencies {
    compile 'com.android.support:gridlayout-v7:18.0.0'
    compile 'com.android.support:appcompat-v7:18.0.0'
}


Das habe ich leider schon versucht. include ': logger' project (': logger'). projectDir = neue Datei (settingsDir, '../SysLog')
Euan T

Schreiben Sie diese Zeile includeFlat 'prjname' in MyProject \ settings.gradle. Wenn das Projekt sideByside / Flat / same level ist, akzeptiert gradle auto das. Außerdem wird das Projekt automatisch in den Details der Intellij-Idee angezeigt
bh_earth0

Diese Frage wird von mir zu häufig besucht, fast jedes Mal, wenn ich ein neues Gradle-Projekt mache, also habe ich es in Favoriten eingefügt.
Prem30488

Antworten:


170

Am einfachsten ist es, MyProjectein Multiprojekt mit dem LoggerProjekt als Teilprojekt zu erstellen.

settings.gradleim MyProjectVerzeichnis:

include ":logger"
project(":logger").projectDir = file("../logger")

In der build.gradlevon können MyProjectSie diese Bibliothek nun als Projekt referenzieren:

dependencies {
     compile 'com.android.support:gridlayout-v7:18.0.0'
     compile 'com.android.support:appcompat-v7:18.0.0'
     compile project(":logger")
}

Danke, genau das habe ich gebraucht. Das Projekt wurde erfolgreich kompiliert, sobald ich dies hinzugefügt habe.
Euan T

Können Sie einen Eigenschaftswert aus der Datei gradle.properties des Gradle-Ausgangsverzeichnisses verwenden?
Rick

Dies ist genau das, worauf ich gerade gefolgert habe, dass ich in der Lage sein könnte, und genau die Antwort, nach der ich gesucht habe :-D
Pixel

Ich habe die gleiche Situation und diese Lösung in settings.gradle hat für mich
funktioniert

1
Danke, hat gut funktioniert, ich habe hier docs.gradle.org/current/dsl/… für ein tieferes Verständnis gelesen
Ankit Jain

13

Android Studio 2.2.3:

Zu settings.gradle hinzufügen.

include ':app', ':new_lib'
project(':new_lib').projectDir = new File('../new_lib/app')
  • Der Pfad muss relativ zum Stammverzeichnis des Projekts sein, an dem Sie arbeiten.
  • Das Modul, auf das Sie verweisen, muss einen Verweis auf das Verzeichnis "app" haben.

Bearbeiten Sie dann Ihre Projektstruktur | Module zum Einrichten von Abhängigkeiten.


Ich habe dies in Android Studio versucht, aber jetzt wird mein Root-Projekt nicht mehr als Bibliothek betrachtet und die Build-Varianten zeigen nur das, was Sie als verfügbares Modul ": new_lib" genannt haben. Die ursprüngliche 'App' ist nicht mehr in der Modulliste enthalten.
ZeroStatic

9

Versuchen Sie, die Abhängigkeit zum globalen Abschnitt "Abhängigkeiten" hinzuzufügen, nicht zum Abschnitt "Android> Abhängigkeiten". Während der Entwicklung wird die "Android" -Konfiguration verwendet, jedoch nicht zum Packen der Laufzeit.

dependencies {
    compile 'com.android.support:gridlayout-v7:18.0.0'
    compile 'com.android.support:appcompat-v7:18.0.0'
    compile files("../Logger")
}

Es kann sich auch lohnen, eine Gradle-Konfiguration für mehrere Projekte mit build.gradle und settings.gradle im freigegebenen übergeordneten Verzeichnis wie folgt einzurichten: http://www.gradle.org/docs/current/userguide/ multi_project_builds.html


1
Habe das gerade versucht, leider ohne Erfolg. Immer noch die gleichen Fehler.
Euan T
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.