Dalvik 正在寻找扩展名为“.0”的 .so 文件 - 为什么?

2024-03-13

我已经开始开发一个非常简单的 Android 应用程序,它由三部分组成:

  • Java应用程序本身
  • 一个预先构建的共享库(我们将其称为libfoo)
  • 另一个使用预构建库的共享库(我们将其称为libfoowrapper)

文件系统看起来像这样:

jni
Android.mk
libfoo.so
foowrapper.c

The Android.mk文件包含以下内容:

LOCAL_PATH := $(call my-dir)

#==============================

include $(CLEAR_VARS)

LOCAL_MODULE := foo-prebuilt
LOCAL_SRC_FILES := libfoo.so

include $(PREBUILT_SHARED_LIBRARY)

#=========================

include $(CLEAR_VARS)

LOCAL_MODULE := foowrapper
LOCAL_SRC_FILES := foowrapper.c

LOCAL_SHARED_LIBRARIES := foo-prebuilt

include $(BUILD_SHARED_LIBRARY)

当我在 Eclipse 中构建应用程序时,一切似乎工作正常 - 没有报告任何错误。但是,当我将应用程序上传到 Samsung Discover(运行 Android 4.0.4)时,我在日志中收到以下错误:

03-05 21:20:27.859: E/AndroidRuntime(20324): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1936]:   102 could not load needed library 'libfoo.so.0' for 'libfoowrapper.so' (load_library[1091]: Library 'libfoo.so.0' not found)

为什么 Dalvik 正在寻找一个.so.0文件而不是.so文件?我需要对我的应用程序进行哪些更改才能消除此错误?


至少在 Linux 世界中,每个共享库都有一个特殊的名称,称为soname。 soname 有前缀lib、图书馆名称、短语.so,后跟一个句点和一个版本号,每当接口更改时版本号就会递增(作为一个特殊例外,最低级别的 C 库不以lib)。完全限定的 soname 包含其所在目录作为前缀;在工作系统上,完全限定的 soname 只是共享库的符号链接real name.

每个共享库还有一个real name,这是包含实际库代码的文件名。真实名称会在 soname 中添加一个句点、一个次要编号、另一个句点和发行号。最后一个时期和版本号是可选的。次要编号和版本号可让您准确了解安装的库版本,从而支持配置控制。请注意,这些数字可能与文档中用于描述库的数字不同,尽管这确实使事情变得更容易。

参考:Linux 标准库 http://refspecs.linuxfoundation.org/lsb.shtml

Edit:看来这不是一个罕见的问题,还没有看到任何真正的解决方案,但这也许会让您开始找到适合您的东西。

使用 PREBUILT_SHARED_LIBRARY 时出现 LOCAL_SRC_FILES 问题https://groups.google.com/forum/#!topic/android-ndk/_UhNpRJlA1k https://groups.google.com/forum/#!topic/android-ndk/_UhNpRJlA1k

为 android 创建非版本共享库http://www.opengis.ch/2011/11/23/creating-non-versioned-shared-libraries-for-android/ http://www.opengis.ch/2011/11/23/creating-non-versioned-shared-libraries-for-android/

