Android Studio 中将 AAR 包发布到 Maven 本地仓库

目录

1. 配置 build.gradle.kts(或 build.gradle)

2. 配置 publishing 任务

3. 发布到本地 Maven 仓库

3.1 Could not find method publications() for arguments...

3.2 bash: ./gradlew: Permission denied

3.3 Android Gradle plugin requires Java 17 to run. You are currently using Java 11.

 4. 使用发布的 AAR 依赖

往期推荐


        在 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 IdleHandler 原理解析与应用场景-CSDN博客文章浏览阅读1.3k次,点赞64次,收藏48次。IdleHandler 是 Android MessageQueue 机制中的一个接口,允许在主线程空闲时执行任务。本文详细解析 IdleHandler 的工作原理,包括 MessageQueue 结构、触发时机及其使用方法。同时,我们探讨了 IdleHandler 的应用场景,如延迟初始化、资源回收和数据预加载等,并分析了其优缺点。合理使用 IdleHandler 可以优化应用性能,提高用户体验。本文将帮助开发者深入理解 IdleHandler 并在实际开发中灵活运用。 https://shuaici.blog.csdn.net/article/details/146064835Android Media3 ExoPlayer 开发全攻略:从基础集成到高级功能实战-CSDN博客文章浏览阅读808次,点赞25次,收藏16次。本文系统讲解如何利用 Android Media3 ExoPlayer 构建高性能流媒体播放器。作为 Google 新一代媒体框架的核心组件,ExoPlayer 凭借对 HLS/DASH 等协议的原生支持、自适应码率优化及模块化架构,成为复杂媒体场景的首选方案。文章从依赖配置入手,详细演示播放器初始化、视图绑定与基础播放控制逻辑,并提供 Kotlin 代码实例。 https://shuaici.blog.csdn.net/article/details/146093650

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅次

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值