如何构建和行事扑扑aar?

时间:2020-06-09 14:01:35

标签: android flutter gradle aar maven-publish

我正在开发一个扑朔迷离的项目,并且正在利用它进行构建。我可以按照flutter提供的说明将其集成到我的本地android项目中。 但是我的问题是,该aar已在本地集成。我想发布此Aar,以便团队成员可以轻松访问。

借助publishing级任务,可以从本机库中发布。但是对于颤动库,我不确定我们应该做什么。因此,我需要帮助。

1 个答案:

答案 0 :(得分:0)

我试图弄清楚同样的事情..我没有,真的,但这是我得到的程度:

第一次尝试

它有点乱,可能会被覆盖,但我能够通过将 maven-publish 内容添加到生成的项目 gradle .android/Flutter/build.gradle 来发布到本地 Nexus 存储库,该项目似乎负责构建库。< /p>

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 工具时,通过将文件系统 repo 替换为您的自定义 repo,可以很容易地上传它构建的所有 .aars。所以在 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 中的任何内容。