返回

Flutter模块与Maven仓库的完美邂逅:上传指南

Android

将 Flutter 模块打包成 aar 并上传至 maven 仓库的终极指南

在混合开发的广阔舞台上,Flutter 凭借其跨平台魅力,与原生应用携手共舞,奏响了协同创新的华美乐章。为了降低 Flutter 的学习门槛,不少团队选择将 Flutter 模块打包成 aar,供宿主工程直接依赖。然而,如何将精心打造的 aar 包顺利上传至 maven 仓库,却是一道绕不开的难题。本文将化身为你的指路明灯,带领你踏上上传 aar 包的康庄大道。

搭建本地 maven 仓库

如同建造房屋需要坚实的地基,在上传 aar 包之前,我们需要搭建一个属于自己的本地 maven 仓库。Sonatype Nexus 是一款广受认可的仓库管理工具,它将成为我们本次搭建的基石。

  • 安装 Nexus

访问 Sonatype 官网(https://www.sonatype.com/),下载并安装 Nexus。

  • 配置 Nexus

启动 Nexus 后,创建新的仓库。仓库类型选择"hosted",仓库 ID 可以自定义,如"my-flutter-repo"。

配置 Flutter 模块的 maven 元数据

为了让 Maven 仓库识别我们的 aar 包,我们需要在 Flutter 模块的 build.gradle 文件中配置 maven 元数据。

  • 添加 maven 插件
apply plugin: 'maven-publish'
  • 设置 maven 仓库信息
publishing {
    publications {
        release(MavenPublication) {
            groupId = 'com.example'
            artifactId = 'flutter-module'
            version = '1.0.0'
        }
    }
    repositories {
        maven {
            url = "http://localhost:8081/repository/my-flutter-repo/"
        }
    }
}

上传 aar 包

一切都已准备就绪,让我们将 aar 包上传至本地 maven 仓库吧!

  • 执行发布任务
./gradlew publish
  • 检查仓库

Nexus 界面中,刷新仓库列表,即可看到我们上传的 aar 包。

在宿主工程中使用 aar 包

现在,aar 包已经安然躺卧在 maven 仓库中,是时候让宿主工程尽享其便捷了。

  • 添加 maven 依赖

在宿主工程的 build.gradle 文件中添加 maven 依赖。

dependencies {
    implementation 'com.example:flutter-module:1.0.0'
}
  • 导入 Flutter 模块

在宿主工程中导入 Flutter 模块。

import io.flutter.embedding.android.FlutterActivity

总结

通过搭建本地 maven 仓库,配置 Flutter 模块的 maven 元数据,并将其上传至仓库,我们成功实现了 Flutter 模块与 maven 仓库的无缝对接。宿主工程也能轻松引用 Flutter 模块,进一步降低 Flutter 在混合开发中的学习成本。希望这篇文章能助你轻松上传 aar 包,让你的混合开发之旅更加顺畅!

常见问题解答

  • Q:如何解决上传 aar 包时遇到的 401 未授权错误?

    • A:确保你已在 Nexus 中配置了正确的凭据。
  • Q:为什么在宿主工程中引用 Flutter 模块时出现找不到符号错误?

    • A:检查宿主工程的 gradle 版本是否与 Flutter 模块兼容。
  • Q:如何配置 Flutter 模块中 aar 包的版本号?

    • A:在 Flutter 模块的 build.gradle 文件中,修改 version 字段。
  • Q:如何在 maven 仓库中查找特定的 aar 包?

    • A:在 Nexus 界面中,使用搜索功能根据 groupId 和 artifactId 查找。
  • Q:如何使用 Nexus 托管公共 maven 仓库?

    • A:你需要购买 Sonatype Nexus Professional 或 Enterprise 版本,并配置 SSL 证书。