【问题标题】:Android package manager only unpacks libxxx.so named librariesAndroid 包管理器只解包 libxxx.so 命名的库
【发布时间】:2015-08-24 23:40:47
【问题描述】:

我制作了一个使用 dlopen 动态加载插件的 jni 库,插件库文件具有不同的命名,例如zzz_abc.so.

eclipse和ant在apk中正确绑定了这些文件,但是android packagemanager只解包名为libxxx.so的文件,其他文件名模式被忽略,可能在调试中,gdbserver在我的4.1手机上添加并解包(但不是4.4 genymotion 模拟器)。

有什么“魔法”可以控制这种行为?

【问题讨论】:

    标签: android java-native-interface apk native


    【解决方案1】:

    我已经验证,不幸的是,原生库安装程序只复制文件名,如 libxxx.sogdbserver,如果有人感兴趣,代码在 frameworks/base/core/jni/com_android_internal_content_NativeLibraryHelper.cpp

    【讨论】:

    • Right。设备上的包管理器在将本机库复制到 /data/data/your.package.name/lib 时会查找 ^lib.+\.so$ 模式。
    【解决方案2】:

    Android 包管理器根据设备处理器架构(armv7a、armv6、x86、mips)复制库。所以如果你使用基于 x86 的模拟器,你需要提供你的库的 x86 版本。

    【讨论】:

    • gdbserver 未复制,因为 genymotion 4.4 映像中的错误,周围有一个修补的 libandroid_runtime.so
    猜你喜欢
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多