【问题标题】:Android 4.x. Deploy native libs via apk and load from other application安卓 4.x。通过 apk 部署本机库并从其他应用程序加载
【发布时间】:2012-12-06 18:21:28
【问题描述】:

我有几个本机库,我想通过 apk 包部署它们(即将它们复制到 libs 文件夹或资源)。 然后我需要安装单独的应用程序并使用以下方法加载这些库:

System.load(path_to_lib);

可以通过什么方式实现?据我了解,出于安全原因,我不能只使用 /data/data/libs_package/lib/native_lib.so 路径加载库。还有其他方法吗?

提前致谢。

【问题讨论】:

  • AFAIK,这是不可能的。

标签: android shared-libraries android-native-library


【解决方案1】:

请参阅 android-ndk 讨论组中的 this thread

总而言之,谷歌的 Android 开发人员说:

如果两个应用程序有一个共享的用户 ID,那么您可以显式调用 System.loadLibrary() 并使用要加载的共享库的完整路径。
...
但请不要尝试这样做。你会给你的用户带来痛苦——无论是更新一个或另一个应用程序导致不兼容并让你崩溃,还是用户卸载另一个应用程序让你崩溃等等。

另一位开发者提出了以下解决方案:

所以我现在要做的(并且它有效)是有一堆没有 共享用户 ID(它们由相同的密钥签名,但我不认为 这在这里很重要)。核心应用程序从 .apk 中解压缩 .so 其他包(我已经有一个自定义解包器来解决 一堆其他Android错误)。我将它们解压到一个已知的位置 核心包,然后从那里 dlopen() 它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2016-01-03
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多