如何使用Gradle构建Android AAR并配置Jenkins自动构建
Android Library独立构建AAR及Jenkins自动化配置方案
1. 修复Plugin [id: 'com.android.library'] was not found报错
出现这个报错的核心原因是Gradle没有从对应仓库找到Android Library插件,需要修正项目根目录和库模块的Gradle配置:
根目录settings.gradle配置示例
pluginManagement { repositories { google() // 必须配置,Android官方插件都存放在该仓库 mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() // 依赖库拉取也需要该仓库配置 mavenCentral() } } // 引入你的库模块,示例中库模块名为mylibrary,替换为你实际的模块名 include ':mylibrary'
库模块build.gradle配置示例(模块根目录下)
plugins { // 注意库必须用com.android.library插件,不能用应用的com.android.application id 'com.android.library' } android { namespace "com.yourpackage.mylibrary" // 替换为你库的实际包名 compileSdk 34 // 替换为你实际使用的编译SDK版本 defaultConfig { minSdk 21 // 替换为你库支持的最低SDK版本 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" } buildTypes { release { minifyEnabled false // 如需混淆可以改为true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { // 你的库所需依赖写在此处 }
2. 本地独立构建AAR命令
配置完成后,无需依托虚拟应用项目,直接在库项目根目录执行对应命令即可生成AAR:
- Windows系统:
gradlew.bat :mylibrary:assembleRelease - macOS/Linux系统:
./gradlew :mylibrary:assembleRelease
构建成功后,Release版AAR会生成在库模块目录/build/outputs/aar/mylibrary-release.aar路径下,如需Debug版AAR,将命令中的assembleRelease替换为assembleDebug即可。
3. Jenkins自动构建配置
前置环境配置
- Jenkins节点安装JDK11及以上版本(适配AGP7.0+,如使用更低版本AGP可对应调整JDK版本)
- Jenkins节点安装Android SDK,配置
ANDROID_HOME全局环境变量,提前安装项目用到的compileSdk、buildTools对应版本
任务配置步骤
- 新建自由风格Jenkins任务,源码管理栏配置你的代码仓库地址及需要监听的分支
- 构建触发器选择对应代码仓库的推送触发规则(如GitHub选
GitHub hook trigger for GITScm polling、GitLab选对应GitLab触发规则),实现代码更新时自动触发构建 - 新增构建步骤,选择执行shell(Linux/macOS节点)或执行Windows批处理(Windows节点),输入对应构建AAR的命令
- 新增构建后操作,选择「归档成品」,填写AAR路径规则
**/build/outputs/aar/*.aar,构建成功后可直接在Jenkins任务页下载生成的AAR文件
注意:不要将本地的
local.properties文件提交到代码仓库,Jenkins会自动识别节点配置的ANDROID_HOME环境变量,无需额外配置SDK路径。
内容的提问来源于stack exchange,提问作者eimmer
相关产品推荐
相关产品推荐

