webentwicklung-frage-antwort-db.com.de

Android Studio: So schließen Sie Javadoc an

Es könnte eine sehr triviale Frage sein, aber ich konnte keine Option finden, um Javadoc/source mit lokalen Jar-Abhängigkeiten (im libs-Ordner) in Android-Projekten zu verknüpfen. Ich kann nicht glauben, dass ich eine Stunde mit so einfachem Zeug verbracht habe :( 

Das Google-Suchergebnis beschreibt lediglich das Hinzufügen von Android-Dokumentation oder das Hinzufügen von Javadoc in Eclipse. Das ist nicht was ich suche!

56
Ashish Bindal

Ich habe gerade jetzt eine Lösung gefunden, da ich lange keine andere Lösung mehr finden konnte.

annehmen:

  1. ihr Name der Bibliothek lautet: libxxx.jar
  2. javadoc-Name ist docs.Zip 

im Ordner .idea/libraries finden Sie libxxx.xml. JAVADOC durch ersetzen 

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

dann Strg + Alt + Y, um das Projekt zu synchronisieren. (Nicht "Projekt mit Gradle-Dateien synchronisieren", es werden die Änderungen gelöscht.)

35
Jason Qi

Ich habe eine Möglichkeit gefunden und getestet, wie wir die Javadocs hinzufügen können, ohne sie nach einer Gradle-Synchronisierung zu verlieren.

  1. Klicken Sie mit der rechten Maustaste in Projektfenster> Externe Bibliotheken> lib-name.
  2. Klicken Sie auf Library propertiesLib props
  3. Klicken Sie auf Dokumentations-URL angeben
  4. Und geben Sie eine URL an. Für meine Maschine war es file:///opt/Android-sdk/extras/google/google_play_services/docs/referenceAdd doc url
  5. Das Ergebnis war: added jdoc
  6. Und nach einer Projektsynchronisierung konnte ich den Javadoc der google play-Dienstegoogle play services maps javadoc

Hinweis:

Dadurch wurde derselbe JAVADOC-Eintrag in der mit Jason identifizierten XML-Datei eingefügt, verschwindet jedoch nicht, nachdem eine Synchronisierung mit Gradle durchgeführt wurde

28
Matyas

Es ist möglich:

  1. Project structure öffnen
  2. Navigieren Sie zu der gewünschten Abhängigkeit
  3. Drücken Sie die Taste auf dem Screenshot und geben Sie den Ordner oder die Datei an

screenshot 1

Eine andere Möglichkeit, Quellen anzufügen:

  1. Steigen Sie aus der Bibliothek in die Klasse ein (Bewegen Sie die Maus über den Klassennamen und führen Sie CMD + Linksklick oder CMD + B aus.)
  2. Sie finden die dekompilierte Version des Klassenmenüs dort oben rechts im Editor "Quellen anhängen ..".

screenshot 2

17
Eugen Martynov

Ich hatte ein Problem mit der Antwort von Matyas, dass meine lokale .jar-Bibliothek in der Liste External Libraries nicht angezeigt wurde, da sie nur mit Maven angehängte Bibliotheken anzeigt.

Die Lösung wird hier erwähnt: https://code.google.com/p/Android/issues/detail?id=73087#c26

  1. Klicken Sie mit der rechten Maustaste auf die Registerkarte "Struktur" und aktivieren Sie "Split Mode" (Sie können die Registerkarten "Projekt" und "Struktur" gleichzeitig öffnen).
  2. Öffnen Sie gleichzeitig die Registerkarten "Projekt" und "Struktur".
  3. Wählen Sie auf der Registerkarte "Projekt" die Perspektive "Android" und dann Ihren Modulordner (z. B. "App").
  4. Im "Struktur" -Fenster sollten Sie nun eine Liste aller Bibliotheken einschließlich Ihrer lokalen * .jar-Datei sehen

Weiter wie in Antwort von Matyas:

  1. Klicken Sie mit der rechten Maustaste auf die gewünschte Bibliothek und wählen Sie "Bibliothekseigenschaften ...".
  2. Wenn Sie * .jar mit Javadocs lokal haben, können Sie die Schaltfläche "Hinzufügen" (grünes "+") drücken und nach der Datei auf der Festplatte suchen (Sie müssen den Pfad "file: //" nicht manuell eingeben).
8
Robyer

Immer noch eine aktuelle Ausgabe zu meinem Posting scheint es:

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

2
waynesford

Ich habe auch so viel Zeit damit verschwendet ... 

Hier ist eine gradle Aufgabe, die Quelle und Javadoc anhand der Orts-/Namenskonvention ermittelt und in den .idea-Dateien synchronisiert. Sie gehört in den Abschnitt allProjects der Root-Gradle-Datei. Wie erwartet erwartet Sie [Projektname] /libs/lib.jar neben lib-sources.jar und/oder lib-javadoc.jar . Wie in den Kommentaren erwähnt, müssen Sie, falls sich Ihre Javadocs nicht im Pfad "/" befinden, möglicherweise das Skript so ändern, dass "docs/html" am Ende von "jar: // $" hinzugefügt wird 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"
                        }
                    }
                }
            }
        }
    }
}

Wenn Sie jcenter oder mavencentral verwenden, sollten javadocs und sources für heruntergeladene jars funktionieren, ohne diese Task zu verwenden. Möglicherweise müssen Sie jedoch dies in jeder nicht-root-Datei angeben:

apply plugin: 'idea'

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

Nach einiger Untersuchung bin ich darauf gestoßen:

https://github.com/xujiaao/AARLinkSources

Funktioniert wie Magie!

1
zsolt.kocsi

Persönlich erfolgreich getestet!

1.Projektstruktur (Strg + Alt + Umschalttaste + s)

2. SDK-Speicherort

3.JDK-Standort

4.Entfernen Sie die Option "Embedded JDK (empfohlen)".

5.Wählen Sie Ihren eigenen jdk-Pfad aus (Mein Pfad: C:\Programme\Java\jdk1.8.0_111)

6.Synchronisiert (Strg + Alt + Y)

Erfolg

0
Savino

Es gibt eine Lösung, diese Prozedur erfolgt durch Terminal, 

Ich habe die Lösung in MAC OS getestet.

1) Wechseln Sie zu Ihrem Projektordner

2) ls -al (um versteckte Dateien anzuzeigen)

3) Wechseln Sie in den Ordner .idea, Befehl: cd .idea

4) Wechseln Sie in den Ordner libraries, Befehl: CD-Bibliotheken /

5) Jetzt können Sie eine Liste aller XML-Dateien für Ihre Libs oder Jars sehen. Bearbeiten Sie es wie vi open androidasync_2_1_7.xml

6) Im Editorbildschirm Zum Einfügen 

Press i 

Jetzt sehen Sie <SOURCES /> tag, wir müssen hier einen Pfad angeben, wie:

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

Zum Beenden 

Press Esc

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

7) Starten Sie das Android-Studio neu (irgendwann musste es auch synchronisieren).

0
Ronak Mehta