not found libc++.so

问题:install 安装依赖有so库的apk,无法正常加载so。报错:not found libc++.so
比如:System.loadLibrary(“InitTest”);

分析:

  1. 工具在 android/prebuilts/tools/gcc-sdk,运行下面命令:
    readelf -dW libInitTest.so
    可以查看 libInitTest.so 的动态依赖库。其中依赖了 libc++.so

  2. Android N 开始,Google收缩了 so 库的依赖权限。只有 system/app system/priv-app 下的应用可以依赖。data/app 下的安装应用是无法加载某些 so 库的。
    如下 /system/etc/public.libraries.txt 中是动态依赖库的白名单。 libc++.so 不在其中。

libandroid.so
libaaudio.so
libamidi.so
libbinder_ndk.so
libc.so
libcamera2ndk.so
libdl.so
libEGL.so
libGLESv1_CM.so
libGLESv2.so
libGLESv3.so
libicui18n.so
libicuuc.so
libjnigraphics.so
liblog.so
libmediandk.so
libm.so
libnativewindow.so
libneuralnetworks.so
libOpenMAXAL.so
libOpenSLES.so
libRS.so
libstdc++.so
libsync.so
libvulkan.so
libwebviewchromium_plat_support.so
libz.so

方案一:
在白名单中加上 libc++.so

方案二:
在 libInitTest.so 的源码 Android.mk 中加上如下配置:

LOCAL_NDK_STL_VARIANT := c++_static
LOCAL_SDK_VERSION := 8

方案三:
在自己的 app 中把 libc++.so 复制到 libInitTest.so 同级目录,生成apk。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值