Android Studio将AAR包发布到Maven本地仓库的流程步骤
作者:帅次
在 Android Studio 中将 AAR 包发布到 Maven 本地仓库,通常涉及以下几个步骤,环境如下:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip classpath 'com.android.tools.build:gradle:8.7.0'
1. 配置 build.gradle.kts(或 build.gradle)
在 library 模块的 build.gradle.kts(或 build.gradle)中,添加以下 Maven 发布插件:
plugins {
    id 'com.android.library'//打lib包
    id 'maven-publish'
}对于 build.gradle(Groovy 版本),可以这样添加:
apply plugin: 'maven-publish'
2. 配置 publishing 任务
在 build.gradle.kts 文件中,添加以下 publishing 配置:
publishing {
    publications {
        create<MavenPublication>("release") {
            from(components["release"])
            groupId = "com.shuaici.lib"
            artifactId = "scc"
            version = "1.0.0"
        }
    }
}对于 build.gradle(Groovy),使用:
publishing {
    publications {
        release(MavenPublication) {
            from components.release
            groupId = 'com.shuaici.lib'
            artifactId = 'scc'
            version = '1.0.0'
        }
    }
}3. 发布到本地 Maven 仓库
运行以下代码:
./gradlew publishToMavenLocal

这将在 ~/.m2/repository/com/yourcompany/library/your-library/1.0.0/ 目录下生成 AAR 文件。例如我刚才打包的地址为~/.m2/repository/com/shuaici/lib/scc/1.0.0/,这个是隐藏文件夹。
这个地址是可以自定义的,但是不推荐修改。
这里容易遇到问题,没遇到还好,遇到了那就需要解决一下了。
3.1 Could not find method publications() for arguments...
说明 publications {} 这个部分在 android {} 里面不被识别。
解决方案:移动 publications {} 代码到 afterEvaluate {} 里
在 com.android.library 插件的 Gradle 7.0+ 版本中,publications {} 不能直接放在 android {} 代码块里,需要在 afterEvaluate {} 里定义:
plugins {
    id 'com.android.library'
    id 'maven-publish'
}
 
android {
    namespace 'com.shuaici.lib'
    。。。。。。
}
 
// 这里用 `afterEvaluate`,避免 `publications {}` 出错
afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                groupId = 'com.shuaici.lib'
                artifactId = 'scc'
                version = '1.0.0'
            }
        }
    }
}为什么要用 afterEvaluate?
publications {}需要components.release,但android {}还没完全加载时,components.release可能为空,导致 Gradle 解析失败。afterEvaluate {}确保android {}配置完成后再执行publications {},避免components.release为空的问题。
3.2 bash: ./gradlew: Permission denied
这表示 gradlew 脚本没有执行权限。可以按照以下方法解决:
1. 运行 chmod +x gradlew
2. ./gradlew publishToMavenLocal
3. 如果还是报错,尝试使用 sh ./gradlew publishToMavenLocal
3.3 Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
解决方案:
1. 临时切换 Java 版本 ;
2. 永久修改 Java 版本;
3. 在 gradle.properties 指定 Java 版本:
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.0.9.jdk/Contents/Home
如果不清楚自己放的位置,可通过以下方式找到。

4. 使用发布的 AAR 依赖
如果你想在 另一个项目 中使用这个 AAR,编辑 build.gradle:
repositories {
    mavenLocal()  // 让 Gradle 从本地 Maven 仓库查找依赖
    mavenCentral()  // 远程 Maven 仓库(如果本地找不到,会去这里找)
}
 
dependencies {
    implementation 'com.shuaici.lib:scc:1.0.0'  // 依赖本地仓库发布的 AAR
}然后你就正常调用SDK中的内容就行了。
以上就是Android Studio将AAR包发布到Maven本地仓库的流程步骤的详细内容,更多关于Android Studio AAR包发布到Maven的资料请关注脚本之家其它相关文章!
