【问题标题】:Security warning on libdvm.so noticed while deploying Android apps部署 Android 应用程序时注意到 libdvm.so 上的安全警告
【发布时间】:2014-02-17 19:20:57
【问题描述】:

有人见过这个吗?

ActivityManager:警告:链接器:libdvm.so 具有文本重定位。这是浪费内存并且存在安全风险。请修复。

这发生在我尝试将应用部署到我的设备时。 Google 在这一点上似乎没有帮助。

【问题讨论】:

  • 1) 部署到设备或模拟器? 2)正在使用Android Studio?
  • 如果这是您自己的 jni 库,解决方案将位于 stackoverflow.com/questions/20141538/…,但是 因为这似乎在平台库中,您真的无能为力。在您的设备制造商进行更新之前,您可能会在每次 Activity 进程启动时看到这一点。但这只是一个警告。
  • 我正在使用来自 Eclipse 的 Genymotion 模拟器。尚未使用设备进行测试。
  • @ChrisStratton 所以你的意思是这个异常发生在设备级别,不是构建过程(或任何插件)的一部分?
  • @AndyFaizan - 这不是错误,而是警告。它可能只在 zygote 加载 libdvm.so 时生成一次(其他人都简单地继承它),因此只有在特殊的启动时间情况下 seen ,但无论如何情况的事实都是一样的.除了最终更改为使用不同工具链设置构建的系统映像之外,发布者无法改变这一点。 (实际上,安装过程(或者更具体地说是 dexopting)可能涉及将 libdvm.so 加载到新进程中并因此重新生成警告)

标签: android eclipse


【解决方案1】:

如果这是您自己的 jni 库或本机可执行文件,解决方案将是更新到 ndk r8c 或更高版本,如下所述:

mylib.so has text relocations. This is wasting memory and is a security risk. Please fix

为了获得https://code.google.com/p/android/issues/detail?id=23203的修复

但是,由于这似乎是在平台库(特别是 Dalvik VM 本身)中,而不是您构建的东西,您无能为力。在您的设备制造商进行更新之前,您可能会在每次 Activity 进程(或至少运行时)启动时看到这一点。

这只是一个警告。

【讨论】:

  • 我在部署到模拟器时收到同样的警告。
  • 在将 apk 安装到模拟器时出现与 ndk-r9d 相同的错误。
  • @OlcayErtaş - 使用的 NDK 版本与 此确切警告 无关(同样,它是警告,不是错误),因为它被触发通过设备/模拟器本身的代码,而不是您的应用程序的代码。更改 NDK 版本仅在您作为应用程序的一部分发布的代码触发时才有帮助。
  • 此警告阻止我将 apk 安装到模拟器。
  • 不,它没有。这只是一个警告,不是错误。如果您实际上无法安装,则您必须有一个属于其自己的问题的 不同的问题 - 但在您的新问题中,您必须报告实际的 error 而不是比警告消息获得帮助。
【解决方案2】:

我收到此错误是因为我尝试安装的 APK 的 minSdkVersion 设置高于支持的设备。

【讨论】:

  • 这被否决了,但我固执地离开它,以防它帮助其他犯了同样错误的人。
  • 这似乎是一些像我这样的菜鸟会犯的错误。为什么有人对此投反对票?
  • 反对票(可能)是因为这个答案与问题无关。一般来说,这肯定是有用的建议(从它现在有一个积极的分数这一事实可以看出),但解决的问题与被问到的问题不同。
  • 我的回答与被问到的问题有关(原文如此),因为在某些情况下,我隐含建议的操作会使 OP 中的错误停止出现。当然,这没有意义,但这就是答案值得发布的原因。
  • @SethW.Klein - 不,它不相关。这个问题是关于 libdvm.so 的,它不是应用程序的一部分,而是系统软件的一部分。你混淆了一些不相关的东西,所以你的帖子在这里不是有用的贡献。这个问题中给出的警告不是任何应用程序开发人员都可以解决的 - 尝试这样做只会浪费您和其他所有人的时间。
【解决方案3】:

我遇到了同样的错误,我通过删除设备上安装的其他版本的应用程序来修复它。

【讨论】:

  • 这对我来说似乎没问题。至少这是我们能做的。它解决了我的问题
  • 不,这不能解决问题标题中的问题,因为 libdvm.so 是设备系统软件的一部分,而不是应用程序的一部分。
  • 它也解决了我的问题。
【解决方案4】:

这个错误背后可能有很多原因, 其中之一就是我得到的, 但后来这个错误就解决了。

在创建模拟器时检查,它是否'兼容'?在模拟器选择屏幕上[参见最后一列]。

如果不兼容,则通过编辑现有的“Emulator”选择“target sdk”作为最高版本[因为它应该大于 min sdk]。

【讨论】:

  • 没有。 这与问题无关。像许多其他发布无用答案的人一样,您混淆了不相关的问题 - 充其量您只是切换到具有 Android 版本的模拟器,该版本不包括会生成警告的检查,但仍然存在在一个设备上。警告消息的实际原因已明确解释,包括 当它出现在 系统 代码中时开发人员无能为力这一事实,如此处所述。开发人员唯一可以采取行动的时间是当它出现在他们的代码中时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2014-09-21
  • 2019-02-04
相关资源
最近更新 更多