我正在使用AndroidStudio,并且具有如下所示的项目:
蓝色圆圈内的是myLib。myLib还需要使用红色圆圈内的外部库和apache包(绿色圆圈)。
所以我想将整个东西变成一个.jar,以便可以在其他项目中使用它。
我是开发人员领域的初学者,非常感谢您提供分步指南。
谢谢!
我正在使用AndroidStudio,并且具有如下所示的项目:
蓝色圆圈内的是myLib。myLib还需要使用红色圆圈内的外部库和apache包(绿色圆圈)。
所以我想将整个东西变成一个.jar,以便可以在其他项目中使用它。
我是开发人员领域的初学者,非常感谢您提供分步指南。
谢谢!
Answers:
上面的代码:
task deleteJar(type: Delete) {
delete 'libs/jars/logmanagementlib.jar'
}
task createJar(type: Copy) {
from('build/intermediates/bundles/release/')
into('libs/jars/')
include('classes.jar')
rename('classes.jar', 'logmanagementlib.jar')
}
createJar.dependsOn(deleteJar, build)
release
。我有debug
和default
,但没有release
文件夹。您正在使用哪个版本的插件?您知道这是否记录在任何地方吗?
release
文件夹。
如果您在Gradle中将代码设置为纯Java模块,那么让Gradle为您提供包含内容的jar文件真的很容易。该jar文件将仅包含您的代码,而不包含它依赖的其他Apache库。我建议以这种方式分发它;将依赖项捆绑到您的库中有点奇怪,对于那些库的用户来说,必须自己包括这些依赖项是更正常的(因为否则,那些项目的冲突已经链接了库的副本,也许是不同版本的)。此外,如果要发布库,则可以避免在重新分发他人代码时可能出现的许可问题。
将同样需要编译到jar中的代码,然后将其移动到Android Studio中的单独的纯Java模块中:
希望您的项目现在应该可以正常构建。完成构建后,用于Java库的jar文件将放置在模块目录中的build / libs目录中。如果要手动构建jar文件,可以从Gradle窗口运行其jar构建文件任务:
在Android Studio IDE中,通过以下方式访问“ 运行任何工具栏 ”:
CTRL+ CTRL+ gradle CreateFullJarRelease
+ENTER
之后,您将在项目的此文件夹中找到人工制品
Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar
Gradle 文件夹Task
的gradle侧面菜单中已经有一个用于此的对象other
。
然后向下滚动到createFullJarRelease
并单击它。
之后,您将在项目的此文件夹中找到人工制品
Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar
build\intermediates\intermediate-jars\release
classes.jar
,full.jar
和res.jar
。我是否应该在需要使用时导入所有jar文件?
只需将其添加到Java模块的build.gradle中即可。它将在存档中包含从属库。
mainClassName = "com.company.application.Main"
jar {
manifest {
attributes "Main-Class": "$mainClassName"
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
}
这将导致[module_name] / build / libs / [module_name] .jar文件。
当您编译/运行您的应用程序时,.jar文件将自动生成。
您可以从root_folder / app / build / intermediates / bundles / debug中找到您的class.jar文件
转到Android Studio中的Gradle选项卡,然后选择库项目。
然后转到任务
然后去其他
双击捆绑包
您可以.aar
在下面找到文件your_module/build/outputs/aar/your-release.aar
.jar
不做.aar
task deleteJar(type: Delete) {
delete 'libs/mylibrary.jar'
}
task exportjar(type: Copy) {
from('build/intermediates/compile_library_classes/release/')
into('libs/')
include('classes.jar')
rename('classes.jar', 'mylibrary.jar')
}
exportjar.dependsOn(deleteJar, build)
如果您从AndroidStudio运行gradle任务[更多]
assembleRelease
//or
bundleReleaseAar
或通过终端
./gradlew <moduleName>:assembleRelease
//or
./gradlew <moduleName>:bundleReleaseAar
那么你将能够找到.aar
的
<project_path>/build/outputs/aar/<module_name>.aar
//if you do not see it try to remove this folder and repeat the command
.aar
(Android库)文件由.jar
(Java库)文件和其他Android资源组成。.aar
文件是一个带有aar扩展名的zip文件,这就是为什么您可以替换.aar
为.zip
或运行该文件的原因
unzip "<path_to/module_name>.aar"