如何让Android Gradle项目优先依赖AAR而非JAR包?
如何在Android库项目中同时生成AAR和JAR包?
如果你的Android库项目(比如my-lib)没有包含任何Android资源,想要同时保留默认生成的AAR包,额外生成方便其他非Android系统(比如纯Java/Kotlin项目)使用的JAR包,可以通过修改库模块的build.gradle文件来实现。
直接在你的库模块build.gradle(注意不是项目根目录的那个)中添加以下配置:
android.libraryVariants.all { variant -> def name = variant.buildType.name def task = project.tasks.create "jar${name.capitalize()}", Jar task.dependsOn variant.javaCompile task.from variant.javaCompile.destinationDir artifacts.add('archives', task); }
这段配置的具体作用:
- 遍历项目中所有的库构建变体(通常是
debug和release两种) - 为每个变体创建一个专属的Jar打包任务,命名规则是
jarDebug、jarRelease,方便区分不同构建类型的产物 - 让Jar任务依赖于对应变体的Java编译任务,确保只有当代码编译完成后才会执行打包操作,避免产物缺失
- 指定Jar包的内容来源是Java编译后的class文件目录,保证打包的是最新编译的代码
- 将生成的Jar包添加到项目的归档产物集合中,这样执行构建后就能在标准输出目录找到它
后续验证:
执行构建命令(比如./gradlew assemble)后,打开库模块的build/libs目录,你会看到:
- 默认生成的AAR包:
my-lib-debug.aar、my-lib-release.aar - 额外生成的JAR包:
my-lib-debug.jar、my-lib-release.jar
因为你的库没有Android资源,生成的JAR包包含了所有业务逻辑代码,完全可以直接给其他纯Java/Kotlin项目引入使用。
内容的提问来源于stack exchange,提问作者satur9nine
相关产品推荐
相关产品推荐

