可能是非常琐碎的问题,但我找不到任何选项来附加本地jar依赖项(位于libs文件夹中)的javadoc/source到Android项目中。我无法相信我已经在处理这么简单的事情上花费了一小时:(
谷歌搜索结果只是告诉如何添加安卓文档或在eclipse中添加javadoc。那不是我正在寻找的!
可能是非常琐碎的问题,但我找不到任何选项来附加本地jar依赖项(位于libs文件夹中)的javadoc/source到Android项目中。我无法相信我已经在处理这么简单的事情上花费了一小时:(
谷歌搜索结果只是告诉如何添加安卓文档或在eclipse中添加javadoc。那不是我正在寻找的!
我刚刚找到了一个解决方案,因为我长时间找不到其他的解决方案。
假设:
在文件夹 .idea/libraries 下,你可以找到 libxxx.xml 文件。将 JAVADOC 替换为
<JAVADOC>
<root url="jar://C:/yourpath/doc.zip!/" />
</JAVADOC>
然后按下ctrl+alt+y同步项目。(不要选择“Sync Project with Gradle files”,否则会删除更改)
file:///opt/android-sdk/extras/google/google_play_services/docs/reference
这将在由Jason标识的xml中放置相同的JAVADOC条目,但在使用gradle进行同步后不会消失。
可以这样操作:
项目结构
另一种附加源代码的方法:
我的问题是我在“外部库”列表中没有看到本地的 .jar 库,因为它只显示了Maven附加的库,需要解决。
解决方法在这里提到:https://code.google.com/p/android/issues/detail?id=73087#c26
按照Matyas的答案继续:
我也在这上面浪费了很多时间...
下面是一个Gradle任务,它通过位置/命名约定查找源代码和Javadoc,并在同步时将它们注册到.idea文件中。它属于根Gradle文件的allProjects部分。原样情况下,它期望在[projectname]/libs/lib.jar旁边找到lib-sources.jar和/或lib-javadoc.jar。此外,如注释所述,如果您的Javadoc未在jar文件内的“/”路径下,则可能需要更改脚本以在"jar://$doc!/"的末尾添加“docs / html”(例如)。
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"
}
}
}
}
}
}
}
apply plugin: 'idea'
idea{
module {
downloadJavadoc = true
downloadSources = true
}
}
个人测试成功!
1.项目结构(ctrl+alt+shift+s)
2.SDK位置
3.JDK位置
4.取消勾选“使用嵌入式JDK(推荐)”
5.选择您自己的jdk路径(我的路径:C:\Program Files\Java\jdk1.8.0_111)
6.Synchronized(ctrl+alt+y)
有一个解决方案,这个过程是通过终端进行的,
我已经在MAC OS上测试了解决方案。
1)移动到您的项目文件夹
2)ls -al
(显示隐藏文件)
3)移动到.idea
文件夹,命令:cd .idea
4)移动到libraries
文件夹,命令:cd libraries/
5)现在您可以看到所有库或jar的xml文件列表。像这样编辑它:vi open androidasync_2_1_7.xml
6)在编辑器屏幕中,插入以下内容
Press i
<SOURCES />
标签,我们必须在这里提供一个路径,比如,<SOURCES>
<root url="file://$PROJECT_DIR$/androidasync/src/main/java" />
</SOURCES>
Press Esc
:wq //for exiting and saving
:q! //for exiting without saving
7) 重新启动Android Studio(有时还需要同步Gradle)。
在Android Studio中,如果您在build.gradle中使用compileSdkVersion 23
并且已经下载了SDK 23文档文件和源文件,在SDK管理器
中,Android API和Java API的文档和源文件将自动显示,您无需手动设置。
<root url="jar://$PROJECT_DIR$/app/libs/LibraryName.jar!/" />
。 - bobasti