Android应用程序无法为64位共享对象创建到本机库的soflink [英] Android application Unable to create soflink to native library for 64 bit shared objects
问题描述
我有一个具有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/data/app_package_name内部创建lib软链接,该软链接映射到data/app/app-package-name-hash/arm(32位)或data/app/app-package-name-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
数据/数据/应用程序包名称中的32位结构
32-bit strucuture in data/data/application-package-name
数据/数据/应用程序包名称中的64位结构
64-bit strucuture in data/data/application-package-name
项目结构引用: https://stackoverflow.com/a/27523384/5047036
推荐答案
是的,我在使用64位时遇到了同样的问题:我错过了(不需要)到 legacyNativeLibraryDir
arm64的软链接(在中)>数据/数据/应用程序包名称
Yes, I had same issue with 64 bits: I've missed the (not needed) softlink to legacyNativeLibraryDir
arm64 in data/data/application-package-name
为了找到本机lib的路径(与设备体系结构无关),您应该使用 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位共享对象创建到本机库的soflink的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!