记一次ndk版本升级

概述

事情的起因是做一次android版本的业务迭代,发现程序crash掉了。经过分析,原因是中台部门对libc++_shared.so库进行了升级,正好我们的业务也会用到libc++_shared.so库,导致两个库版本冲突。具体crash的原因可以参见参考文献1。

为了解决该问题,中台的同学提出让我们升级ndk版本,使之和中台用到的libc++_shared.so库版本保持一致。

实现

下载ndk新版本

首先升级ndk版本

在AndroidStudio中,下载期望的ndk版本,如下图所示:

使用新下载的ndk

在项目的local.properties文件中,将ndk.dir变量指向新下载的ndk版本目录:

ndk.dir=/Users/didi/Library/Android/sdk/ndk/26.1.10909125

然而同步gradle配置后,会有一个报错:

NDK is missing a "platforms" directory. If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to /Users/didi/Library/Android/sdk/ndk/26.1.10909125. If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

原因是我们当前使用的gradle的版本较低,需要先对gradle进行升级。

升级gradle

打开gradle/wrapper/gradle-wrapper.properties文件,进行如下替换操作:

-distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-4.6-all.zip

+distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-6.5-all.zip

将gradle的版本由4.6升级到了6.5.

再次同步gradle配置,这时会有一个新的报错:

Failed to notify project evaluation listener.
    org.gradle.api.file.ProjectLayout.filePro…

我们需要对gradle的插件进行升级。

升级gradle插件

在根目录下的build.gradle,进行以下操作:

dependencies {

-        classpath 'com.android.tools.build:gradle:3.2.1'

+        classpath 'com.android.tools.build:gradle:4.1.0'

}

再次同步gradle配置,项目的所有依赖正常。

验证

找到使用系统函数的地方,跳转到系统文件,可见其使用的ndk版本号。

参考文献

1. Android兼容之libc++_shared.so库冲突方案_android c++运行库冲突-CSDN博客

2. android studio指定ndk版本的方法_ndkversion-CSDN博客

3.(笔记)NDK is missing a “platforms“ directory. If you are using NDK, verify the ndk.dir is set to a val_ndk is missing a "platforms" directory. if you are-CSDN博客

4。 https://blog.csdn.net/qq_44402184/article/details/122226393

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值