未找到库“libproj.so.0”https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/ai3tu0XXs88 https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/ai3tu0XXs88

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dalvik 正在寻找扩展名为“.0”的 .so 文件 - 为什么? 的相关文章

  • 如何创建在 React-Native 中检测自动位置的地图

    我已经在react native中创建了地图 参考https github com lelandrichardson react native maps https github com lelandrichardson react nat
  • 使用DBFlow,如何加密已经存在的数据库?

    我正在使用 DBFlow 来处理项目中的数据库 并且我想对现有数据库进行加密 我知道我可能必须删除现有的未加密数据库并创建另一个加密数据库 我也知道我可以将 SQLCipher 与 DBFlow 一起使用 如上所述文档 https gith
  • Android TelecomManager 中的 addIncomingCall 没有执行任何操作

    我正在尝试使用本机 Android 来电 UI 我有一个连接服务 并且我已经成功注册了一个电话帐户 但在我调用方法 addNewIncomingCall 后什么也没有发生 对我所缺少的有什么想法吗 显现
  • 通过代码在创建时突出显示 ListView 项目

    我想在创建 listView 时突出显示 ListView 的第一行 0 我尝试了不同的方法 就像您在注释代码中看到的那样 但没有任何效果 这很奇怪 因为 OnItemClickListener 中的突出显示工作正常 它通过 xml 选择器
  • 在工具栏下显示内容

    您好 我试图简单地将我的内容放在工具栏下方 但是当我运行我的应用程序时 某些内容本应位于工具栏下方 却隐藏在工具栏后面 我已经阅读了有关使用框架布局来尝试将其分离的内容 但我有点卡住了 我目前正在使用该软件提供的基本 android stu
  • Android Camera.takePicture() 有时不返回?

    我正在编写一个Android 拍照应用程序 该代码在 onPreviewFrame byte data Cameracamera 中从预览中获取帧后进行一些处理 问题在于 android hardware Camera 的函数 takePi
  • 如何使用 Google 的 GithubBrowserSample 方法在片段之间共享视图模型?

    我对 Android 架构组件的使用非常陌生 因此我决定使用 GithubBrowserSample 来构建我的应用程序来实现我的许多用例 但我有一个问题 我不知道使用这种方法在片段之间共享视图模型的正确方法是什么 我想共享视图模型 因为我
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 在 Android 中加密/解密字符串的简单方法

    我的问题是如何加密String String AndroidId Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceSta
  • FragmentActivity 无法解析为类型

    我正在尝试来自的应用程序这个博客 http android developers blogspot com 2011 02 android 30 fragments api html 在延长的同时FragmentActivity 我收到以下
  • AndEngine MenuScene - 无法单击按钮

    我有一个关于 android 和 andengine 的小问题 这是我的主菜单的源代码 AbstractScene is extending Scene public class MainMenuScene extends Abstract
  • Android - 状态栏阻止全屏

    我的应用程序启动时可以全屏正确运行 然而 在最小化然后返回应用程序后 状态栏会弹出 并将我的视图向下推一点 如何防止状态栏移动我的视图 这是我的布局
  • 双屏 Android Studio 中不显示自动补全

    我刚刚从 Eclipse 切换到 Android Studio IntelliJ 我不明白自动补全是如何工作的 我尝试了 Control Space Control Shift Space 但没有相关建议 不在 Java 文件中 也不在布局
  • Android 操作项上的通知徽章

    我想在操作栏中放置的购物车图像上添加一个通知徽章 并以编程方式操作它 有帮助吗 您可以显示自定义MenuItem on ActionBar通过创建一个custom layout for MenuItem 要设置自定义布局 您必须使用菜单项属
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 使 Recyclerview 固定高度并可滚动

    已解决以下检查答案 所以我试图为我的 Android 应用程序创建评论功能 我想在 recyclerview 中显示评论 然后在 recyclerview 下方有一个按钮和文本视图来添加评论 我想让 recyclerview 具有一定的高度
  • 调试android数据绑定?

    谁能告诉我如何调试或找到数据绑定生成的代码 从this https www youtube com watch v NBbeQMOcnZ0链接我发现它生成了所需的代码 我猜您正在寻找自动生成的绑定 java 文件 我也在寻找他们 最后我在这
  • 如何从DataSource.Factory获取数据

    我必须调用此方法才能获取所有人员 我根本无法修改这个方法 Query SELECT FROM PERSON TABLE ORDER BY NAME DESC abstract fun getElements DataSource Facto
  • Android 的代码覆盖率[重复]

    这个问题在这里已经有答案了 可能的重复 Android测试代码覆盖率 Eclipse https stackoverflow com questions 3282702 android test code coverage eclipse

随机推荐