Android Studio pm安装已中止

Bri*_*ker 9 android adb android-studio

我试图从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
Run Code Online (Sandbox Code Playgroud)

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

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

D:\Android\sdk\platform-tools>adb devices
List of devices attached
f3af9744        device
Run Code Online (Sandbox Code Playgroud)

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

有谁知道如何获得"Aborted"之外的更多信息?任何帮助表示赞赏,谢谢!

编辑:

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

D:\Android\sdk\platform-tools>adb logcat -d -s PackageManager:*
--------- beginning of main
--------- beginning of system
Run Code Online (Sandbox Code Playgroud)

没什么帮助,但我确实决定在运行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]]
Run Code Online (Sandbox Code Playgroud)

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

所以似乎我的手机丢失了一些东西,也许吧?

Yas*_*arF 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 - 通过各种方法可以轻松实现首选和可实现的方法,包括:

首选方案:

一个.通过终止手机上的服务并使用终端应用程序左键重启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的工作)


int*_*ika 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.尝试手动安装应用程序并调试结果:

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

$ adb push D:\Android\..\TestProject-debug.apk /sdcard/myapp.apk
$ adb shell pm install /sdcard/myapp.apk
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

6.再次重新安装rom(只需重新安装),无需擦除.