为啥在真机上运行android程序,logcat不显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在真机上运行android程序,logcat不显示相关的知识,希望对你有一定的参考价值。

真机上运行android程序logcat不显示是因为一些rom默认关闭logcat,解决方法为:
1.需要root权限(部分rom不需要)
2.打开logcat,并设置level,执行命令如下(android 升级之后 adb 在 platform-tools中,不在tools中)
adb shell
echo 1 > /sys/kernel/logger/log_main/enable
说明:将1写入日志开关文件,1为开,0为关
echo 2 >/sys/kernel/logger/log_main/priority
说明:将代表level的2写入优先级文件
3.重启adb,如果使用eclipse,先关闭eclipse,再重启adb,再启动eclipse
adb kill-server
adb start-server
4.此时logcat应该可以工作了,如果仍旧不工作,则更新adb
android update adb
5.重复第三步,此时logcat应该可以工作了,如果仍旧不工作,找到个人主目录下的android目录,如C:\Documents and Settings\Administrator\.android
找到这个目录下的adb_usb.ini文件,其内容默认只有三行,全为注释,在后面添加一行,内容为0x12d1
6.重复第三步,此时logcat应该可以工作了
参考技术A resetadb就OK了。。这是坑爹的eclipse常见问题。。我都换用androidstudio了

为啥 logcat 显示这个? [复制]

【中文标题】为啥 logcat 显示这个? [复制]【英文标题】:Why logcat showing this? [duplicate]为什么 logcat 显示这个? [复制] 【发布时间】:2012-10-23 10:13:17 【问题描述】:

我在eclipse (Helios) 中使用带有 4.1 版本模拟器的 android 最新版本 sdk。每件事都运行良好。但是在我的logcat 中,任何应用程序的每次运行都会得到以下声明。

I/Choreographer(1250): Skipped 1001 frames!  The application may be doing too much work on its main thread.

即使在 Hello world 应用程序中,也会得到相同的 logcat 输出。我没有在我的应用程序中使用多线程。谁能告诉我在我的 logcat 中获取这些日志的原因。

这是我的代码

public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_jsonparsing);

    _mContext = this;
    lv = (ListView) findViewById(R.id.listview);

    new JSONParserTask().execute();

在我的异步任务中,我从服务器获取 JSONArray,对其进行解析并列出。

【问题讨论】:

也许即使您的应用程序没有运行,它也会显示相同的内容? 不,它仅在启动我的(任何即示例或我的工作项目)应用程序时显示。 正如它所说:您正在 UI 线程上进行非 UI 计算。比如查询 sqlite db、评估共享偏好等 但我根本不使用任何数据库,共享偏好,也不做绘图,动画也。 您是否正确使用了 JSONParserTask(),请记住仅将 doInBackground() 用于大型任务。 onPostExecute() 在主 UI 线程中执行,所以不要在那里执行任何繁重的任务,如果可能的话,也粘贴你的 JSONParserTask!! 【参考方案1】:

Android 开发者文档提供了这个:

choreographer 从显示子系统接收定时脉冲(例如垂直同步),然后安排工作作为渲染下一个显示帧的一部分发生。

应用程序通常使用动画框架或视图层次结构中的更高级别抽象间接与choreographer 交互。

更多信息,请参考link和this。

【讨论】:

那么,我怎样才能防止这些日志出现在我的 logcat 中。因为我没有使用任何动画和绘图。 @Androholic 有时这是不可避免的。我在使用逐步调试时经常看到这个日志。编舞只告诉你它跳过的帧,它可能是由于你的 UI 线程上的一些耗时任务引起的,或者像我的情况是由调试暂停和重新启动引起的。因此,如果您在 UI 线程中没有调用任何繁重的任务,请忽略它。 我认为没有办法阻止这种情况。由于系统需要很长时间才能完成特定任务,Choreographer 将在 logcat 中发布说“该应用程序可能在其主线程”。【参考方案2】:

这个logcat跟踪

 I/Choreographer(1250): Skipped 1001 frames! 

应用程序可能在其主线程上做了太多工作,这表明您在主线程中执行了一些庞大的任务。如果您正在执行此类任务,请使用单独的线程机制(AsyncTaskThread 等)来执行此操作,此日志应该会消失。

如果不是,请粘贴你的代码的sn-p!!

【讨论】:

我在编辑中添加了主线程代码。【参考方案3】:

您是否在模拟器上运行您的应用程序。我猜您增加分配给您的 AVD 的内存可能会消除此警告!!..当我的设备模拟器分配的内存较少时,我会遇到类似的问题

【讨论】:

以上是关于为啥在真机上运行android程序,logcat不显示的主要内容,如果未能解决你的问题,请参考以下文章

如何在不发布和Eclipse的情况下在真机上安装Android应用程序?

为啥 android logcat 不显示运行时异常的堆栈跟踪?

为啥CameraX预览在真机上模糊不清,怎么对焦?

为啥 logcat 在我的 Android 中不显示任何内容?

为啥kivy mapview本身在android上似乎是一个错误?

如何在真机上运行 Robotium 测试