web-dev-qa-db-fra.com

Comment ajouter un dossier source lié dans Android Studio?

Dans Eclipse, je peux ajouter un dossier source à mon projet Android en tant que "dossier source lié"). Comment puis-je obtenir la même chose dans Android Studio?

Ou est-il possible d'ajouter un dossier externe pour construire gradle?

60
Erik Z

dans votre build.gradle, ajoutez ce qui suit à la fin du nœud Android

Android {
    ....
    ....

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

}
91
fabrizotus

La bonne réponse est:

Android {
    ....
    ....

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

De plus, si votre répertoire source externe n’est pas sous src/main, vous pouvez utiliser un chemin relatif comme ceci:

sourceSets {
    main.Java.srcDirs += 'src/main/../../../<YOUR DIRECTORY>'
}
18
lyfshadyboss

Juste au cas où quelqu'un serait intéressé, voici un Java qui génère et référence correctement les artefacts construits dans une Android multi-modules

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"
2
Hector

Bien que sourceSets vous permette d'inclure des structures de répertoires entières, il n'y a aucun moyen d'en exclure des parties dans Android Studio (à partir de la version 1.2), comme décrit ici: Android Studio Exclude Class from build?

Jusqu'à ce que Android Studio soit mis à jour pour prendre en charge les directives d'inclusion/exclusion pour les Android, Liens symboliques fonctionnent assez bien. Si vous utilisez Windows, des outils natifs tels que junction ou mklink peuvent accomplir l'équivalent des liens symboliques Un * x. CygWin peut aussi les créer avec un peu de réversion. Voir: - Git Symlinks dans Windows et Comment faire un lien symbolique avec cygwin dans Windows 7

2
Brian White

Vous pouvez ajouter un dossier source au script de construction, puis synchroniser. Recherchez sourceSets dans la documentation ici: http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Basic-Project

Je n'ai pas trouvé de moyen d'ajouter des dossiers de source de test. J'ai ajouté manuellement la source au fichier .iml. Bien sûr, cela signifie qu’il va disparaître à chaque fois que le script de construction est synchronisé.

2
tom

Si vous n'utilisez pas Gradle (création d'un projet à partir d'un APK, par exemple), vous pouvez le faire via Android Interface utilisateur Studio (à partir de la version 3.3.2):

  • Cliquez avec le bouton droit sur le répertoire racine du projet, choisissez Open Module Settings
  • Appuyez sur le bouton + Add Content Root (Centre à droite)
  • Ajoutez votre chemin et appuyez sur OK

D'après mon expérience (avec du code natif), tant que vos .so Sont construits avec des symboles de débogage et à partir des mêmes chemins absolus, les points d'arrêt ajoutés dans les fichiers source seront automatiquement reconnus.

0
Jeremy Nikolai