我如何为我的AndroidApp

问题描述 投票:0回答:1

节在安装时间内自动提取本机代码指出:

当安装应用程序时,包装管理器服务会扫描APK,并查找表单的任何共享库:

lib/<primary-abi>/lib<name>.so

如果没有找到,您已经定义了次要ABI,则该服务 扫描表格共享库:



lib/<secondary-abi>/lib<name>.so

background:

我的应用程序取决于通过JNI接口访问的外部库,但我只提供了例如。 
libLibrary.so

档案架构。我的应用程序还使用另一个支持几个不同架构(例如ARM64-V8A等)的库。因此,在运行时,我会收到这样的错误,因为它找不到

libLibrary.so

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[... /system/lib64]]] couldn't find "libLibrary.so"

Edit:

我想知道如果我依靠的其他库中有Armeabi-v7a的文件,但不是Armeabi,那么如果我从Armeabi文件夹中复制

libLibrary.so

我已经测试了我的应用程序,当我在gradle设置时,它使用库没有问题:

ndk.abiFilters "armeabi-v7a"

仅在APK文件中输出ARMEABI-V7A库以使应用仅使用它们。

所以,我想知道那是否很好。我正在使用此处建议的内容:

https://medium.com/livefront/native-android-libraries-gone-bad-e7ff63f34bb


    

正如迈克尔(Michael)写的那样,您无法在部分支持

ARM64-V8AA的情况下部署应用程序。只要您不将应用程序上传到播放商店(例如在开发和测试期间),就应该从APK中剥离64位二进制文件。截至今天,所有设备仍将运行aarmeabi

二进制,但我希望未来几年只有64位的设备。 如果您打算通过Google Play商店分发该应用程序,则必须确保您的应用程序在没有32位二进制文件的情况下运行。有时,当没有本机LIB的来源不可用时,在Java/kotlin中复制缺失功能会更容易。

android gradle java-native-interface abi
1个回答
2
投票
Blast Blast mod mod mod菜单

以以下格式找到共享库:

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.