Wie kann ich einen verknüpften Quellordner in Android Studio hinzufügen?

Lesezeit: 5 Minuten

Benutzer-Avatar
Erik Z

In Eclipse kann ich meinem Android-Projekt einen Quellordner als “verknüpften Quellordner” hinzufügen. Wie erreiche ich dasselbe in Android Studio?

Oder ist es möglich, einen externen Ordner hinzuzufügen, um ihn in Gradle zu erstellen?

Benutzer-Avatar
fabrizotus

In deiner build.gradle fügen Sie Folgendes am Ende des Android-Knotens hinzu:

android {
    ....
    ....

    sourceSets {
        main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
    }

}

  • Wirklich hilfreich. Warum setzen sourceSets im Rahmen von android? Mein dependencies ist raus.

    – CopperCash

    24. Juni 2014 um 7:12 Uhr

  • Diese Lösung befasst sich jedoch nur mit den Java-Dateien. Was ist mit all den Ressourcen, die sich auch unter ‘src’ befinden – die Drawables, Layouts, Strings usw. Wie kann man sie in einen externen Ordner legen?

    – GyRo

    9. Februar 2015 um 10:20 Uhr

  • Für AppEngine müssen sich sourceSets auf Stammebene befinden und dürfen nicht darin verschachtelt sein. Ziemlich seltsam, dass es ein Weg für Android-Module und ein anderer Weg für AppEngine-Module wäre.

    – Tom

    24. April 2015 um 21:48 Uhr

  • @Deckard Es sollte einen Android-Block in der build.gradle des Moduls “app” geben, nicht in der Root-Build-Datei.

    – Benutzer905686

    25. Juli 2016 um 12:04 Uhr

  • @GyRo Sie können dasselbe für Ressourcendateien tun: Fügen Sie in sourceSets die Zeile hinzu main.res.srcDirs += '<YOUR DIRECTORY>'

    – FlorianT

    20. August 2017 um 16:10 Uhr

Benutzer-Avatar
lyfshadyboss

Die richtige Antwort lautet:

android {
    ....
    ....

    sourceSets {
        main.java.srcDirs += 'src/main/<YOUR DIRECTORY>'
    }
}

Außerdem, wenn Ihr externes Quellverzeichnis nicht unter ist src/mainkönnten Sie einen relativen Pfad wie diesen verwenden:

sourceSets {
    main.java.srcDirs += 'src/main/../../../<YOUR DIRECTORY>'
}

  • In Bezug auf relative Pfade frage ich mich, ob es möglich ist, eine Art Gradle-Variablen zu verwenden, z. srcDirs += “$(ProjectDir)/mylib/src”? Ich bin neu bei Gradle und habe keine Ahnung, ob es so etwas unterstützt.

    – Tom

    24. April 2015 um 16:46 Uhr

  • Die kannst du weglassen src/main/../../ Präfix, da die Punkte die Pfadkomponenten aufheben.

    – Brian Weiß

    25. Mai 2015 um 20:43 Uhr

  • @BrianWhite Wie gebe ich einen Quellsatz auf einem anderen Computer an? sourceSets { main.java.srcDirs += 'src/main/\\10.51.70.21\me\myco\apps\myapp\src' }

    – wie Judo

    30. August 2016 um 2:37 Uhr

  • Ich erwarte nicht, dass Sie das können, da es meines Wissens nur das Betriebssystem verwendet open() um auf Dateien zuzugreifen. Du könntest so etwas verwenden nfs oder smb Remote-Verzeichnisse direkt in das Dateisystem einzuhängen, aber das ist nicht spezifisch für Android Studio.

    – Brian Weiß

    31. August 2016 um 0:09 Uhr

  • Obwohl diese Lösung funktioniert, habe ich festgestellt, dass sie nicht funktioniert, wenn Sie ein Projekt haben, das aus mehreren Modulen besteht und mehr als ein Modul auf denselben externen Quellcode verweisen möchte. Es scheint, dass nur ein Modul auf externe Quelldateien verweisen kann. Das ist eine Schande, da ich beabsichtigt hatte, einen gemeinsamen src-Ordner zu haben, den ich verwenden könnte, um Konstanten zu teilen, ohne eine JAR- oder AAR-Datei erstellen zu müssen.

    – Johannes

    30. Dezember 2019 um 12:05 Uhr

