Android Studio构建问题:从android-ndk-r27c到 android-ndk-r29
我在使用NDK设置Android时有点迷茫。
我使用的是Gradle插件版本7.2.2和 Gradle版本7.4。所以我应该能够在 build.gradle 文件中使用ndkDir,只要在 local.properties 文件中完成设置,并且
-DCMAKE_C_COMPILER=C:\\android-ndk-r27c\\t
-DCMAKE_CXX_COMPILER=C:\\\\android-ndk-r27c\\
在 build.gradle。
并且我使用
externalNativeBuild { cmake {path "CMakeLists.txt"} }
与
cmake_minimum_required(VERSION 3.3.0)
,并且我在androidSDK/cmake目录下安装了最新版的CMake 4.1.2。
现在我已经下载了最新版的android-ndk-r29,并把 ndkDir 在 local.properties 中改为新的NDK,并把 CMAKE_C_COMPILER 改为新的NDK。
在构建我的APK时,我遇到了以下错误:
A problem occurred evaluating project ':app'.
\> NDK is not installed
直到现在,我一直使用ndkDir来更新或切换NDK版本,使用Gradle版本7.4进行测试。但这对android-ndk-r29来说并不奏效。我执行过“invalid chache”,但错误仍然一样。
所以看起来似乎有些东西已经改变,我也不清楚到底是什么以及为什么会这样。
解决方案
Dont use ndk.dir in local.properties, it was deprecated.
Use this in module build.gradle:
android {
ndkVersion "29.0.14206865"
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
https://developer.android.com/studio/projects/configure-agp-ndk?language=agp4-1
Androids docs recommend android.ndkVersion for AGP 4.1+, with ndkPath only for special custom path cases. Android Studio installs NDKs under android-sdk/ndk/. For r29 actual version is 29.0.14206865, not just r29.
You can install r29 using:
sdkmanager --install "ndk;29.0.14206865"
If ndk was unpacked to C:\android-ndk-r29, use ndkPath instead:
android {
ndkPath "C:/android-ndk-r29"
}
Also, you should not need to pass explicitly: -DCMAKE_C_COMPILER / -DCMAKE_CXX_COMPILER, AGP/cmake should handle it for you.