问题描述
目前我的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工件?
解决方法
根据您的屏幕截图,您正在打开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插件),它可以是android
或java
gradle插件。有人回答说,您可以在aar文件中找到jar文件,可以检查this。
在命令行中,您只需输入:
jar uf0 path_to_your_jar_file\yourJarFile.jar path_to_your_classes\*.class
当然,如果您不想添加该目录中的所有类,则可以使用类名而不是通配符(*)。
jar --help
将为您提供更多选择。