您的位置:首页 > 移动开发 > Android开发

Android Studio HelloWord 测试程序在Android5.1真机上运行异常分析

2016-05-04 10:10 429 查看
安装完成Android Studio以后,想跑一下HelloWord的测试程序,发现在模拟器上跑起来正常,但在真机上运行起来有问题,API选择的是22,Android5.1。

报错如下:

05-03 09:27:03.660 5349-5361/? E/cutils-trace: Error opening trace file: Permission denied (13)

05-03 09:27:03.716 5349-5349/? E/appproc: ERROR: could not find class ‘com.android.commands.pm.Pm’

05-03 09:27:03.716 5349-5349/? A/art: art/runtime/thread.cc:1143] No pending exception expected: java.lang.ClassNotFoundException: Didn’t find class “com.android.commands.pm.Pm” on path: DexPathList[[zip file “/system/framework/pm.jar”],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]

05-03 09:27:03.717 5349-5349/? A/art: art/runtime/thread.cc:1143] at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)

05-03 09:27:03.717 5349-5349/? A/art: art/runtime/thread.cc:1143] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)

05-03 09:27:03.717 5349-5349/? A/art: art/runtime/thread.cc:1143] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)

05-03 09:27:03.717 5349-5349/? A/art: art/runtime/thread.cc:1143]

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] Runtime aborting…

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] Aborting thread:

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] “main” prio=5 tid=1 Runnable

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] | group=”” sCount=0 dsCount=0 obj=0x12de05e0 self=0x7fa1895000

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] | sysTid=5349 nice=0 cgrp=default sched=0/0 handle=0x7fa51dee50

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] | state=R schedstat=( 0 0 0 ) utm=171 stm=30 core=2 HZ=100

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] | stack=0x7fc0a2b000-0x7fc0a2d000 stackSize=8MB

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] | held mutexes= “abort lock” “mutator lock”(shared held)

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] native: #00 pc 000045cc /system/lib64/libbacktrace_libc++.so (Backtrace::Unwind(unsigned long, ucontext*)+28)

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] native: #01 pc 00000027 ???

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] (no managed stack frames)

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] Pending exception java.lang.ClassNotFoundException thrown by ‘unknown throw location’

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] java.lang.ClassNotFoundException: Didn’t find class “com.android.commands.pm.Pm” on path: DexPathList[[zip file “/system/framework/pm.jar”],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] Dumping all threads without appropriate locks held: thread list lock

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] All threads:

05-03 09:27:03.878 5349-5349/? A/art: art/runtime/runtime.cc:289] DALVIK THREADS (10):

05-03 09:27:03.882 5349-5349/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 5349 (main)

05-03 09:27:03.998 1512-1512/? E/DEBUG: AM write failure (32 / Broken pipe)

05-03 09:27:05.679 2578-2578/com.tianci.push E/push_service: !!!!!!!!!!!!!!!!!!bar-code===

05-03 09:27:06.634 5383-5396/? E/cutils-trace: Error opening trace file: Permission denied (13)

05-03 09:27:06.688 5383-5383/? E/appproc: ERROR: could not find class ‘com.android.commands.am.Am’

05-03 09:27:06.688 5383-5383/? A/art: art/runtime/thread.cc:1143] No pending exception expected: java.lang.ClassNotFoundException: Didn’t find class “com.android.commands.am.Am” on path: DexPathList[[zip file “/system/framework/am.jar”],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]

05-03 09:27:06.688 5383-5383/? A/art: art/runtime/thread.cc:1143] at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)

05-03 09:27:06.688 5383-5383/? A/art: art/runtime/thread.cc:1143] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)

05-03 09:27:06.689 5383-5383/? A/art: art/runtime/thread.cc:1143] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)

05-03 09:27:06.689 5383-5383/? A/art: art/runtime/thread.cc:1143]

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] Runtime aborting…

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] Aborting thread:

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] “main” prio=5 tid=1 Runnable

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] | group=”” sCount=0 dsCount=0 obj=0x2c8055e0 self=0x7f7e895000

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] | sysTid=5383 nice=0 cgrp=default sched=0/0 handle=0x7f82306e50

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] | state=R schedstat=( 0 0 0 ) utm=163 stm=32 core=1 HZ=100

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] | stack=0x7fde77a000-0x7fde77c000 stackSize=8MB

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] | held mutexes= “abort lock” “mutator lock”(shared held)

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] native: #00 pc 000045cc /system/lib64/libbacktrace_libc++.so (Backtrace::Unwind(unsigned long, ucontext*)+28)

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] native: #01 pc 00000027 ???

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] (no managed stack frames)

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] Pending exception java.lang.ClassNotFoundException thrown by ‘unknown throw location’

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] java.lang.ClassNotFoundException: Didn’t find class “com.android.commands.am.Am” on path: DexPathList[[zip file “/system/framework/am.jar”],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:511)

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:469)

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] Dumping all threads without appropriate locks held: thread list lock

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] All threads:

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] DALVIK THREADS (10):

05-03 09:27:06.846 5383-5383/? A/art: art/runtime/runtime.cc:289] “main” prio=5 tid=1 Runnable

感觉很奇怪,错误显示都找不到Pm和Am等一些Framework运行的关键类。怎么会找不到呢,手动cd到system/framework下去,看到这些jar包也都是存在的。

对比了一下其它Android4.4、Android5.0、Android5.1的真机平台,发现这个测试程序都是可以正常运行的。那说明,程序本身是没有问题的。难道是无法运行的这个平台的Android5.1 环境有什么差异导致。

手动把无法安装的apk,拷贝到U盘里面,执行pm install -r /mnt/usb/sda1/app-debug.apk &logcat 在后台打印出无法安装成功的完整错误信息,发现有报错,各种permission denied,在网上搜了下此错误,

https://community.freescale.com/thread/355198

**参照此说法进行修改

I have changed the permission to 0x777 for files present in /system/framework.**

先修改了Framework的文件夹权限是755,改成777以后发现错误依旧存在;

最后把Framework下所有的文件夹权限都改成777以后发现apk才能安装成功。

可能是Android5.1上对权限的要求更加严格了造成的吧,Android Studio终于和Android5.1的单板可以正常联调
a63d
了。

为了验证我的做法是否有效,我重新把刚才安装的apk卸载掉,退回刚才所有手动修改的文件的权限。在去用Android Studio adb连接上去run 应用的时候发现不报错了,可以直接安装成功。好奇怪,怎么这次不修改权限也可跑起来,好吧,没整清楚。

但可以肯定的是这个错误确实是由Framework下文件的权限不对造成的,修改完权限后确实是有用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: