我有一个gradle任务,需要创建一个jar文件,其中包含Java的源文件,以便在Android aar库中包含这些文件作为JNI到C++库的Javadoc。我无法弄清楚如何仅“包括”jar文件而不编译其中的文件。似乎jar文件中的Java文件已被编译,这对我没有帮助——我只想“包括”它们,以便开发人员可以使用该aar包。创建的jar文件包含所有源代码,并位于输出aar内的其libs目录中,但其没有内容。我该如何将Java源添加到我的aar中?
"Jar creation" 请按照以下方式创建Jar文件,并将其放置于模块的build/libs文件夹中。
输出的jar包中包含以下内容:
"Jar creation" 请按照以下方式创建Jar文件,并将其放置于模块的build/libs文件夹中。
task generateMySources(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives generateMySources
}
preBuild.dependsOn(":myModule:generateMySources")
dependencies {
// The jar is included but it is empty inside the aar.
compile files('build/libs/myModule-sources.jar')
}
输出的jar包中包含以下内容:
.
├── com
│ └── my
│ └── app
│ └── jni
│ ├── File1.java
│ ├── File2.java
│ ├── File3.java
│ └── File4.java
└── META-INF
└── MANIFEST.MF // Contains "Manifest-Version: 1.0" only.
这个 Jar 文件存在于 aar 文件中的 libs
目录下,但现在它是空的。
PK ENO ACK NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL NUL
,而使用记事本则会显示PK
。在Linux shell中执行less
命令会显示PK^E^F^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
。因此这些输出可能并不是很有用。 - Krøllebølle