gpt4 book ai didi

gradle - 将生成的第三方许可证复制到 Assets

转载 作者:行者123 更新时间:2023-12-03 03:09:05 24 4
gpt4 key购买 nike

我想在Gradle中自动包含最新生成的第三方许可证。

配置:

  • Gradle 2.x
  • 许可证等级插件0.11.0

  • 代码:
    task beforeAssemble(dependsOn: assemble) << {
    downloadLicenses.execute()
    CopyToAssetsTask.execute()
    }

    task CopyToAssetsTask(type: Copy) {
    description = 'Copies generated Third Party Licenses into assets'
    from('$buildDir/reports/license') {
    include('dependency-license.html')
    }
    into '$buildDir/intermediates/assets/debug/legal'
    }

    apply plugin: 'license'

    downloadLicenses {
    includeProjectDependencies = true
    reportByDependency = true
    reportByLicenseType = true
    dependencyConfiguration = "compile"
    }

    在命令行中: gradlew clean assembleDebug
    生成的APK不包含我希望的生成的文件。我是Gradle的新手,所以也许有一个简单的解释?

    最佳答案

    首先是一些观察。解决方案在最后:

  • 您仍在按程序进行思考:告诉Gradle何时执行操作(即在任务beforeAssemble中执行的操作)。利用任务图:指定任务的依赖项(有关某些可能性,请参见下文)。当您需要任务的输出时,只需让Gradle执行该任务,Gradle就会找出该任务所依赖的传递性任务。它将执行所有这些任务:仅执行一次,并以正确的顺序执行。
  • 此声明:task beforeAssemble(dependsOn: assemble),没有任何意义。您希望任务在assemble之前运行,但是通过依赖assemble,您可以实现相反的操作:assemble将在beforeAssemble之前运行。

  • 如何指定依赖关系?有多种选择:
  • 使用直接依赖项:dependsOn
  • 在任务的inputs中引用其他任务。
  • 设置任务的选项,这将自动创建依赖项。例如:如果from任务的Copy属性设置为另一个任务的输出,则Copy任务将自动将该另一个任务添加为输入。

  • 这是解决方案。您想要两个实现两个目标:
  • 在构建过程中(在某些特定点)生成许可证信息。
  • 将许可信息包括在文件中。

  • 将此添加到您的构建脚本:
    android {
    // ...

    // Add the output folder of the license plug-in as
    // a source folder for resources.
    sourceSets {
    main {
    resources {
    srcDir 'build/reports/license'
    }
    }
    }
    }

    downloadLicenses {
    includeProjectDependencies = true
    reportByDependency = true
    reportByLicenseType = true
    dependencyConfiguration = "compile"
    }

    // Add a dependency after the project has been evaluated, because
    // the Android plug-in does not add tasks "generate*Resources" to
    // the project immediately.
    project.afterEvaluate {
    // Download the licenses when (actually: just before) the
    // resources are generated (for both the "debug" and the
    // "release" build types).

    // If you add/change build types, you have to add to/change
    // these task names.
    generateDebugResources.dependsOn tasks['downloadLicenses']
    generateReleaseResources.dependsOn tasks['downloadLicenses']
    }

    关于gradle - 将生成的第三方许可证复制到 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785871/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com