如何使用* class文件生成android库的.jar?

问题描述

目前我的gradle任务如下:

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
...
}

task sourcesJar(type: Jar) {
        getArchiveClassifier().set('sources')
        from android.sourceSets.main.java.sourceFiles
    }

artifacts {
        archives sourcesJar
    }

但是结果jar工件有*.java*.kt文件,但是如何用*.class文件生成jar工件?

enter image description here

解决方法

根据您的屏幕截图,您正在打开xxx-sources.jar文件。当然,它内部仅包含Java源文件。如下配置,这是正确的结果:

task sourcesJar(type: Jar) {
    getArchiveClassifier().set('sources')
    from android.sourceSets.main.java.sourceFiles
}

您的班级文件通常位于另一个jar文件中。您没有指定要执行的任务。因此,假设您运行默认的Android构建任务,它将生成aar文件,其中应包含您的模块类文件。您可以解压缩sapi-1.6.aar进行检查。

您也可以参考此doc

已更新:

您没有指定为什么需要Jar文件而不是AAR文件,假设您要在其他项目中使用Jar文件,那么您需要使用其他gradle插件进行构建(不能使用{{1} } gradle插件),它可以是androidjava gradle插件。有人回答说,您可以在aar文件中找到jar文件,可以检查this

,

在命令行中,您只需输入:

jar uf0 path_to_your_jar_file\yourJarFile.jar path_to_your_classes\*.class

当然,如果您不想添加该目录中的所有类,则可以使用类名而不是通配符(*)。

jar --help

将为您提供更多选择。