Azure Pipeline 中的 Flutter Android 构建错误:在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:arm-linux-androideabi

Flutter Android build error in Azure Pipeline: No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi

我遇到错误 No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi。我找到的解决方案是在 Android Studio 中升级或降级 NDK。但是,我正在使用 Azure Pipeline,但我不确定该怎么做。

有两次运行,其中一次成功,另一次失败。他们两个都有相同的提交,只相差一天。 它们之间的唯一区别是 Initialize Job 任务中的代理和图像版本。

成功:

Starting: Initialize job
Agent name: 'Hosted Agent'
Agent machine name: 'fv-az394-23'
Current agent version: '2.192.0'
Operating System
Virtual Environment
Virtual Environment Provisioner
Current image version: '20210919.1'
Agent running as: 'vsts'
Prepare build directory.

失败:

Starting: Initialize job
Agent name: 'Hosted Agent'
Agent machine name: 'fv-az216-247'
Current agent version: '2.193.0'
Operating System
Virtual Environment
Virtual Environment Provisioner
Current image version: '20210929.1'
Agent running as: 'vsts'
Prepare build directory.

我认为解决方案是配置 gradle(我不确定要修复哪个)或在 MS 托管代理中重新配置 NDK(我不确定如何)。

有什么建议吗? 我不确定这是 flutter (1.22.6) 特定问题还是 android 一般问题。但是,我可以在我的机器上构建它。

正如此 github issue 解决方法中所讨论的,基本上我们需要在 app/build.gradle 中添加 NDK 版本。最小的解决方案是:

android {
    compileSdkVersion 30
    ndkVersion "21.4.7075529"
    ...
}

我遇到了同样的问题。我的管道 运行 完全超过了 ubuntu-16.04,但最近 Microsoft 删除了对 ubuntu-16.04 的支持,这个 NDK 问题开始出现在 ubuntu-latest 和 ubuntu-18。主要原因是 NDK 23 与之前版本的 NDK (22-) 有不同的工具链,所以旧版本的 AGP (Android Gradle Plugin) 不知道在哪里可以找到不同的可执行文件ABI。这是我所做的解决方法。

   - task: Bash@3
      displayName: 'Install NDK'
      inputs:
        targetType: 'inline'
        script: '$ANDROID_HOME/tools/bin/sdkmanager --install "ndk;20.0.5594570"'
    - task: Bash@3
      displayName: 'Downloading NDK'
      inputs:
        targetType: 'inline'
        script: wget https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip -P $(Build.SourcesDirectory)
    - task: Bash@3
      displayName: 'Unzipping NDK'
      inputs:
        targetType: 'inline'
        script: unzip $(Build.SourcesDirectory)/android-ndk-r20b-linux-x86_64.zip
            
    - task: Bash@3
      displayName: 'copying NDK to NDK Variable'
      inputs:
        targetType: 'inline'
        script: cp -r $(Build.SourcesDirectory)/android-ndk-r20b/toolchains $ANDROID_NDK_LATEST_HOME; cp -r $(Build.SourcesDirectory)/android-ndk-r20b/toolchains $ANDROID_NDK_HOME                

我通过将此行添加到 local.properties 中解决了同样的问题。

ndk.dir=C:\Users\**\AppData\Local\Android\sdk\ndk\24.**

**24.** = 您需要通过文件夹查找。