上传到 bintray.com 的文件有什么区别?

What is the difference between Files uploaded to bintray.com?

我通过 the tutorial 将我的库上传到 bintray.com,现在 "Files" 选项卡中存在文件列表。

1) 哪一个可以直接添加到app/libs文件夹

2) 上传到 bintray.com 的文件有什么区别?

3) 不用make命令如何在MyProject中查找文件gradlew bintrayUpload?

*-javadoc.jar 
*-javadoc.jar.asc 
*-sources.jar 
*-sources.jar.asc 
*.aar 
*.aar.asc 
*.pom 
*.pom.asc

让我们一次回答一个问题:

1) Which one can I add directly to app/libs folder

那将是 *.aar 文件。 .aar 文件包含您在库中定义的已编译代码和其他资源(例如 XML 文件)。

AAR 代表 Android 存档。它是 Android 库的新二进制格式,相当于 Java 世界中的 *.jar。 (参见 this

尽管这只包含编译后的代码。没有 javadoc,没有来源。

2) What is the difference between Files uploaded to bintray.com?

让我们一个一个地处理每个文件:

1。 <library name>.pom

这是一个 XML 文件,用于存储关于您的图书馆的元数据。

通常,它存储以下内容:

  • 你的神器名称(例如mylibrary
  • 发布工件(例如 com.myname.mycompany)
  • 你的库的版本(即 0.0.4)
  • packaging - 定义二进制文件的文件类型(它是 aar Android 图书馆,war 某些 Java 图书馆等)
  • 你的库的一个或多个依赖项

POM files are just the standard metadata file for Maven repositories. There are other types of repositories, such as Ivy repositories, which use other XML formats for their metadata: Ivy.xml files.

由于您的存储库是 Maven 存储库,因此元数据存储在 -pom.xml 文件中。

2。 <library name>.aar

如上所述,这存储编译后的 Java/Kotkin 代码。还包含各种 Android 资源,例如字符串、可绘制对象、布局文件、主题、样式等。

有关详细信息,请参阅 here

3。 library name>-javadoc.jar

存储 HTML 使用 javadoc 工具(或 dokka 如果您使用 Kotlin)从您的代码生成的文档文件。

这只是一个存档,不是可执行文件。您可以使用 Total Commander 或 WinRar 打开它并检查其内容。

4。 library name>-sources.jar

包含您的图书馆的资源。这又只是一个存档,而不是可执行文件。

它包含您实际的 *.java*.kotlin 文件,并附有注释。有了这个文件,您图书馆的客户就可以正确地查看您的代码,逐行检查它,并更好地理解您的代码的作用。

这也是当有人打开您图书馆的 class 的文档时 IDE 读取的文件,向您展示 class 的文档IDE。如果没有此文件,他们将不得不使用联机文档或查看来自 <library-name>-javadoc.jar.

的文件

如果您的库不是开源的并且有专有代码,请小心:不要同时发布源代码!

5。 <library-name>.<extension>.asc

这是一个由 Bintray 生成的文件,保证您是上传该文件的人。这就是为什么您所有的文件都有一个 *.asc 共同响应者。

将其视为每个文件的数字签名。它实际上是根据您链接的教程 "Part 3" 中的步骤创建的。如果您跳过第 3 部分,则不会生成 `.asc 文件。

3) How to find the files in MyProject without make command gradlew bintrayUpload?

*.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 个任务:

  1. 一项任务在您的 classes 上调用 javadoc 工具,以从代码中存在的文档生成 HTML 文档文件。
  2. 第二个任务获取 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 在您上传文件后生成的。无需在本地生成它们。

希望对您有所帮助!