我得到错误No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
。我找到的解决方案是升级或降级Android Studio中的NDK。但是,我正在使用Azure Pipeline,不知道如何做到这一点。
有两次运行,其中一次成功,另一次失败。它们都有相同的提交,只相差一天。两者之间唯一的区别是Initialize Job
任务中的agent和image版本。
成功:
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问题解决方案中所讨论的,基本上我们需要在app/build.gradle
中添加NDK版本。最小的解决方案是:
android {
compileSdkVersion 30
ndkVersion "21.4.7075529"
...
}
我也有同样的问题。我的管道在ubuntu-16.04上运行得很好,但是最近微软取消了对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.**
=你需要通过你的文件夹找到。