Android Studio pm安装已中止

时间:2015-05-27 15:22:38

标签: android android-studio adb

我试图从Android工作室在我的GS5上运行一个应用程序,我得到了这个:

Waiting for device.
Target device: samsung-sm_g900v-f3af9744
Uploading file
local path: D:\Android\Projects\TestProject\build\outputs\apk\TestProject-debug.apk
remote path: /data/local/tmp/com.brian.testproject
Installing com.datascan.mobilescripts
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.brian.testproject"
Aborted

似乎是将文件复制到设备,我可以在/ data / local / tmp目录中看到它。它刚好在“pm安装”阶段失败了。

在手机上,我打开了USB调试并授权了电脑。这是我运行ADB设备时得到的结果:

D:\Android\sdk\platform-tools>adb devices
List of devices attached
f3af9744        device

所以这似乎是正确的。我不确定问题是什么。谷歌搜索这个问题并没有给我任何相关的结果。

有谁知道如何获得“Aborted”以外的更多信息?感谢任何帮助,谢谢!

修改

正如@AlexP所建议的那样。我运行了“adb logcat -d -s PackageManager:*”,这就是结果:

D:\Android\sdk\platform-tools>adb logcat -d -s PackageManager:*
--------- beginning of main
--------- beginning of system

没什么帮助,但是我确实决定在运行pm安装时观察logcat,我发现了这个错误条目:

Tag=appproc  |  Text= ERROR: Could not find class 'com.android.commands.pm.Pm'
Tag=art      |  Text= art.runtime/thread.cc:1105] No pending exeption expected: java.lang.ClassNotFoundException: Didn't find class "com.android.commands.pm.Pm" on path: DexPathList[[zip file "/system/framework/pm.jar"],nativeLibraryDirectories=]/vendor/lib, /system/lib]]

接下来是一大堆艺术错误条目。

所以看起来我的手机似乎缺少一些东西,也许?

4 个答案:

答案 0 :(得分:8)

Android Studio在Galaxy S5上失败的原因是因为adbd(手机上的ADB服务而不是你的PC),在这款手机的root版本上没有以root身份运行,这是一项安全措施。您可以通过手动尝试执行Android Studio apk并在设备上执行命令并发现它们无法执行来验证这一点,但是使用“su ...”重试它们并看到应用程序在设备上安装并启动。有三种方法可以解决此问题并取消阻止Android Studio:

选项:

  1. 闪存包含修改的ROM - 根据我的理解,您不希望保留在库存图像上;也是一个很好的安全措施,不要让adbd一直以root身份运行。较旧的roms也属于这一类,但是你缺少Stock Rom更新和安全补丁。
  2. 创建一个自定义boot.img并将其刷新到手机 - 这基本上是一个自定义内核,由于与上述选项1相似的原因而不需要。
  3. 在进行应用开发时,使用root权限在您的设备上重新启动adbd - 通过各种方法可以轻松实现首选和可实现的目标,包括:
  4. 首选解决方案:

    一个。通过终止手机上的服务并使用终端应用程序左键重启adbd以使用root权限(不安全模式),使用“su”重新启动它。完成应用开发后,重新启动手机,adbd将恢复安全模式,恢复安全措施。

    湾使用Chainfire的ADB不安全应用程序,该应用程序在XDA上免费下载(下面的链接/链接)或在Google Play上付费以支持他的工作。您可以在应用中切换模式。在应用程序中,您还可以选择在重新启动时自动重新启用不安全模式。

    <强>参考文献:

    https://android.stackexchange.com/questions/5884/is-there-a-way-for-me-to-run-adb-shell-as-root-without-typing-in-su

    http://forum.xda-developers.com/showthread.php?t=1687590(包括免费下载链接)

    https://play.google.com/store/apps/details?id=eu.chainfire.adbd(支持Chainfire的工作)

答案 1 :(得分:5)

可能的解决方案:

1。 检查您的应用是否留下了任何数据:

首先,如果已安装该应用,请清除缓存数据并将其卸载     在“系统设置”下,然后“应用程序管理器”     http://i.stack.imgur.com/b3oys.jpg

然后

  
      
  • 运行& adb shell pm uninstall com.brian.testproject
  • 强行卸载   
  • 检查“/data/data/com.brian.testproject/”并将其删除
  •   
  • 删除/data/system/packages.xml
  • 上包的所有条目   
  • 删除/data/system/packages.list
  • 中包的所有条目   
  • 您也可以安装SDMaiD并清理您的设备,尤其是使用“CorpseFinder”和“AppCleaner”
  •   

2。 尝试手动安装应用并调试结果:

在你的情况下,你有一个关于安卓工作室的问题...手动安装它以通过命令行获得更详细的消息

$ adb push D:\Android\..\TestProject-debug.apk /sdcard/myapp.apk
$ adb shell pm install /sdcard/myapp.apk

3。 检查Android Studio和您的应用来源

更改目标api级别:

  
  
      
  • 如果您没有最新版本,请更新您的Android工作室
  •   
  • 如果您的应用使用库,则必须重新编译它们。
  •   

4. 检查系统设置:

  
      
  • 检查init.rc的BOOTCLASSPATH。 BOOTCLASSPATH必须包含/system/framework/ext.jar和/system/framework/framework.jar等。

  •   
  • 检查build / core / dex_preopt.mk的DEXPREOPT_BOOT_JARS。 DEXPREOPT_BOOT_JARS必须包含ext和框架等。

  •   
  • BOOTCLASSPATH上所有项目的顺序必须等于DEXPREOPT_BOOT_JARS上所有项目的顺序。

  •   

5. 直接在设备上尝试pm命令:

如果pm命令不起作用尝试直接在手机上使用终端的命令,看看它是否是PC和手机之间的连接问题

pm install /sdcard/myapp.apk

6. 再次重新安装你的rom(只需重新安装),无需删除。

答案 2 :(得分:1)

对于任何有同样问题的人,不幸的是,我能找到的唯一解决方案是降级我的ROM版本(到OA8)。一旦我这样做,adb就完美无缺。如果有人找到更好的解决方案,我肯定想知道。

答案 3 :(得分:-1)

Android Studio

第1步:转到文件 - &gt;无效并重新启动。

第2步:清理并重建项目。

第3步:转到项目文件夹运行

gradle clean

第4步:重启手机/模拟器。

完成!!!