Android Studio将AAR包发布到Maven本地仓库的流程步骤

 更新时间:2025年03月20日 10:12:14   作者:帅次  
Android AAR文件是Android Archive文件的缩写,是一种Android应用程序存档文件格式,类似于JAR文件格式,它在Android Studio中被广泛使用,本文给大家介绍了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的资料请关注脚本之家其它相关文章!

相关文章

  • android 实现圆角图片解决方案

    android 实现圆角图片解决方案

    现在我们就来看看怎么样把图片的四角都变成圆形的,为什么要这样做那,可能是为了美化界面吧,下面我们就来看看代码吧
    2012-11-11
  • Android GridView简单实例

    Android GridView简单实例

    这篇文章主要为大家详细介绍了Android GridView简单实例,简单实现九宫格效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Android设置重复文字水印背景的方法

    Android设置重复文字水印背景的方法

    这篇文章主要为大家详细介绍了Android设置重复文字水印背景的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Kotlin中的密封类和密封接口及其应用场景

    Kotlin中的密封类和密封接口及其应用场景

    在Kotlin中,密封类和密封接口是用于表示受限类型层次结构的特殊类和接口。密封类和密封接口可以在一定程度上限制类型的继承层次,使编译器能够更好地检测代码中的错误,并增强代码的可读性和可维护性
    2023-05-05
  • 一文详解Android FCM接入

    一文详解Android FCM接入

    这篇文章主要为大家介绍了Android FCM接入详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)

    Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)

    a标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作;但如果读者想在单击链接时执行任意自定义的动作,那么将要介绍的一定是你想要的了
    2013-01-01
  • Android编程实现简单的UDP Client实例

    Android编程实现简单的UDP Client实例

    这篇文章主要介绍了Android编程实现简单的UDP Client,结合实例形式分析了Android实现UDP Clinet客户端的实现技巧,需要的朋友可以参考下
    2016-04-04
  • 浅谈Android插件化

    浅谈Android插件化

    插件化技术最初源于免安装运行 Apk的想法,这个免安装的 Apk 就可以理解为插件,而支持插件的 app 我们一般叫 宿主,下面就跟着小编一起学习Android插件化吧,希望能帮助到你
    2021-09-09
  • Java和Android的LRU缓存及实现原理

    Java和Android的LRU缓存及实现原理

    本文主要介绍 Java和Android的LRU缓存及实现原理,这里整理了详细的资料,有兴趣的小伙伴可以参考下便于学习理解
    2016-08-08
  • Android基于TextView不获取焦点实现跑马灯效果

    Android基于TextView不获取焦点实现跑马灯效果

    这篇文章主要介绍了Android基于TextView不获取焦点实现跑马灯效果,结合实例形式分析了Android基于TextView实现跑马灯的功能与布局相关技巧,需要的朋友可以参考下
    2017-02-02

最新评论