代码之家  ›  专栏  ›  技术社区  ›  Dude

Gradle如何替换过时的variantOutput.getPackageLibrary()'带'variant.getPackageLibraryProvider()'?

  •  0
  • Dude  · 技术社区  · 6 年前

    我有一个Android库项目,有几种风格。我使用 'maven-publish' variant.outputs[0].outputFile 作为 publishing.publications.artifact

    publishing.publications.create variant.flavorName, MavenPublication, {
                groupId "$libraryGroupId.$variant.flavorName"
                artifactId libraryArtifactId
                version libraryVersion
                artifact variant.outputs[0].outputFile           
            }
    

    它一直工作得很好,但我最近更新了库的gradle插件 com.android.tools.build:gradle:3.3.2 并得到以下警告:

    警告:API'variantOutput.getPackageLibrary()'已过时,已替换为'variant.getPackageLibraryProvider()'. 2019年底将被拆除。 有关详细信息,请参阅 https://d.android.com/r/tools/task-configuration-avoidance . 确定呼叫什么variantOutput.getPackageLibrary(),使用-Pandroid.debug.obsoleteApi=true 在命令行上显示堆栈跟踪。

    这不是一个问题本身,因为它仍然有效,但我不喜欢这个警告,因为我一直在清理我的工作 build.gradle ,我想我应该试着把它修好。

    this post 这让我尝试:

    variant.getPackageLibraryProvider().get()

    com.android.build.gradle.tasks.BundleAar 当设置为发布的工件时,它似乎可以工作( artifact variant.getPackageLibraryProvider().get()

    这是纠正这个警告的正确方法还是会因为某种原因对我产生适得其反的影响?有人知道我在哪里可以得到更多的信息吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   FunnyItWorkedLastTime    6 年前

    使用 Gradle Android Gradle Plugin

    publishing {
        publications {
            android.libraryVariants.all { variant ->
                if (variant.buildType.name == "release") {
                    aar(MavenPublication) {
                        artifact(variant.packageLibraryProvider.get().archivePath)
                        groupId = '<your group id>'
                        artifactId = "$project.name"
                    }
                }
            }
        }
        ...
    }
    
    推荐文章