- 浏览: 66463 次
- 性别:
- 来自: 北京
最新评论
-
创世雨天:
转换后getText就会是乱码 请问有解决办法吗?QQ4027 ...
EditText加入图片混编显示 -
logojimi:
楼主考虑了安装多种桌面,而且没有设置默认桌面的情况?
试试这行 ...
Android程序最小化 -
yuboxin5566:
这个东西可以具体点吗?我可以有你这个东东的全代码么?可以私聊Q ...
EditText加入图片混编显示 -
woaidousha:
那请问个问题,如果是想在listView下面加个expanda ...
ExpandableListView 怎么和其他组件相互整合布局 -
liutao6982:
厉害厉害。这一招都被你想出来啦。很好很强大。支持一下
EditText加入图片混编显示
这个问题从一开始接触到Android开发就困扰我很久了,平常除错少用中文log这个问题影响到不大,但是碰到需要把data (通常是远端的json or 本地端cache的sqlite)印出来观察这一种除错的情境时,这问题就头大了!
问了google也没有好解答,在android的google code里issue 1590就是在陈述这个问题,下面Comment提供的方法我试不出来,有趣的是用adb logcat在console下是不会有乱码的,所以问题一定出在ADT上,最近自已build了ADT trunk来用,刚好又遇到需要dump中文的data来debug的case,所以就尝试着自已来trace问题。
LogCat的相关的code都在LogPanel.java里,
public class LogPanel extends SelectionDependentPanel { private LogCatOuputReceiver mCurrentLogCat; @Override protected Control createControl(Composite parent) {...} private TabItem createTab(LogFilter filter, int index, boolean fillTable) {...} /** * Sent when a new device is selected. The new device can be accessed * with {@link #getCurrentDevice()}. */ @Override public void deviceSelected() { startLogCat(getCurrentDevice()); } public void startLogCat(final IDevice device) { if (device == mCurrentLoggedDevice) { return; } // if we have a logcat already running if (mCurrentLoggedDevice != null) { stopLogCat(false); mCurrentLoggedDevice = null; } resetUI(false); if (device != null) { // create a new output receiver mCurrentLogCat = new LogCatOuputReceiver(); // start the logcat in a different thread new Thread("Logcat") { //$NON-NLS-1$ @Override public void run() { while (device.isOnline() == false && mCurrentLogCat != null && mCurrentLogCat.isCancelled == false) { try { sleep(2000); } catch (InterruptedException e) { return; } } if (mCurrentLogCat == null || mCurrentLogCat.isCancelled) { // logcat was stopped/cancelled before the device became ready. return; } try { mCurrentLoggedDevice = device; device.executeShellCommand("logcat -v long", mCurrentLogCat, 0 /*timeout*/); //$NON-NLS-1$ } catch (Exception e) { Log.e("Logcat", e); } finally { // at this point the command is terminated. mCurrentLogCat = null; mCurrentLoggedDevice = null; } } }.start(); } } }
class Device的method executeShellCommand有三个参数分别是String command, IShellOutputReceiver receiver, int maxTimeToOutputResponse,它会透过class AdbHelper来做一下adb utility的指令操作。在第xx行时,执行了logcat -v long并把输出丢给LogCatOutputReceiver处理,所以我们的重点在于class LogCatOutputReceiver。继续追进去method executeShellCommand会发现它会把所有接收的data丢给interface IShellOutputReceiver的method addOutput处理,现在这个角色就是class LogCatOutputReceiver,而它的method addOutput是继承class MultiLineReceiver而来,问题就出在这里,把ISO -8859-1改成UTF-8就可以了...
public abstract class MultiLineReceiver implements IShellOutputReceiver { /* (non-Javadoc) * @see com.android.ddmlib.adb.IShellOutputReceiver#addOutput( * byte[], int, int) */ public final void addOutput(byte[] data, int offset, int length) { if (isCancelled() == false) { String s = null; try { s = new String(data, offset, length, "ISO-8859-1"); //问题在这里,把所有输出的字串都使用ISO-8859-1 decode } catch (UnsupportedEncodingException e) { // normal encoding didn't work, try the default one s = new String(data, offset,length); } // ok we've got a string if (s != null) { // if we had an unfinished line we add it. if (mUnfinishedLine != null) { s = mUnfinishedLine + s; mUnfinishedLine = null; } // now we split the lines mArray.clear(); int start = 0; do { int index = s.indexOf("\r\n", start); //$NON-NLS-1$ // if \r\n was not found, this is an unfinished line // and we store it to be processed for the next packet if (index == -1) { mUnfinishedLine = s.substring(start); break; } // so we found a \r\n; // extract the line String line = s.substring(start, index); if (mTrimLines) { line = line.trim(); } mArray.add(line); // move start to after the \r\n we found start = index + 2; } while (true); if (mArray.size() > 0) { // at this point we've split all the lines. // make the array String[] lines = mArray.toArray(new String[mArray.size()]); // send it for final processing processNewLines(lines); } } } } }
然后重新编译DDMS即可。
$javac -classpath ./ddms.jar:./ddmlib.jar MultiLineReceiver.java
下面便为重新编译后的的ADT,其中除了中文问题,其他与官方的完全相同。
- ADT-9.0.0-preview3_Chinese_.zip (4.2 MB)
- 下载次数: 228
发表评论
-
Android程序最小化
2011-03-25 14:30 2280/** * 最小化,回到桌面 * */ ... -
Android开发中如何定义和使用数组
2011-03-02 17:12 1670数组在Android开发中是如何定义和使用的呢? 在Andro ... -
EditText加入图片混编显示
2011-02-23 10:32 4060Android的WebView固然强大 ... -
Android 核心分析 之五 -----基本空间划分【转】
2011-01-18 14:23 804基本空间划分 Google给了我们一张系统架构图,在这张图上 ... -
Android核心分析之四 ---手机的软件形态【转】
2011-01-18 14:17 770手机的软件形态 上节我给出了手机的硬件树,本节将 ... -
Android是什么 之三-------手机之硬件形态【转】
2011-01-18 14:16 905Android是什么 之三-------手机之硬件形态 ... -
Android核心分析 之一--------分析方法论探讨之设计意图【转】
2011-01-18 14:09 814分析方法论探讨之设计 ... -
获取string.xml中的可变字符串
2011-01-14 15:47 20171、在string.xml中添加一个字符串,其中含有可变字符% ... -
在代码中获取在AndroidManifest.xml中配置的版本号
2011-01-14 15:42 1744在代码中的获取方法如下: String versionnam ... -
android2.1源码开发过程中的小技巧
2010-12-29 15:07 958归纳总结android2.1源码开发过程中的一些实用的小技巧。 ... -
升级Android SDK到2.3错误的解决办法
2010-12-29 15:01 973升级了2.3的朋友应该知道,升级到2.3后,Eclipse会报 ... -
Android如何解析Intent Filter (转)
2010-12-29 11:22 706匿名性质的运行时绑定使得理解Android如何解析一个隐式 ... -
使用JSON-LIB转换JAVA对象
2010-12-29 11:20 1029使用JSON-LIB可以极大的简化JAVA对象转换成 ... -
Android应用程序中Manifest.java文件的介绍(转)
2010-12-29 11:13 1706每一个Android应用程序包含一个manifest文件——A ... -
Android使用外部字体
2010-12-23 11:31 1440有时候,系统自带的字体并不能满足我们特殊的需求,这时候就需要引 ... -
动态获取drawable中的图片
2010-12-22 15:45 13031.首先在drawable中创建一定格式命名的图片。 2.在 ... -
Android配置文件(.properties文件)的使用
2010-12-20 16:39 50031.首先在源代码根目录(src下)下创建一个名为netconf ... -
Android 中离线用户的灰色头像处理方法
2010-12-20 14:04 1104android的图片资源默认是静态的,也就是说是单实例的;如果 ... -
Android Intent Action 大全
2010-12-17 18:59 659String ADD_SHORTCUT_ACTION 动作 ... -
使用mina传输大字节数组
2010-12-17 15:47 2315使用mina传输超过2k以上的数据时(采用tcp方式,如果是U ...
相关推荐
然而,有时开发者可能会遇到Eclipse中Logcat无法正常显示日志输出的问题。这个问题可能是由多种原因引起的,包括但不限于以下几点: 1. **ADB(Android Debug Bridge)连接问题**:确保你的设备已经正确地通过USB...
该jar包作用:解决eclipse在Android7.0以及7.0以上的手机上无logcat输出 1.将下载好的ddmlib.jar替换到自己ADT的tools目录lib下E:\adt\sdk\tools\lib 2.将下载好的ddmlib.jar替换到自己ADT的configuration目录org....
6. **配置Eclipse ADT**:在Eclipse中,打开`Window > Preferences > Android > DDMS`,检查`Device`视图是否已打开,并确保你的设备被正确识别。如果需要,可以尝试重启Eclipse和ADB服务。 7. **使用命令行调试**...
5. **更新ADT插件**:确保Eclipse中的ADT插件是最新的,因为旧版本可能不支持较新版本的Android系统。 6. **清空Logcat缓存**:在Eclipse的DDMS视图中,尝试清空Logcat缓存,然后重新启动应用以获取新的日志输出。 ...
2.网上的adt24.0.2版本对logcat日志有问题 3.里面已经包含com.android.ide.eclipse.adt_24.2.0.20160729.jar修复支持了jdk8编译环境 4.里面已经包含了build-tools\25.0.3的dx.jar修改后文件 参考链接: ...
在此之前,有些用户可能遇到了在Eclipse中无法查看或打印日志的情况,这可能是由于兼容性问题、插件冲突或者是配置错误导致的。24.2.0版本的更新旨在解决这些问题,确保开发者能够顺畅地获取和分析应用程序的运行...
呵呵,收小小的一分,因为别的资源下载也要积分。大家下载了直接和以前ADT一样更新,在eclipse的help->install new software直接安装本地,找到这个文件夹更新,重启eclipse,LOGCAT就完美支持中文啦。
要解决LogCat中文输出的问题,我们可以从两个方面入手: 1. **修改Log类的输出方式**: Android系统的Log类提供了打印日志的方法,如`Log.v()`, `Log.d()`, `Log.i()`, `Log.w()`, 和 `Log.e()`。我们可以自定义一...
解决Android Eclipse连接Android7.0版本以上的手机,显示unknown,无logcat输出的问题 解决方式:1.将下载好的压缩解压包解压,复制ddmlib.jar 2.打开android eclipse 安装路径:D:\android-eclipse\eclipse\...
首先,要在Eclipse中使用ADT插件,你需要确保已经安装了Java Development Kit (JDK)和Eclipse IDE。然后,可以通过Eclipse的"Help" -> "Install New Software"菜单来添加ADT插件的更新站点。输入官方提供的更新地址...
如果你遇到上述问题,可以尝试升级Eclipse中的ADT至这个版本。升级过程通常包括卸载现有的ADT插件,然后导入ADT-24.2.0-20160729.zip文件中的内容。导入完成后,确保在Eclipse的插件管理器中正确安装并激活新版本的...
6. **安装与使用**:要使用ADT-24.2.0,用户需要先拥有Eclipse IDE,然后将这个压缩包解压,按照官方指南将ADT导入到Eclipse中。安装完成后,开发者可以创建新的Android项目,编写代码,并利用ADT提供的工具进行编译...
**Android Development Toolkit (ADT) 24.2.0** **一、ADT简介** ...总之,ADT-24.2.0作为Eclipse中的一个重要插件,为Android开发者提供了全面的开发环境,让开发、测试和调试工作变得更加高效和便捷。
下面将详细介绍如何使用`logcat`以及如何解决Eclipse中查看logcat的问题。 首先,`logcat`能够捕获不同级别的日志信息,包括`VERBOSE`、`DEBUG`、`INFO`、`WARN`、`ERROR`和`FATAL`。这些级别按照严重性递增,通常...
2. **调试工具**:利用ADT内置的调试工具,开发者可以直接在Eclipse中启动应用并设置断点进行调试,通过LogCat视图查看日志信息,分析应用运行情况。 3. **布局预览**:在进行UI设计时,ADT提供了布局预览功能,可以...
1. **Eclipse中的Logcat窗口**:在Eclipse IDE中,可以通过切换到Debug模式或DDMS模式来查看Logcat。启动Android模拟器后,Logcat窗口将自动显示出来。 - **调试信息过滤器**:Logcat窗口右上角提供了V、D、I、W、...
**Android-LogcatView:手机中的日志控制台** 在Android应用开发中,日志(Logcat)是一个至关重要的工具,它允许开发者查看应用程序运行时的输出信息,包括错误、警告、调试信息等。通常,开发者会在计算机上的...
- 该链接提供了一种在Eclipse中设置Logcat的方法,适用于使用Eclipse作为开发工具的开发者。 #### 四、具体操作步骤详解 1. **确保设备连接正确**: - 确认手机已正确连接至电脑,并且在设备管理器中可以看到...
这些文件将允许用户在Eclipse中安装和配置ADT,以便进行Android应用开发。 在ADT 24.2.0中,开发者可能会找到以下关键特性: 1. **代码编辑器**:支持自动完成、错误检查和格式化,提高编码效率。 2. **图形布局...
> 一款可以在手机中打开logcat控制台 方便快捷 支持内容搜索 支持自定义标题 支持根据tag筛选 支持根据log级别显示 如何引入 Android Studio 引入 第1步 将JitPack存储库添加到您的构建文件 将其添加到存储库末尾...