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.**
= 您需要通过文件夹查找。
我遇到错误 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.**
= 您需要通过文件夹查找。