Android 应用程序无法为 64 位共享对象创建到本机库的软链接 [英] Android application Unable to create soflink to native library for 64 bit shared objects

查看:31
本文介绍了Android 应用程序无法为 64 位共享对象创建到本机库的软链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有 32 位本机库的应用程序.当我使用 64 位库重新安装同一个应用程序时,无法创建存在于 data/data/application-package-name 中的 lib 软链接.

I've an application which has 32 bit native libraries. When I'm reinstalling the same app with 64-bit libraries, It's unable to create lib softlink which is present in data/data/application-package-name.

这个 lib 软链接映射到 data/app/app-package-name-hash/arm(32 位)或 data/app/app-package-name-hash/arm64(64 位)

This lib softlink maps to data/app/app-package-name-hash/arm(in 32bit) or data/app/app-package-name-hash/arm64(in 64bit)

有什么问题吗?

Android 构建系统无法在映射到 data/app/app-package-name-hash/arm(32 位)或 data/app/app-package-name- 的 data/data/app_package_name 中创建 lib 软链接hash/arm64(64 位)

Android build system is unable to create lib softlink inside the data/data/app_package_name which maps to data/app/app-package-name-hash/arm(in 32bit) or data/app/app-package-name-hash/arm64(in 64bit)

你看到了什么错误?我的本机代码无法在共享对象中找到应该在 data/data/app_package_name/lib 中的文件,因此导致无法打开文件错误

What error are you seeing? My native code isn’t able to find a file in the shared object which should be inside data/data/app_package_name/lib, hence giving unable to open file error

data/data/application-package-name 中的 32 位结构

32-bit strucuture in data/data/application-package-name

data/data/application-package-name 中的 64 位结构

64-bit strucuture in data/data/application-package-name

项目结构参考:https://stackoverflow.com/a/27523384/5047036

推荐答案

是的,我在 64 位时遇到了同样的问题:我错过了 legacyNativeLibraryDir arm64 中的(不需要的)软链接>data/data/application-package-name

Yes, I had same issue with 64 bits: I've missed the (not needed) softlink to legacyNativeLibraryDir arm64 in data/data/application-package-name

为了找到本机库的路径(无论设备架构如何),您应该使用 getContext().getApplicationInfo().nativeLibraryDir

In order to find the path for native libs (regardless of device architecture) you should use getContext().getApplicationInfo().nativeLibraryDir

参考:https://developer.android.com/ndk/guides/abis#aen

这篇关于Android 应用程序无法为 64 位共享对象创建到本机库的软链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