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

安装完成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的单板可以正常联调了。
为了验证我的做法是否有效,我重新把刚才安装的apk卸载掉,退回刚才所有手动修改的文件的权限。在去用Android Studio adb连接上去run 应用的时候发现不报错了,可以直接安装成功。好奇怪,怎么这次不修改权限也可跑起来,好吧,没整清楚。
但可以肯定的是这个错误确实是由Framework下文件的权限不对造成的,修改完权限后确实是有用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Android Studio的Hello World代码示例: 1. 首先,在Android Studio中创建一个新的项目。 2. 在项目结构中,找到app > java > 包名 > MainActivity.java文件。 3. 打开MainActivity.java文件,并将以下代码复制粘贴到文件中: ```java package com.example.myapplication; // 替换为你的包名 import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); textView.setText("Hello World!"); } } ``` 4. 接下来,在res > layout文件夹中找到activity_main.xml文件。 5. 打开activity_main.xml文件,并将以下代码复制粘贴到文件中: ```xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" /> </LinearLayout> ``` 6. 最后,点击运行按钮或使用快捷键运行应用程序。 这段代码创建了一个简单的布局,其中包含一个TextView,用于显示"Hello World!"的文本。在MainActivity的onCreate方法中,我们通过findViewById找到TextView,并将文本设置为"Hello World!"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值