web-dev-qa-db-fra.com

Android Studio: Comment joindre javadoc

C'est peut-être une question très triviale, mais je n'ai trouvé aucune option pour associer javadoc/source avec des dépendances de jar locales (dans le dossier libs) dans le projet Android. Je ne peux pas croire que j'ai passé une heure sur des choses aussi simples :( 

Le résultat de la recherche Google indique simplement l'ajout de documentation Android ou de javadoc dans Eclipse. Ce n'est pas ce que je cherche!

56
Ashish Bindal

J'ai trouvé une solution tout à l'heure car je ne peux pas trouver d'autre solution pendant longtemps.

supposer:

  1. votre nom de lib est: libxxx.jar
  2. le nom javadoc est docs.Zip 

sous le dossier .idea/libraries, vous pouvez trouver libxxx.xml. remplacer JAVADOC par 

<JAVADOC>
  <root url="jar://C:/yourpath/doc.Zip!/" />
</JAVADOC>

puis ctrl + alt + y pour synchroniser le projet. (Ne faites pas "Synchroniser le projet avec les fichiers Gradle", cela supprimera les modifications)

35
Jason Qi

J'ai trouvé et testé une manière d'ajouter des javadocs sans les perdre après une synchronisation graduelle.

  1. Faites un clic droit dans Panneau de projet> Bibliothèques externes> lib-name
  2. Cliquez sur Propriétés de la bibliothèqueLib props
  3. Cliquez sur spécifier l'URL de la documentation
  4. Et spécifiez une URL. Pour ma machine, c'était file:///opt/Android-sdk/extras/google/google_play_services/docs/referenceAdd doc url
  5. Le résultat était: added jdoc
  6. Et après une synchronisation de projet, je pouvais parcourir le javadoc des services de lecture googlegoogle play services maps javadoc

Remarque:

Cela a placé la même entrée JAVADOC dans le xml identifié par Jason mais ne disparaît pas après une synchronisation avec gradle

28
Matyas

C'est possible:

  1. Ouvrez Project structure
  2. Naviguez jusqu'à la dépendance que vous voulez
  3. Appuyez sur le bouton de la capture d'écran et fournissez le dossier ou le fichier

screenshot 1

Une autre façon d’attacher des sources:

  1. Entrez dans la classe à partir de la bibliothèque (survolez le nom de la classe avec la souris et faites CMD + clic gauche ou CMD + B)
  2. Vous verrez la version décompilée de la classe dans le menu en haut à droite de l'éditeur "Attach sources .."

screenshot 2

17
Eugen Martynov

J'ai eu un problème avec la réponse de Matyas que je ne voyais pas ma bibliothèque locale .jar dans la liste {Bibliothèques externes}, car elle ne montrait que les bibliothèques attachées par maven.

La solution est mentionnée ici: https://code.google.com/p/Android/issues/detail?id=73087#c26

  1. Faites un clic droit sur l'onglet "Structure" et cochez la case "Mode divisé" (pour pouvoir ouvrir les onglets "Projet" et "Structure" simultanément).
  2. Ouvrez les deux onglets "Projet" et "Structure" en même temps.
  3. Dans l'onglet "Projet", sélectionnez la perspective "Android", puis sélectionnez le dossier de votre module ("Application", par exemple).
  4. Dans la fenêtre "Structure", vous devriez maintenant voir la liste de toutes les bibliothèques, y compris votre fichier * .jar local.

