【问题标题】:How to generate .jar of android library with *class files?如何使用 *class 文件生成 .jar 的 android 库?
【发布时间】:2020-12-31 22:34:10
【问题描述】:

目前我的 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 artifact 有 *.java*.kt 文件,但是如何生成带有 *.class 文件的 jar artifact?

【问题讨论】:

    标签: java android jar javac


    【解决方案1】:

    根据您的屏幕截图,您正在打开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插件来构建(不能使用androidgradle插件),它可以是javabase gradle 插件。有人回答说,你可以在aar文件中找到jar文件,你可以查看this

    【讨论】:

      【解决方案2】:

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

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

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

      jar --help
      

      会给你更多的选择。

      【讨论】:

        猜你喜欢
        • 2013-10-31
        • 2018-03-30
        • 2013-11-26
        • 1970-01-01
        • 2014-07-15
        • 1970-01-01
        • 2017-05-20
        • 1970-01-01
        • 2013-10-26
        相关资源
        最近更新 更多