android - 如何构建和发布 flutter aar?

标签 android flutter gradle aar maven-publish

我正在做一个 flutter 项目,我正在用它来构建 aar。按照 flutter 提供的说明,我可以将这个 aar 集成到我的原生 android 项目中。
但我的问题是这个 aar 是本地集成的。我想 maven-publish 这个 aar 以便团队成员可以轻松访问它。

publishing 的帮助下,可以从本地库中发布。年级的任务。但是对于 flutter 库,我不确定我们应该做什么。所以,我需要这方面的帮助。

最佳答案

我试图弄清楚同样的事情..我没有,真的,但这是我走了多远:
第一次尝试
它有点乱,可能会被覆盖,但我可以通过将 maven-publish 内容添加到生成的项目 gradle .android/Flutter/build.gradle 来发布到本地 Nexus 存储库它似乎负责建立图书馆。

apply plugin: 'maven-publish'

...

afterEvaluate {
    publishing {
        repositories {
            maven {
                url = "http://10.2.0.210:8081/repository/maven-releases/"
                credentials{
                    username "a"
                    password "b"
                }
            }
        }

        publications {
            // Creates a Maven publication called "release".
            release(MavenPublication) {
                // Applies the component for the release build variant.
                from project.components.release

                // You can then customize attributes of the publication as shown below.
                groupId = 'com.example.myflutmod'
                artifactId = 'something_module'
                version = '0.1.0'
            }
            // Creates a Maven publication called “debug”.
            debug(MavenPublication) {
                // Applies the component for the debug build variant.
                from project.components.debug

                groupId = 'com.example.myflutmod'
                artifactId = 'something_module'
                version = '0.1.0'
            }
        }
    }
}
然后我做了
flutter build aar
./gradlew -b .android/Flutter/build.gradle publish
最后在主 android 应用程序项目中添加相同的 maven 存储库配置和一个依赖项implementation "com.example.myflutmod:something_module:0.1.0" 但是它没有在上传中包含“插件依赖 aars”(就像我的例子中的 url_launcher),所以应用程序没有构建。
这可能很容易添加,尽管我没有考虑过。
另外的选择
所以相反,我更深入地发现,在修改 flutter 工具时,很容易通过将文件系统存储库替换为您的自定义存储库来上传它构建的所有 .aar。所以在 aar_init_script.gradle在你的flutter sdk安装下:
diff --git a/packages/flutter_tools/gradle/aar_init_script.gradle b/packages/flutter_tools/gradle/aar_init_script.gradle
index cc2bbe6f98..242ac61fb0 100644
--- a/packages/flutter_tools/gradle/aar_init_script.gradle
+++ b/packages/flutter_tools/gradle/aar_init_script.gradle
@@ -37,7 +37,10 @@ void configureProject(Project project, String outputDir) {
     project.uploadArchives {
         repositories {
             mavenDeployer {
-                repository(url: "file://${outputDir}/outputs/repo")
+                //repository(url: "file://${outputDir}/outputs/repo")
+                repository(url: "http://10.2.0.210:8081/repository/maven-releases/") {
+                    authentication(userName: "a", password: "b")
+                }
             }
         }
     }
看起来对他们来说添加一些属性或切换到构建命令以使其使用外部配置的存储库相当简单。
也许将来会有PR。
但现在我更倾向于只制作一个上传 file://${outputDir}/outputs/repo 中的任何内容的脚本。而是在构建后“手动”。

关于android - 如何构建和发布 flutter aar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62284466/

相关文章:

android - 单元测试不适用于 Android Studio 北极狐

java.lang.IllegalStateException : Required view 'caption' with ID 2131230791 for field 'caption' was not found

java - 我如何暂停执行代码直到动画完成

Android Studio - 从本地创建远程分支

animation - Flutter -Loader 动画中的缩放过渡

flutter - 在 flutter 中 IntrinsicHeight 的替代品是什么?

android - 如何列出设备上的所有图像?

flutter 'Object' 无法分配给类型 'Widget?' 错误

logging - 转发来自测试的公共(public)日志记录消息

gradle - 我们可以读取 settings.gradle 中的命令行参数吗?