我通过the tutorial将我的库上传到bintray.com,现在“文件”标签中存在文件列表。
1)我可以直接将哪个添加到app/libs
文件夹
2)上传到bintray.com的文件有什么区别?
3)如何在没有make命令gradlew bintrayUpload
的情况下在MyProject中查找文件?
*-javadoc.jar
*-javadoc.jar.asc
*-sources.jar
*-sources.jar.asc
*.aar
*.aar.asc
*.pom
*.pom.asc
答案 0 :(得分:7)
让我们一次回答一个问题:
1)我可以直接将哪一个添加到app / libs文件夹
那将是*.aar
文件。 .aar
文件包含您在库中定义的编译代码和其他资源(例如XML文件)。
AAR 代表 Android存档。这是Android的新库二进制格式,等效于Java世界中的*.jar
。 (请参阅this)
尽管其中仅包含编译后的代码。没有javadoc,没有资源。
2)上传到bintray.com的文件有什么区别?
让我们逐个处理每个文件:
<library name>.pom
这是一个XML文件,用于存储有关您的库的元数据。
通常,它存储以下内容:
mylibrary
)com.myname.mycompany
)packaging
-定义二进制文件是哪种文件类型(对于aar
Android库,war
用于某些Java库,等等)POM文件只是Maven存储库的标准元数据文件。还有其他类型的存储库,例如Ivy repositories,它们对元数据使用其他XML格式:Ivy.xml files。
由于您的存储库是Maven存储库,因此元数据存储在-pom.xml
文件中。
<library name>.aar
如上所述,它存储已编译的Java / Kotkin代码。还包含各种Android资源,例如字符串,可绘制对象,布局文件,主题,样式元素等。
有关详细信息,请参见here。
library name>-javadoc.jar
存储使用javadoc
工具(或dokka
,如果使用Kotlin)从代码生成的HTML文档文件。
这只是一个存档,不是可执行文件。您可以使用Total Commander或WinRar打开它并检查其内容。
library name>-sources.jar
包含您的库的源。这又只是一个存档,而不是可执行文件。
它包含您的实际*.java
或*.kotlin
文件,并带有注释。拥有此文件后,您的库的客户就可以正确地查看您的代码,逐行浏览它,并更好地了解您的代码做什么。
这也是当有人打开您的库的类的文档时,IDE会读取的文件,以向您显示该类在IDE中的文档。没有此文件,他们将不得不使用在线文档或查看<library-name>-javadoc.jar
中的文件。
如果您的库不是开源的并且具有专有代码,请小心:也不要发布源代码!
<library-name>.<extension>.asc
这是Bintray为保证 生成的文件,您是上载该文件的人。这就是为什么您的所有文件还具有*.asc
corespondent的原因。
将其视为每个文件的数字签名。它实际上是由您链接的教程的“第3部分”中的步骤创建的。如果您跳过第3部分,则不会生成` .asc 文件。
3)如何在不使用make命令gradlew bintrayUpload的情况下在MyProject中查找文件?
*.pom
由于您提到了bintrayUpload
任务,因此我认为您正在使用Bintray Gradle插件。
在gradle文件中的某处,您应该具有以下内容:
publishing {
publications {
MyPublicationName(MavenPublication) {
...
}
}
}
这定义了名为MyPublicationName
的发布对象。
借助Bintray Gradle插件,您应该可以执行以下任务:generatePomFileForMyPublicationNamePublication
。
因此要生成*.pom
,必须运行:
./gradle generatePomFileForMyPublicationNamePublication
将MyPublicationName
替换为您为出版物定义的名称。
*.aar
./gradle :moduleName:assembleRelease
只需将moduleName
替换为库模块的名称。
*-sources.jar
您需要定义一个任务,该任务将您的源文件存档在jar中。我的看起来是这样的:
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
然后您可以致电:
./gradle :moduleName:sourcesJar
与以前一样,将moduleName
替换为库模块的名称。
*-javadoc.jar
您通常需要为此定义2个任务:
javadoc
工具,以从代码中提供的文档中生成HTML文档文件。.jar
文件中(就像我们对sources.jar文件所做的一样)我的设置以以下方式显示:
//generates HTML files from the documentation present in your source files
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
failOnError false
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
//takes the generated html documentation files, and archives them in a jar
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
然后调用:
./gradle :moduleName:javadocJar
您就定了!另外,将moduleName
替换为库模块的名称。
*.asc
这些文件实际上是由Bintray在您上传文件后 生成的。无需在本地生成它们。
希望这会有所帮助!