Android.util.Log
常用的方法有以下5個:
Log.v()
Log.d()
Log.i()
Log.w()
Log.e()
根據(jù)首字母對應(yīng)
VERBOSE
DEBUG
INFO
WARN
ERROR
另外察署,Log太多時用來過濾和標(biāo)識分類log信息十厢。
JavaCrash
javaCrash是我們最為常見的嚴(yán)重錯誤了其馏,log中很容易可以找到其報錯的地方通過其標(biāo)注的位置開始檢查代碼象颖。
ANR
Application No Response 應(yīng)用響應(yīng)超時
Native Crash
一般是由Dalvik錯誤讯榕、狀態(tài)監(jiān)視調(diào)試器冈绊、C層代碼以及l(fā)ibc的一些問題導(dǎo)致的。當(dāng)系統(tǒng)發(fā)生Native Crash的時候乎莉,kernel首先會上報一個嚴(yán)重的警告信號(serious signal)
Memory Leak
內(nèi)存泄漏送讲,一般會報Java.lang.OutOfMemoryError
Kernel Panic
內(nèi)核發(fā)生不可恢復(fù)的錯誤,一般會重啟
Java Crash
關(guān)鍵字: “Exception”(一般在main log) 有時在system log 中惋啃。
內(nèi)存泄漏問題哼鬓,搜索 java.lang.OutOfMemoryError
常見的嚴(yán)重錯誤有如下幾類:
NullPointerException? :? 空對象錯誤
IllegalStateException:非法狀態(tài),比如在View沒有刷出來的時候去觸摸边灭。
IndexOutOfBoundsException
IllegalArgumentException
ExceptionInInitializerError
ClassCastException
RuntimeException
UnknownFormatConversionException
UnsupportContentTypeException
CursorIndexOutOfBoundsException
發(fā)生 java crash 一般直接找 FATAL 關(guān)鍵字就可以定位問題了异希,log中有詳細(xì)的文件名和行號。
ANR錯誤
關(guān)鍵字: “ANR? ”(system log)
ANR :Application?Not?Responding绒瘦,即應(yīng)用程序無響應(yīng)称簿。
ANR一般有三種類型:
KeyDispatchTimeout、(5 seconds)
BroadcastTimeout椭坚、(10 seconds)
ServiceTimeout予跌。(20 seconds)
發(fā)生ANR后在systemlog中 搜“ANR”關(guān)鍵字
可以得到當(dāng)前發(fā)生ANR的應(yīng)用程序和最近時間內(nèi)CPU使用率
?WARNING: Application does not specify an API level requirement!
[ApiDemos] Device API version is 8 (Android 2.2)
原因:
不影響正常運(yùn)行。在AndroidManifest.xml文件中沒有加API的版本號善茎,在 之間加
[ ApiDemos] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
[ ApiDemos] Please check logcat output for more details.
[ ApiDemos] Launch canceled!
該設(shè)備沒有足夠的存儲空間來安裝應(yīng)用程序,
【錯誤信息】
?Failed to push selection: Is a directory
原因:
原先目錄已經(jīng)有pkg_3.apk的文件夾频轿,再copy一個pkg_3.apk安裝文件時出現(xiàn)問題垂涯,解決辦法,先刪除掉pkg_3.apk的文件夾
[ActivityMain]: Dx
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg1/apache/commons/codec/net/RFC1522Codec;
[ ActivityMain]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[ ActivityMain]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143)
.....
[ ActivityMain]: Dx1 error; aborting
[ ActivityMain] Conversion to Dalvik format failed with error 1
原因:
【錯誤信息】
啟動Eclipse時出現(xiàn):
this android sdk requires android developer toolkit version 10.0.0 or above.
current version is 8.0.1.v201012062107-82219.
please update adt to the latest version
原因:
Eclipse的Android開發(fā)插件版本過低航邢,應(yīng)該下載ADT-10.0.0耕赘,并且
1. 啟動 Eclipse, 然后進(jìn)入 Help > Install New Software.
2. 在 Available Software 對話框里,點(diǎn)擊 Add....
【錯誤信息】
[Info] Failed to install Info.apk on device '?': Unable to open sync connection!
[ Info] java.io.IOException: Unable to open sync connection!
[ Info] Launch canceled!
原因:
關(guān)閉模擬器和eclipse膳殷,執(zhí)行adb kill-server命令操骡,然后重試一下
【錯誤信息】
調(diào)用Webservice時出現(xiàn)
java.net.SocketException: Permission denied (maybe missing INTERNET permission)
原因:
需要訪問到網(wǎng)絡(luò),所以赚窃,在AndroidManifest.xml中册招,需要進(jìn)行如下配置:
【錯誤信息】
org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/wsdl/}wsdl:definitions targetNamespace='http://bo.webservice.nqbx.nq.com'>@2:603 injava.io.InputStreamReader@44a3a7b0)
原因有可能是以下2個之一:
1)Webservice服務(wù)器的Soap版本為1.0,所以客戶端指定
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
VER11改為VER10
2)String serviceUrl = "http://200.200.200.11:10000/nqbx/service/InqBxWebService?wsdl";
Url指的是你的webservice的地址.一般都是以***.wsdl或者***.?wsdl結(jié)束的...但是.需要注意的是..要去掉后面的.wsdl或者.?wsdl
【錯誤信息】
在新的線程中 public class HttpThread extends Thread {...}
增加一個彈出窗體:
new AlertDialog.Builder(this).setTitle("數(shù)據(jù)加載失敗").setMessage("請檢查網(wǎng)絡(luò)連接情況")? ?? ?? ???.setPositiveButton("OK", new DialogInterface.OnClickListener(){? ?? ?? ?? ?public void onClick(DialogInterface dialoginterface, int i)? ?? ?? ?? ?{? ?? ?? ?? ?}? ?? ?? ?? ?}).show();
原因及解決辦法:
//不能在線程中操作UI界面
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
修改后:
new AlertDialog.Builder(com.nantsing.infoquery.chuanbo_detail.this).setTitle("數(shù)據(jù)加載失敗").setMessage("請檢查網(wǎng)絡(luò)連接情況")? ?? ?? ???.setPositiveButton("OK", new DialogInterface.OnClickListener(){? ?? ?? ?? ?public void onClick(DialogInterface dialoginterface, int i)? ?? ?? ?? ?{? ?? ?? ?? ?}
【錯誤信息】
The constructor AlertDialog.Builder(chuanbo_detail.HttpThread) is undefined
原因及解決辦法:
在UI主線程之外是無法對UI組件進(jìn)行控制的勒极。因?yàn)槟惚仨氃谛戮€程任務(wù)完成之后利用各種方法先UI主線程發(fā)送消息通知任務(wù)完成從而來顯示各種提示消息是掰。
線程間通信方法有多種,常用的是用handler來傳遞消息辱匿。
如下:
線程中構(gòu)造消息:
//構(gòu)造消息Message message = handle.obtainMessage();Bundle b = new Bundle();b.putString("tag", "1");message.setData(b);handle.sendMessage(message);
另外自定義消息:
/** * 捕獲消息隊列 fubin.pan 2011-04-02 */Handler handler = new Handler() {public void handleMessage(Message m) {if (!m.getData().getString("tag").equals("1")){? ?? ?? ?? ?? ?? ?? ?? ?? ? ...}else{new AlertDialog.Builder(chuanbo_detail.this).setTitle("數(shù)據(jù)加載失敗").setMessage("請檢查網(wǎng)絡(luò)連接情況键痛!")? ?? ???? ? ? ? .setPositiveButton("OK", new DialogInterface.OnClickListener(){? ?? ???? ? ? ? ? ? ? ? public void onClick(DialogInterface dialoginterface, int i)? ?? ???? ? ? ? ? ? ? ? {? ?? ???? ? ? ? ? ? ? ? }? ?? ?? ? }).show();}}};
【錯誤信息】
android低版本工程(如1.5)放到高版本環(huán)境中(如2.2)可能會上述錯誤炫彩,解決方法如下:
1。 如果不修改android sdk版本絮短,則使用project clean 命令作用于某工程即可江兢。
(該處理方式只是在高版本中兼容了低版本工程,未真正意義上的升級)
2丁频。 如果修改android sdk版本杉允,則需要以下幾個步驟:
1)修改SDK
選擇工程,build path --> configure build path ---> library 刪除引用的低版本SDK限府,
然后add External JARs,選擇高版本SDK,OK,保存
2)修改classpath文件
該文件可能存在該項(xiàng):
把她修改成
3) 修改AndroidManifest.xml
在AndroidManifest.xml文件中夺颤,application標(biāo)簽后添加
4) 修改default.properties(很重要)
該文件最后一行(前面沒用#的)target=android-3 該成target=android-8,保存胁勺。
再看看你的工程和新建的android 2.2的工程結(jié)構(gòu)就一樣了世澜。
【錯誤信息】
在線程debug(運(yùn)行沒有問題)時調(diào)用Webservice時出現(xiàn):
'JDI thread evaluations' has encountered a problem
Exception processing async thread queue
Exception processing async thread queue
JDI thread evaluations
原因及解決辦法:
與運(yùn)行無關(guān)的錯誤,關(guān)掉'expressions'視圖就可以了
【錯誤信息】
打開開源項(xiàng)目JavaEye Android client時出錯
http://javaeye-android-client.googlecode.com/svn/trunk/
這是 JavaEye 網(wǎng)站基于 Android 平臺的客戶端軟件署穗,可用以閱讀動靜寥裂、帖子、閑談, 收躲, RSS 等功用案疲。
[ JavaEye Android Client] Project has no default.properties file! Edit the project properties to set one.
原因及解決辦法:
遇到這種情況封恰,可以創(chuàng)建一個default.properties文件,如果創(chuàng)建之后還是有錯誤褐啡,那么delete這個project诺舔,重新import。
編輯default.properties 之后备畦,一般會自動創(chuàng)建 gen 目錄低飒, 如果沒有,也可嘗試手工創(chuàng)建懂盐。
?Adroid Adapter ADB Interface 嚴(yán)重錯誤
今天在配置完Eclipse和Android SDK開發(fā)環(huán)境之后褥赊,想用華為C8500手機(jī)通過USB連接電腦,并在手機(jī)上去調(diào)試莉恼,但莫名其妙出現(xiàn)Adroid Adapter ADB Interface 安裝嚴(yán)重錯誤拌喉,在豌豆莢手機(jī)精靈安裝驅(qū)動的時候,也出現(xiàn)這個錯誤俐银,后面也莫名奇妙的多裝幾次就好了尿背,還沒找到什么原因。
【錯誤信息】
用手機(jī)調(diào)試運(yùn)行出現(xiàn):
ActivityManager: Warning: Activity not started, its current task has been brought to the front
原因及解決辦法:
該手機(jī)已經(jīng)啟動了相同名字的應(yīng)用悉患,關(guān)閉之后再試残家!
【錯誤信息】
最近在打開SDK Manager.exe,更新SDK時售躁,會出現(xiàn)如下錯誤:
Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml,
reason: Connection timed out: connect
原因及解決辦法:
dl-ssl.google.com在大陸封掉了
解決方法就是修改C:\Windows\System32\drivers\etc\hosts文件坞淮。添加一行:
74.125.237.1? ?? ? dl-ssl.google.com
保存茴晋,重新啟動SDK Manager.exe
【錯誤信息】
[JavaEye Android Client] ------------------------------
[ JavaEye Android Client] Android Launch!
[ JavaEye Android Client] The connection to adb is down, and a severe error has occured.
[ JavaEye Android Client] You must restart adb and Eclipse.
[ JavaEye Android Client] Please ensure that adb is correctly located at 'C:\android\android-sdk-windows\platform-tools\adb.exe' and can be executed.
原因及解決辦法:
查看任務(wù)管理器,關(guān)閉所有adb.exe
重啟eclipse即可
【錯誤信息】
更新SDK時錯誤信息:
Site Authentication
Please login to the following ......
原因及解決辦法:
Cancel跳過提示
【錯誤信息】
打開Eclipse 提示安裝ADT 17
原因及解決辦法:
最新的Android SDK只能安裝ADT 17.0.0
可用的下載地址:http://download.csdn.net/detail/merrido/4169460回窘,
這里可不能用常規(guī)方法安裝這個 ADT 17.0.0.zip 文件诺擅, 首先得解壓這個文件,將里面的文件夾覆蓋掉Eclipse安裝目錄下的文件夾啡直。
然后再用Help-> install new software->Add -> Name: ADT? ?Archive:選擇ADT 17.0.0.zip
【錯誤信息】
安裝ADT 17.0.0時烁涌,提示:
Your original request has been modified.
"Android DDMS" is already installed, so an update will be performed instead.
"Android Development Tools" is already installed, so an update will be performed instead.
"Android Hierarchy Viewer" is already installed, so an update will be performed instead.
"Android Traceview" is already installed, so an update will be performed instead.
Cannot complete the install because one or more required items could not be found.
Software being installed: Android Development Tools 17.0.0.v201203161636-291853 (com.android.ide.eclipse.adt.feature.group 17.0.0.v201203161636-291853)
Missing requirement: Android Development Tools 17.0.0.v201203161636-291853 (com.android.ide.eclipse.adt.feature.group 17.0.0.v201203161636-291853) requires 'org.eclipse.core.runtime 3.6.0' but it could not be found
原因及解決辦法:
【錯誤信息】
Updates ADT 17.0.0時提示:
Cannot complete the install because one or more required items could not be found.
Software being installed: Android Development Tools 17.0.0.v201203161636-291853 (com.android.ide.eclipse.adt.feature.group 17.0.0.v201203161636-291853)
Missing requirement: Android Development Tools 17.0.0.v201203161636-291853 (com.android.ide.eclipse.adt.feature.group 17.0.0.v201203161636-291853) requires 'org.eclipse.core.runtime 3.6.0' but it could not be found
原因及解決辦法:
requires 'org.eclipse.core.runtime 3.6.0' but it could not be found
requires 'org.eclipse.ui 3.6.0' but it could not be found
eclipse需要升級到3.6.0,我的版本是3.5.2
【錯誤信息】
[ Info] ------------------------------
[ Info] Android Launch!
[ Info] Connection with adb was interrupted.
[ Info] 0 attempts have been made to reconnect.
[Info] You may want to manually restart adb from the Devices view.
原因及解決辦法:
重新啟動eclipse
【錯誤信息】
[ adb] ADB server didn't ACK
[ adb] * failed to start daemon *
原因及解決辦法:
查看任務(wù)管理器,關(guān)閉所有adb.exe
重啟eclipse
【錯誤信息】
[ApiDemos] ------------------------------
[ ApiDemos] Android Launch!
[ApiDemos] The connection to adb is down, and a severe error has occured.
[ ApiDemos] You must restart adb and Eclipse.
[ApiDemos] Please ensure that adb is correctly located at 'C:\android\android-sdk-windows\platform-tools\adb.exe' and can be executed.
原因及解決辦法:
重啟eclipse
【錯誤信息】
安裝android sdk時:
-= warning! =- A folder failed to be renamed or moved. On Windows this typically means that a program Is using that Folder (for example Windows Explorer or your anti-virus software.) Please momentarily deactivate your anti-virus software. Please also close any running programs that may be accessing the directory 'C:\android\android-sdk-windows/android-sdk-windows/too!s'. When ready, press YES to try again.
原因及解決辦法:
1, 復(fù)制 tools目錄
為一個新的目錄 tools-copy ,此時在android-sdk-windows 目錄下有兩個目錄 tools 和 tools-copy
2, 在tools-copy目錄以管理員身份運(yùn)行 android.bat 酒觅,這樣就可以正常 update all 了
3.重新運(yùn)行SDK Manager.exe.問題解決撮执!
【錯誤信息】
“正在啟動JavaEyeApiAccessor“遇到問題。
不能連接至VM
原因及解決辦法:
連接不到手機(jī)虛擬機(jī)
重啟拔插手機(jī)連接線
【錯誤信息】
調(diào)試的時候:
[ IpsosAutoAndroid] Failed to install IpsosAutoAndroid.apk on device '?': timeout
[IpsosAutoAndroid] Launch canceled!
原因及解決辦法:
連接真機(jī)調(diào)試的時候如果連接太久沒響應(yīng)就會出現(xiàn)timeout
1.在window-》prensent....-》android-》設(shè)置ddms的timeout時間舷丹。這種是就最有效抒钱、最簡潔的。
2.delete android里面的 apk颜凯,保證速度谋币。不過試過一次后,真機(jī)好像變“聰明了”症概,也出現(xiàn)timeout蕾额。
3.Cleaning the project (Project->Clean),不行就重啟eclipse或者android彼城,很郁悶的是诅蝶,重啟后運(yùn)行第一次可以。第二次就開始變慢了募壕,也就是出現(xiàn)timeout
4.關(guān)閉eclipse 秤涩,然后再重啟,就ok
【錯誤信息】
調(diào)用org.ksoap2.*訪問webservice時
: E/dalvikvm(354): Could not find class 'org.ksoap2.serialization.SoapObject', referenced from method......
: E/dalvikvm(354): Could not find class 'org.ksoap2.transport.HttpTransportSE', referenced from method......
【錯誤信息】
Unable to open stack trace file '/data/anr/traces.txt': Permission denied
原因及解決辦法:
Unable to open stack trace file '/data/anr/traces.txt': Permission 多見于這個Activity你沒有在AndroidManifest.xml中注冊司抱,就會報這樣的錯誤。
【錯誤信息】
source not found
找不到源
原因及解決辦法:
android目錄下沒有對應(yīng)的sources文件
如下圖黎烈,不知道為什么习柠,最新的SDK更新API 14/15中有Sources for Android SDK,而之前的版本的源碼就不更新,氣憤照棋!
下載對應(yīng)的SDK Sources后资溃,放到\android-sdk-windows\sources 目錄下就OK了!
【錯誤信息】
Android使用KSOAP2調(diào)用WebService時:
java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject
原因及解決辦法:
雖然標(biāo)明上 Java Build Path->Libraries中已經(jīng)引用了ksoap2-android 包烈炭,但是需要order and export中也把該包勾選上
【錯誤信息】
error: Error: No resource found that matches the given name (at 'layout_toLeftOf' with value'@id/top_send_btn').
header_questionitemlist.xml /IpsosAutoAndroid/res/layout 第 27 行 Android AAPT Problem
原因及解決辦法:
【錯誤信息】
無法解析導(dǎo)入 com.renren.api.connect.android.R
原因及解決辦法:
導(dǎo)入android源碼有錯溶锭,R.java文件不能自動生成解決方法
【錯誤信息】
Eclipse中的DDMS無法打開data文件夾下的內(nèi)容,也不能往里面寫東西
原因及解決辦法:
通過軟件獲取ROOT權(quán)限
【錯誤信息】
Fri May 04 16:27:46 CST 2012
Internal error logged from JDI Debug:
org.eclipse.jdi.TimeoutException: 等待包 8 時發(fā)生超時符隙。
at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:171)
at org.eclipse.jdi.internal.connect.PacketReceiveManager.getReply(PacketReceiveManager.java:180)
......
原因及解決辦法:
重新啟動eclipse,不行的話重啟機(jī)器
【錯誤信息】
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
原因及解決辦法:
如下是有問題的代碼:
Thread t = new Thread() {@Overridepublic void run() {super.run();try {QuestionItemlist = quesHandler.getData();if (QuestionItemlist.size() == 0) {Toast.makeText(questionitemlist2.this,"問卷題目為空",Toast.LENGTH_LONG).show();} else {Toast.makeText(questionitemlist2.this,"問卷題目已經(jīng)獲取",Toast.LENGTH_LONG).show();}} catch (Exception e) {e.printStackTrace();}}};t.start();【錯誤信息】
java.lang.IllegalArgumentException: The key must be an application-specific resource id.
原因及解決辦法:
mRadioButton.setTag(1,sQuestionItem.get(i).getToNext());//設(shè)置監(jiān)聽??ToNext:下一題目mRadioButton.setTag(2,sQuestionItem.get(i).getToEnd());//設(shè)置監(jiān)聽??ToEnd:是否終止拋出IllegalArgumentException的原因就在于key不唯一趴捅,正確代碼如下:
mRadioButton.setTag(R.id.tag_tonext,sQuestionItem.get(i).getToNext());//設(shè)置監(jiān)聽??ToNext:下一題目mRadioButton.setTag(R.id.tag_toend,sQuestionItem.get(i).getToEnd());//設(shè)置監(jiān)聽??ToEnd:是否終止
【錯誤信息】
點(diǎn)擊Debug 運(yùn)行 結(jié)果模擬器總是會彈出Waiting for Debugger 然后程序又可以正常運(yùn)行
如果你想調(diào)試的時候去掉 Waiting for Debugger 提示
原因及解決辦法:
重啟啟動機(jī)器就OK