我一直在尝试使用 gradle 来创建我的库模块(我正在构建的 SDK)的 jar 来完成此任务。
task sourcesJar(type: Jar) {
archiveName='here.jar'
from android.sourceSets.main.java.sourceFiles
}
jar 已创建,该项目有 4 个类,它们都位于带有 .java 扩展名的 jar 中。
jar tvf 的输出
0 Thu Oct 30 19:37:00 CET 2014 META-INF/
25 Thu Oct 30 19:37:00 CET 2014 META-INF/MANIFEST.MF
0 Wed Oct 15 18:31:24 CEST 2014 com/
0 Thu Oct 30 16:57:36 CET 2014 com/bastly/
0 Thu Oct 30 18:57:38 CET 2014 com/bastly/SDK/
357 Thu Oct 30 16:57:30 CET 2014 com/bastly/SDK/BasicWrapper.java
430 Thu Oct 30 16:57:30 CET 2014 com/bastly/SDK/MessagePayload.java
284 Thu Oct 30 16:57:30 CET 2014 com/bastly/SDK/MobaseMessage.java
4997 Thu Oct 30 18:57:38 CET 2014 com/bastly/SDK/RTmobase.java
267 Thu Oct 30 16:57:22 CET 2014 com/bastly/SDK/RTmobaseCallbacks.java
365 Thu Oct 30 16:57:30 CET 2014 com/bastly/SDK/UserWrapper.java
当我在另一个项目中添加这个jar并添加到gradle构建时,它出现并且我可以看到所有java类,但是RTmobase的主类使用RTmovaseCallback类,并且似乎找不到它并且android studio说:
无法解析符号“RTmovaseCallback”
public class RTmobase <T,S> {
private Socket socket = null;
private String apiKey;
private String userName;
private RTmobaseCallbacks cb;
...
这与 jar 任务有关吗?与应包含在 MANIFEST.MF 中的类路径?我不知道我错过了什么,但我有点卡住了。
如有任何帮助,我们将不胜感激。 谢谢。
最佳答案
使用它(请参阅from
中的更改)
task sourcesJar(type: Jar) {
archiveName='here.jar'
from android.sourceSets.main.output
}
这应该创建带有类的 jar。请参阅 Gradle User Guide 中的第 27.7.3 节例如 Gradle User Guide是一个很好的起点。
关于java - 使用 gradle 创建 jar,导入类时无法看到同一包中的其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661182/