Continuer comme dans la réponse de Matyas:

  1. Faites un clic droit sur la bibliothèque désirée et sélectionnez "Propriétés de la bibliothèque ..."
  2. Si vous avez * .jar avec des javadocs localement, vous pouvez appuyer sur le bouton "ajouter" (vert "+") et rechercher le fichier sur votre disque (vous n'avez pas à taper manuellement le chemin "fichier: //").
8
Robyer

Il me semble que le problème est toujours d'actualité:

https://code.google.com/p/Android/issues/detail?id=73087

2
waynesford

J'ai aussi perdu beaucoup de temps là-dessus ... 

Voici une tâche de dégradé qui recherche la source et la javadoc par convention de nommage/emplacement et les enregistre dans les fichiers .idea en synchronisation. Il appartient à la section allProjects du fichier de graduation racine. Tel quel, il s'attend à trouver [nom du projet] /libs/lib.jar à côté de lib-sources.jar et/ou lib-javadoc.jar . De plus, comme indiqué dans les commentaires, si vos javadocs ne sont pas reliés à "/" dans le fichier jar, vous devrez peut-être modifier le script pour ajouter "docs/html" (par exemple) à la fin de "jar: // $ doc!/".

allprojects {

    task addJavaDoc {
        afterEvaluate {
            // Specify paths, this will be run per non-root project
            def projectDir = project.getProjectDir().getCanonicalPath()
            def rootDir = project.getRootDir().getCanonicalPath()
            def lib = projectDir + '/libs'

            // println lib // Uncomment this to troubleshoot
            // Get any jar dependencies register in the lib folder
            fileTree(include: ['*.jar'], exclude: ['*-source.jar', '*-javadoc.jar'], dir: lib ).each { File jar ->
                def jarName = jar.getName()
                def moduleName = jarName.substring(0, jarName.lastIndexOf("."))
                // IntelliJ does this to file names when making the xml files
                def escapedName = moduleName.replace("-", "_").replace(".", "_")
                def xmlFile = "$rootDir/.idea/libraries/${escapedName}.xml"
                // println xmlFile // Uncomment this to troubleshoot
                if (new File(xmlFile).exists()) {
                    ['javadoc', 'sources'].each {String docType ->
                        // Get sources or Java doc by naming convention, (expects name-sources or name-javadoc
                        def doc = "$lib/$moduleName-${docType}.jar"
                        // println doc // Uncomment this to troubleshoot
                        if(new File(doc).exists()) {
                            def xml = new XmlParser().parse(xmlFile);
                            def xmlTag = docType.toUpperCase()
                            // Perform xml replacement by convention
                            xml.library[xmlTag].replaceNode {
                                "$xmlTag" {
                                    root(url: "jar://$doc!/")
                                }
                            }
                            // Write out changes
                            new XmlNodePrinter(new PrintWriter(new FileWriter(xmlFile))).print(xml)
                            // Notify that changes worked
                            println "Fixed up reference to $doc"
                        }
                    }
                }
            }
        }
    }
}

De plus, si vous utilisez jcenter ou mavencentral, les javadocs et les sources doivent fonctionner pour les fichiers jar téléchargés sans utiliser cette tâche, mais vous devrez peut-être ajouter cela dans chaque fichier de dégradé non racine:

apply plugin: 'idea'

idea{
    module {
        downloadJavadoc = true
        downloadSources = true
    } 
}
1
npjohns

Après une enquête, je suis tombé sur ceci:

https://github.com/xujiaao/AARLinkSources

Fonctionne comme par magie!

1
zsolt.kocsi

Personnellement testé avec succès!

1. Structure du projet (ctrl + alt + shift + s)

Emplacement 2.SDK

Emplacement 3.JDK

4.UnCheck "Utiliser le JDK intégré (recommandé)"

5.Sélectionnez votre propre chemin jdk (Mon chemin: C:\Program Files\Java\jdk1.8.0_111)

6.Synchronisé (ctrl + alt + y)

Succès

0
Savino

Il y a une solution, Cette procédure a lieu par le terminal, 

J'ai testé la solution dans MAC OS .

1) Déplacez vers votre dossier de projet

2) ls -al (pour afficher les fichiers cachés)

3) Déplacer vers le dossier .idea, commande: cd .idea

4) Déplacer vers le dossier libraries, commande: cd libraries /

5) Vous pouvez maintenant voir la liste de tous les fichiers XML pour vos bibliothèques ou vos fichiers JAR. Modifiez-le comme, vi open androidasync_2_1_7.xml

6) Dans l’éditeur, Pour insérer 

Press i 

Maintenant, vous voyez la balise <SOURCES />, nous devons fournir un chemin ici comme,

<SOURCES>
  <root url="file://$PROJECT_DIR$/androidasync/src/main/Java" />
</SOURCES>

Pour sortir 

Press Esc

    :wq //for exiting and saving
    :q! //for exiting without saving

7) Redémarrez le studio Android (il était parfois nécessaire de synchroniser le dégradé).

0
Ronak Mehta