Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Studio pm install aborted

Im trying to run an application on my GS5 from android studio and Im getting this:

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

It seems to be copying the file to the device, I can see it in the /data/local/tmp directory. Its just failing at the "pm install" stage.

On the phone I turned on USB Debugging and authorized the computer. Here is what I get when I run ADB devices:

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

So that seems to be correct. Im not really sure what the problem is. Google search on the problem didnt give me any relevant results.

Does anyone know how to get more information beyond "Aborted"? Any help is appreciated, Thanks!

EDIT:

As suggested by @AlexP. I ran "adb logcat -d -s PackageManager:*", this was the result:

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

Not much help, but I did decide to watch the logcat as the pm install was being run and I found this error entry:

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]]

Followed by a whole slew of art error entries.

So it seems as though my phone is missing something, maybe?

like image 610
Brian Tacker Avatar asked May 27 '15 15:05

Brian Tacker


2 Answers

The reason that Android Studio fails on Galaxy S5 is because the adbd (ADB service on the phone not your PC), on rooted version of this phone does not run as root, which is a security measure. You can verify this by manually trying to execute the Android Studio apk and execute commands on the device and finding out that they are failing to execute, but retrying them using "su ..." and see that the app installs and starts on the device. There are three options to resolve this and unblock Android Studio:

Options:

  1. Flash a ROM that includes the modification - not desired as from my understanding you would like to stay on the stock image; also a good security measure not to have adbd running as root all the time. Older roms fall in this category as well, but then you are missing Stock Rom updates and security patches.
  2. Create a custom boot.img and flash it to your phone - this is basically a custom kernel and not desired for a similar reasons than above option 1.
  3. Restart adbd on your device with root privileges when doing app development - preferred and achievable fairly easy thru various methods including:

Preferred Solution:

a. Restart adbd with root privileges (insecure mode) by killing the service on the phone and using a terminal app or so to restart it using "su". After you are done with your app development, restart your phone and adbd will be back in secure mode, restoring the security measures.

b. Use Chainfire's ADB insecure app, which is free on XDA (download/link below) or pay for it on Google Play to support his work. You can toggle the mode in the app. In the app, you also have an option to auto re-enable the insecure mode on reboots.

References:

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 (includes free download link)

https://play.google.com/store/apps/details?id=eu.chainfire.adbd (for supporting Chainfire's work)

like image 99
YasharF Avatar answered Oct 14 '22 07:10

YasharF


Possible Solutions :

1. Check if your app had left any datas :

First if the app is already installed, then clean cache data and uninstall it Under "System Settings" then "Application Manager" http://i.stack.imgur.com/b3oys.jpg

Then

  • Force uninstall by running & adb shell pm uninstall com.brian.testproject
  • Check "/data/data/com.brian.testproject/" and delete it
  • Remove any entries of your package on /data/system/packages.xml
  • Remove any entries of your package on /data/system/packages.list
  • Also you could install SDMaiD and clean your device, especially with "CorpseFinder" and "AppCleaner"

2. Try to install the app manually and debug the result :

In your case you have an issue with pm over android studio... install it manually to have a more detailed message over command line

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

3. Check Android Studio and your app sources

Change the targeted api level :

  • Right click on your app dir + Open Module Settings + app + check sdk version + change target and minimum under "Flavor"
  • Sync gradle button
  • Rebuild project
  • https://www.youtube.com/watch?v=v4b7C6Q-9dI

  • Update your android studio if you don't have the last release
  • If your app use libraries, you have to recompile them.

4. Check System Settings :

  • Check BOOTCLASSPATH of your init.rc. BOOTCLASSPATH must include /system/framework/ext.jar and /system/framework/framework.jar and so on.

  • Check DEXPREOPT_BOOT_JARS of build/core/dex_preopt.mk. DEXPREOPT_BOOT_JARS must include ext and framework and so on.

  • The order of all items on BOOTCLASSPATH must be equal to the order of all items on DEXPREOPT_BOOT_JARS.


5. Try pm command directly on the device :

if pm command does not work try that command with a terminal directly on the phone to see if it's a connection issue between pc and phone

pm install /sdcard/myapp.apk

6. Reinstall your rom once again (just reinstall it) no need to erase.

like image 5
intika Avatar answered Oct 14 '22 06:10

intika