记录一次NDK版本不匹配,Android打包失败的蛋疼经历

背景:低版本构建的 RN 项目,在一台比较新的机器上,运行的时候NDK版本不对,死活下载不下来,构建一直报错。

首先,在git里面,local.properties是被忽略的,仓库里面是没有的。
要自己新建一个文件,android/local.properties

sdk.dir=/Users/net.cctv3.i/Library/Android/sdk
ndk.dir=/Users/net.cctv3.i/Library/Android/sdk/ndk/26.1.10909125

然后,看报错信息:

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':react-native-reanimated'.
> com.android.builder.sdk.LicenceNotAcceptedException: Failed to install the following Android SDK packages as some licences have not been accepted.
ndk;23.1.7779620 NDK (Side by side) 23.1.7779620
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
All licenses can be accepted using the sdkmanager command line tool:
sdkmanager.bat --licenses
Or, to transfer the license agreements from one workstation to another, see https://developer.android.com/studio/intro/update.html#download-with-gradle

这个时候注意了,千万别用SDKmanager下载,搞不定。因为这个有没有这个包是一个问题,包还很大,一个多G,科学上网费流量,还下载不下来。

> Configure project :react-native-reanimated
Warning: Still waiting for package manifests to be fetched remotely.
Checking the license for package NDK (Side by side) 23.1.7779620 in /Users/net.cctv3.i/Library/licenses
Warning: License for package NDK (Side by side) 23.1.7779620 not accepted.

看了下,报错的库react-native-reanimated,他使用的是根目录的NDK版本,不是自己的。
所以,就改一下本地的版本就行了。

android/build.gradle

// We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP.
// ndkVersion = "23.1.7779620" // 默认--> 家里
ndkVersion = "26.1.10909125" // 公司打包用

看一下自己的机器上有什么版本,

net.cctv3.i@StationChnqoo ndk % cd /Users/net.cctv3.i/Library/Android/sdk/ndk
net.cctv3.i@StationChnqoo ndk % ls
25.1.8937393 26.1.10909125 27.0.12077973

我试了下,27.0.12077973这个版本还是太新了,因为react-native-reanimated这个库比较旧,构建还是报错。

所以切成了26.1.10909125版本。

注意,android/local.properties里面的 NDK 版本,也切成一样的 …

反正以后注意点吧,尤其是react-native-reanimated这个库,一直有坑,各个版本的build.gradlendk都差别很大,而且我发现往后的版本,还用的Java的新语法,还是各种报错。在RN那边的配置也是,有的要配置metro.config.js,有的又不需要。

记录一次NDK版本不匹配,Android打包失败的蛋疼经历

https://cctv3.net/static/20241230/android-ndk-build-failed.html

作者

陈桥驿站

发布于

2024-12-30

更新于

2025-01-15

许可协议

评论