当前位置: 首页 > 知识库问答 >
问题:

如何在Azure DevOps管道上指定Android SDK构建工具版本

柴辰阳
2023-03-14

我在Azure DevOps中创建Android CI/CD时遇到了一个严重的问题。结果表明,管道试图使用最新版本的BuildTools构建apk,但最新版本(31.0.0)似乎有问题。

我想强制Azure使用30.0.3版本,我已经测试过该版本运行良好。

使用BuildTools 31.0.0的Azure日志

我使用Ionic和cordova来生成我的Android项目,尽管cordova文档说它支持cli参数来强制构建工具版本。

例如:离子科尔多瓦运行android----gradlearg=-p cdvbuildtoolsversion=30

它仍然以始终使用安装在cordovaLib模块中的最新版本的方式生成

build.gradle[应用程序模块]

// The value for android.buildToolsVersion.
    if (!project.hasProperty('cdvBuildToolsVersion')) {
        cdvBuildToolsVersion = null;
    }

...

compileSdkVersion cdvCompileSdkVersion
buildToolsVersion cdvBuildToolsVersion

Build.Gradle[cordovaLib模块]

cdvCompileSdkVersion = privateHelpers.getProjectTarget()
cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()

...

compileSdkVersion cdvCompileSdkVersion
buildToolsVersion cdvBuildToolsVersion

共有1个答案

岳良策
2023-03-14

我发现了一个临时的解决办法,似乎对这种情况很有意义,如果有人在未来遇到这种问题,它可能会很有用:

只需在管道中放置一个步骤来删除损坏的构建工具,在本例中为31.0.0

- script: $ANDROID_HOME/tools/bin/sdkmanager --uninstall 'build-tools;31.0.0'
  displayName: 'Workaround'
 类似资料: