让我们一次一个地回答问题:
1) 我可以将哪个直接添加到 app/libs 文件夹中
那将是*.aar 文件。 .aar 文件包含您在库中定义的编译代码和其他资源(例如 XML 文件)。
AAR 代表 Android 存档。它是 Android 新的库二进制格式,相当于 Java 世界中的 *.jar。 (见this)
不过,这仅包含已编译的代码。没有 javadoc,没有来源。
2) 上传到 bintray.com 的文件有什么区别?
让我们一个一个地处理每个文件:
1。 <library name>.pom
这是一个 XML 文件,用于存储有关您的图书馆的元数据。
通常,它存储以下内容:
- 您的工件的名称(例如
mylibrary)
- 发布工件的组(即组织)(例如
com.myname.mycompany)
- 库的版本(即 0.0.4)
-
packaging - 定义二进制文件的类型(aar
Android 库,war 用于某些 Java 库等)
- 库的一个或多个依赖项
POM 文件只是 Maven 存储库的标准元数据文件。还有其他类型的存储库,例如Ivy repositories,它们对其元数据使用其他 XML 格式:Ivy.xml files。
由于您的存储库是 Maven 存储库,因此元数据存储在 -pom.xml 文件中。
2。 <library name>.aar
如上所述,它存储已编译的 Java/Kotkin 代码。还包含各种Android资源,如Strings、Drawables、Layout文件、主题、样式等。
详情请见here。
3。 library name>-javadoc.jar
存储使用javadoc 工具(或dokka,如果您使用 Kotlin)从您的代码生成的 HTML 文档文件。
这只是一个存档,而不是可执行文件。你可以用 Total Commander 或 WinRar 打开它并查看它的内容。
4。 library name>-sources.jar
包含您的图书馆的来源。这又只是一个存档,而不是可执行文件。
它包含您实际的 *.java 或 *.kotlin 文件,并带有 cmets。有了这个文件,你的库的客户就可以正确地看到你的代码,逐行遍历它,并更好地理解你的代码做了什么。
这也是当有人打开您的库的某个类的文档时 IDE 会读取的文件,以向您显示 IDE 中该类的文档。如果没有此文件,他们将不得不使用在线文档或查看来自<library-name>-javadoc.jar 的文件。
如果你的库不是开源的并且有专有代码,请小心:不要同时发布源代码!
5。 <library-name>.<extension>.asc
这是由 Bintray 生成的文件,以保证您是上传该文件的人。这就是为什么您的所有文件都有一个*.asc 核心响应者。
将其视为每个文件的数字签名。它实际上是由您链接的教程的“第 3 部分”中的步骤创建的。如果您跳过第 3 部分,则不会生成任何 `.asc 文件。
3) 如何在不使用make命令gradlew bintrayUpload的情况下找到MyProject中的文件?
*.pom
我假设您使用的是 Bintray Gradle 插件,因为您提到了 bintrayUpload 任务。
在你的 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 文档文件。
- 第二个任务获取 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在您上传文件后生成的。无需在本地生成。
希望这会有所帮助!