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'
}
Euan T.
quelle
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")
}
Rene Groeschke
quelle
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.

Dave Tyler
quelle
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

miw
quelle
1
Habe das gerade versucht, leider ohne Erfolg. Immer noch die gleichen Fehler.
Euan T