Sie können dem Build-Skript einen Quellordner hinzufügen und dann synchronisieren. Suchen Sie in der Dokumentation hier nach sourceSets: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Basic-Project

Ich habe keine gute Möglichkeit gefunden, Testquellordner hinzuzufügen. Ich habe die Quelle manuell zur .iml-Datei hinzugefügt. Dies bedeutet natürlich, dass es jedes Mal verschwindet, wenn das Build-Skript synchronisiert wird.

Benutzer-Avatar
Brian Weiß

Während sourceSets können Sie ganze Verzeichnisstrukturen einschließen, es gibt keine Möglichkeit, Teile davon in Android Studio (ab Version 1.2) auszuschließen, wie in beschrieben Schließen Sie eine Klasse aus dem Build in Android Studio aus.

Bis Android Studio aktualisiert wird, um Anweisungen zum Einschließen/Ausschließen von Android-Quellen zu unterstützen, symbolische Verknüpfungen funktionieren ganz gut. Wenn Sie Windows verwenden, sind native Tools wie z junction oder mklink kann das Äquivalent von symbolischen Links auf Unix-ähnlichen Systemen erreichen. Cygwin auch diese mit etwas Zwang schaffen können. Sehen: Symbolische Git-Links in Windows und So erstellen Sie einen symbolischen Link mit Cygwin in Windows 7.

Benutzer-Avatar
Tyrannisieren

Hier ist eine vollständige Java-Modul-Gradle-Datei, die die erstellten Artefakte innerhalb einer Android-Anwendung mit mehreren Modulen korrekt generiert und referenziert:

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "net.ltgt.gradle:gradle-apt-plugin:0.15"
    }
}

apply plugin: "net.ltgt.apt"
apply plugin: "java-library"
apply plugin: "idea"

idea {
    module {
        sourceDirs += file("$buildDir/generated/source/apt/main")
        testSourceDirs += file("$buildDir/generated/source/apt/test")
    }
}

dependencies {

    // Dagger 2 and Compiler
    compile "com.google.dagger:dagger:2.15"
    apt "com.google.dagger:dagger-compiler:2.15"
    compile "com.google.guava:guava:24.1-jre"

}

sourceCompatibility = "1.8"
targetCompatibility = "1.8"

Benutzer-Avatar
Peter Mortensen

Wenn Sie Gradle nicht verwenden (Erstellen eines Projekts aus einer APK), kann dies über die Android Studio-Benutzeroberfläche (ab Version 3.3.2) erfolgen:

  • Klicken Sie mit der rechten Maustaste auf das Stammverzeichnis des Projekts und wählen Sie es aus Öffnen Sie die Moduleinstellungen
  • Schlagen Sie die + Content-Root hinzufügen Knopf (Mitte rechts)
  • Fügen Sie Ihren Pfad hinzu und klicken Sie OK

Nach meiner Erfahrung (mit nativem Code) solange Ihr .so Dateien werden mit Debug-Symbolen erstellt und von den gleichen absoluten Pfaden werden in Quelldateien hinzugefügte Haltepunkte automatisch erkannt.

Das ist für Kotlin-DSL (build.gradle.kts):

android {
    sourceSets["main"].java.srcDirs("src/main/myDirectory/code/")
    sourceSets["main"].resources.srcDirs("src/main/myDirectory/resources/")

    // Another notation:
    // sourceSets {
    //     getByName("main") {
    //         java.srcDirs("src/main/myDirectory/code/")
    //         resources.srcDirs("src/main/myDirectory/resources/")
    //     }
    // }
}

  • Was ist “Kotlin-DSL”? Das Kotlin-DSL? EIN Kotlin-DSL? Etwas anderes? Kannst du einen Verweis darauf hinzufügen? (Aber ohne “Edit:”, “Update:”, oder ähnliches – die Antwort sollte so aussehen, als wäre sie heute geschrieben worden. Und kein nackter Link.)

    – Peter Mortensen

    2. Mai um 20:01 Uhr


  • @PeterMortensen Ich habe den Link aktualisiert. Danke für den Hinweis. Mmm … und verzeihen Sie mir, wenn ich nicht den richtigen Artikel verwendet habe.

    – Mahozad

    3. Mai um 5:45 Uhr


1014380cookie-checkWie kann ich einen verknüpften Quellordner in Android Studio hinzufügen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy