Flutter 3.3.0 以上 打包aar 上传maven的脚本

项目场景:

提示:flutter sdk 3.3.0以上

          gradle 7.0 以上;


问题描述

在gradle 7.0 以上 maven 上传的脚本语法有所变化;

需要用到maven-publish; 7.0以下的maven 就不能用了;


解决方案:

 aar_init_script.gradle   和 一个sh脚本,   其实也可以写个task 去执行.gradle 文件;


void configureProject(Project project) {

    if (!project.hasProperty("android")) {
        throw new GradleException("Android property not found.")
    }
    if (!project.android.hasProperty("libraryVariants")) {
        throw new GradleException("Can't generate AAR on a non Android library project.");
    }


    project.version = project.property("buildNumber")



    project.android.libraryVariants.all { variant ->
        if (variant.name.capitalize()  == "Release"){
            addAarTask(project, variant)
        }
    }


    project.publishing {
        repositories {
            maven {
             //   url = uri("file://Users/alex/outputs/repo")

                allowInsecureProtocol true
                url = "http://XXXXXX:8081/repository/release";
                credentials {
                    it.username = "XXXXX"
                    it.password = "XXXX"
                }
            }
        }
    }



    project.components.forEach { component ->
        if (component.name == "release") {
            project.publishing.publications.create("release", MavenPublication) {
                from component
                alias false
            }
        }
    }


}

void configurePlugin(Project project) {
    if (!project.hasProperty("android")) {
        // A plugin doesn't support the Android platform when this property isn't defined in the plugin.
        return
    }
    configureProject(project)
}

String getFlutterRoot(Project project) {
    if (!project.hasProperty("flutter-root")) {
        throw new GradleException("The `-Pflutter-root` flag must be specified.")
    }
    return project.property("flutter-root")
}

void addAarTask(Project project, variant) {
    String variantName = variant.name.capitalize()
    String taskName = "assembleAar$variantName"

    project.tasks.create(name: taskName) {
        // This check is required to be able to configure the archives before `publish` runs.
        if (!project.gradle.startParameter.taskNames.contains(taskName)) {
            return
        }
        finalizedBy "publish"
    }
}


allprojects {
   apply plugin: "maven-publish"
}



projectsEvaluated {

    Project moduleProject = rootProject.subprojects.find { it.name == "flutter" }

    assert moduleProject != null

    configureProject(moduleProject)

    Set<Project> modulePlugins = rootProject.subprojects.findAll {
        it.name != "flutter" && it.name != "app"
    }

 
    modulePlugins.each { pluginProject ->
        configurePlugin(pluginProject)
    }

}
#!/usr/bin/env sh

flutter pub get
#flutter pub upgrade
cd ..
./gradlew build

cd .android

./gradlew \
  -I=../script/aar_init_script.gradle \
  -Pis-plugin=false \
  -PbuildNumber=1.0.0.170\
  -Ptarget-platform=android-arm,android-arm64,android-x64 assembleAarRelease

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值