无法在升级到 Android Lollipop 的设备上使用 adb 安装 apk

Unable to install apk using adb on device upgraded to Android Lollipop

我最近将我的一个 Android 设备升级到 Android Lollipop (5.0),现在我无法调试我的应用程序,甚至使用 adb 在设备上安装 apk。我收到以下错误

java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String android.os.SystemProperties.native_get(java.lang.St
ring, java.lang.String) (tried Java_android_os_SystemProperties_native_1get and Java_android_os_SystemProperties_native_1get__Lj
ava_lang_String_2Ljava_lang_String_2)
        at android.os.SystemProperties.native_get(Native Method)
        at android.os.SystemProperties.get(SystemProperties.java:64)
        at android.os.Environment.<clinit>(Environment.java:354)
        at android.os.Environment.getLegacyExternalStorageDirectory(Environment.java:488)
        at android.os.Debug.<clinit>(Debug.java:96)
        at android.ddm.DdmHandleHello.handleHELO(DdmHandleHello.java:164)
        at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:91)
        at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
java.lang.UnsatisfiedLinkError: android.os.Debug
        at android.ddm.DdmHandleHello.handleFEAT(DdmHandleHello.java:176)
        at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:93)
        at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
java.lang.UnsatisfiedLinkError: android.os.Debug
        at android.ddm.DdmHandleProfiling.handleMPRQ(DdmHandleProfiling.java:187)
        at android.ddm.DdmHandleProfiling.handleChunk(DdmHandleProfiling.java:88)
        at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)

我的设备是 Asus FonePad 7 ME175CG 或 K00Z

内核版本

3.10.20-i386_cpt

android@mec9#1

4 月 20 日星期一 13:30:08 CST 2015

这个问题有解决办法吗?

已更新

首先感谢那些关注这个非常具体问题的人,真的非常感谢

进一步说明,

当我收到这个错误时,我在整个宇宙中搜索了短语 java.lang.UnsatisfiedLinkError 并尝试了任何似乎适用的解决方案,以及 [=55= 建议的解决方案]@Kushal 和其他人。大多数问题是(现在仍然是)针对 HTC M8 和华硕以外的设备。如果你访问这个post,你可能会看到我的一个答案,它被 SO guards 删除了,我承认这不是一个真正的答案,我 post 答案虽然我对解决真的很失望问题。

无论如何,我到目前为止所做的可能对其他人有帮助的是,

  1. 首先,我将 Android SDK tools 升级到最新版本 24.2。在那之后,当我尝试 adb install demo.apk 时,在某些情况下它成功了,有时却失败了。我杀死了设备上的所有 运行 个应用程序(正如某些人所建议的那样),但它有时有效,有时无效。
  2. 然后,我尝试了其他解决方案,特别是这个 post 所建议的解决方案。事实上,当我尝试使用 Intellij IDEA 调试应用程序时,IDE 本身按照建议的程序进行操作,结果是

您可以看到 IDE 本身按照@Kushal 建议的程序执行。

在那之后,我找到了几条记录(指几条)here and here,后面有人说

This was a bug in some HTC devices that was fixed with L-MR1

因此我想到华硕团队可能会提供修复程序,你们知道,请提供给我。

谢谢

我不知道为什么会出现此问题,但您可以通过关闭设备上的所有 运行 应用程序来成功避免此问题。

还有

此错误消息是由于制造商发布二进制文件问题(在本例中为Asus)。此错误不会出现在 Google NexusSamsung Galaxy 中,因为它们采用二进制处理

解决方案:

搜索上述问题后,在其他 Stack Overflow 问题上找到以下解决方案:

  1. 使用终端,只需使用 adb 重新安装即可避免 Android Studio 重新编译时间:

    $终端:/sdk/platform-tools/adb安装-r

而且通常都有效。如果再次失败,只需运行再次执行此命令

  1. 如果真的想尝试的话,流程是:

    1. 关闭 Studio(或尝试禁用工具 | Android | 启用 ADB 集成)
    2. 在 shell 上执行以下操作:

       $ adb push /path/to/your/project/app/build/outputs/apk/app-debug.apk /data
      
       $ adb shell pm install /data/app-debug.apk
      
       $ (am start command from comment #4/#5)
      
    3. 重新启动 IDE(或重新启用 ADB 集成)。

此解决方案由 Google 小组建议,用于替代解决上述问题 Here

参考答案:Here

这样你就可以重新安装apk并且不会出现以上错误

我找到了解决方案,但我不确定其他人是否愿意使用它,因为它可能会损坏设备并导致其无法使用

事实上,由于问题收到的答案听起来只是复制和粘贴其他问题的答案,不适用于我的情况,我失望地尝试做出激进的举动并刷新我的设备以降级其软件升级到 Android 4.2.2 但碰巧我决定再次将我的设备刷新到 Android Lollipop 看看它是否解决了这个问题并且侥幸 它做到了 (至少在我的例子中)!

重要提示!

在执行此过程之前,请考虑以下事实:您的设备可能会损坏并且您会丢失设备上的所有数据。所以请在继续之前备份一份。

我搜索了很多并找到了部分描述的方法 here and here 但最后我遵循了这个过程:

  1. 根据您的设备类型从此处 (ASUS support or FonePad Support) 下载正确的更新文件 (ww, tw或其他)。我的是 ww 并下载了 ASUS Fonepad 7 (ME175CG) 软件映像版本:WW_V6.3.7 For WW.
  2. 然后把下载的文件改成ASUS_BUNDEL.ZIP
  3. 然后将该文件复制到根内存中
  4. 将设备置于恢复模式(通过保持音量和 同时按下电源键)
  5. 选择 SD 下载

设备开始闪烁,完成后您拥有一台全新的设备,问题已完全解决。

现在我可以像以前一样使用 adb 命令安装 apk 并调试我的应用程序,而且我再也没有看到讨厌的错误。

我会打开这个答案来接收其他人的反馈,然后我将其标记为真实答案。

我希望这可以帮助其他人解决问题。

禁用 Tools -> Android -> Enable ADB Integration 解决了我的问题。

运行 在华硕 Zenfone 2 上。

我在 Asus MemoPad ME70CX 上遇到了同样的问题,通过使用命令行重启 ADB 服务器解决了这个问题。此外,您可能需要使用 TaskManager 在后台终止 BlueStacks 进程 运行。