出自于c博客.
----博主:紅日
使用Android開發(fā)工具eclipse的過程中,出現(xiàn)過很多問題癌幕,總結(jié)了一下,拿出來共同學(xué)習(xí):
問題1、ThisandroidSDK requires Android Developer Toolkit version 20.0.0 or above...
*在android_sdk_windows/tools/lib下的plugin.prop文件里把
#begin plugin.prop
plugin.verson=20.0.0
#end plugin.prop
變更為:
#begin plugin.prop
plugin.verson=18.0.0(其中這里的18.0.0是你目前的ADT版本)
#end plugin.prop
問題2:R cannot be resolved to a variable.
*方案一 系統(tǒng)自動(dòng)添加了import android.R這條語(yǔ)句;這個(gè)時(shí)候只要?jiǎng)h除這條語(yǔ)句就可以了寇甸。
方案二 布局文件里多了個(gè).out的xml文件,刪除這個(gè)xml文件疗涉,然后把工程clean下就可以了拿霉。
問題3:error opening trace file:No such file or directory.
這主要是android api的版本和模擬器(或手機(jī))的版本不一致導(dǎo)致的。把項(xiàng)目和模擬器都改成相同版本的咱扣,就不報(bào)錯(cuò)了绽淘。
問題4:FINAL EXCEPTION: main
Java.lang.RuntimeException:Unable to instantiate activity ComponentInfo{
com.項(xiàng)目名稱.包名.入口Activity名}:java.lang.ClassNotFoundException:com.chapter4layout3.入口Activity名.
原因分析:
AndroidManifest.xml中設(shè)置的“入口Activity名”并不是上面所提到的 Activity,即系統(tǒng)找不到Activity的入口闹伪,所以程序自然不能運(yùn)行沪铭。
android:name = "com.chapter4layout3.ExpanListViewDemoActivity(入口Activity)從下面的MAIN知道是入口Activity壮池,所要運(yùn)行的Activity必須是此名"
android:label ="label"="@string/app_name">
問題5:
android - "Bitmap too large to be uploaded into a texture"
出現(xiàn)這個(gè)問題的時(shí)候可以把硬加速改為false,即在Manifest文件的application中加入如下語(yǔ)句:
android:hardwareAccelerated="false"就可以顯示出來伦意。
問題6:
'ADB server didn't ACK'(The connection to adb is down, and a severe error has occured.)的解決辦法:
一般情況下1.先把任務(wù)管理器上所有的adb.exe關(guān)閉掉火窒,重啟eclipse就可解決。但如果這種辦法不行的話驮肉,可以試試:
1、先把eclipse關(guān)閉已骇。
2离钝、在管理器站到你的android SDK的platform-tools下,鍵入adb kill-server,如果adb關(guān)閉了會(huì)提示server not running *
3褪储、鍵入adb start-server 如果不成功會(huì)提示daemon not running.starting it now on port ***卵渴,而如果成功不提示任何語(yǔ)句的,這是再重新打開eclipse就可以正常運(yùn)行了鲤竹。
還有一種情況是開了豌豆莢浪读,導(dǎo)致了端口沖突。
我遇到的問題就是USB線真的開始有問題了辛藻,沒連接好電話碘橘,所以出現(xiàn)adb一運(yùn)行起來然后就消失的情況≈。⊙﹏⊙b汗痘拆。
問題7:
Unable to start activity ComponentInfo(....SecondActivity)java.lang.NullPointerException:
空指針異常:
空指針異常產(chǎn)生的主要原因:
1、當(dāng)一個(gè)對(duì)象不存在時(shí)又調(diào)用其方法會(huì)產(chǎn)生此異常obj.method()//obj對(duì)象不存在(比如一個(gè)對(duì)象str你沒有賦值氮墨,卻調(diào)用它就會(huì)出現(xiàn)空指針異常的情況)纺蛆。
2、當(dāng)訪問或修改一個(gè)對(duì)象不存在的字段時(shí)會(huì)產(chǎn)生異常obj.method()//method方法不存在规揪。
****我出現(xiàn)的問題是R.id.button01由于粗心寫成了R.layout.secondactivity這樣就找不到那個(gè)button01桥氏,所以會(huì)出現(xiàn)空指針異常。
空指針解決方法:
重點(diǎn)關(guān)注報(bào)錯(cuò)發(fā)生的所在行猛铅,通過空指針異常 產(chǎn)生的兩條主要原因診斷具體的錯(cuò)誤字支。同時(shí)為了避免空指針的發(fā)生,最好在做判斷處理時(shí)將“null”或者空值放到設(shè)定的值之前奕坟。
詳解:NullPointerException是空指針異常祥款。但是在java中沒有指針,怎么會(huì)有空指針異常呢月杉?在C++中刃跛,聲明的指針需要指向一個(gè)實(shí)例(通過new方法構(gòu)造),這個(gè)指針可以理解為地址苛萎。在java中桨昙,雖然沒有指針检号,但是有引用(通常稱為對(duì)象引用,一般直接說對(duì)象)蛙酪,引用也是要指向一個(gè)實(shí)例對(duì)象(通過new方法構(gòu)造)的齐苛,從這種意義上說,java中的引用于C++中的指針沒有區(qū)別桂塞,不同的是凹蜂,處于安全的目的,在java中不能對(duì)引用進(jìn)行操作阁危,而在C++中可以直接進(jìn)行指針的運(yùn)算玛痊,例如book++等。
所以這里的NullPointerException雖然不是真正的空指針異常狂打,但本質(zhì)上差不多擂煞,是因?yàn)橐脹]有指向具體的實(shí)例,所以當(dāng)訪問這個(gè)引用的方法的時(shí)候就會(huì)產(chǎn)生這種異常趴乡,例如下面的代碼:
String str = "這是一個(gè)測(cè)試用的字符串对省!";
System.out.println(str.length());
這段代碼沒有問題,但是如果改成下面的代碼:
String str;
System.out.println(str.length);
就會(huì)產(chǎn)生NullPointerException異常了晾捏。那這種異常通常是如何產(chǎn)生的呢?比較多見的是下面的兩種情況:
1蒿涎、把調(diào)用某個(gè)方法的返回值直接賦值給某個(gè)引用,單后調(diào)用這個(gè)引用的方法粟瞬。在這種情況下同仆,如果返回的值是null,必然會(huì)產(chǎn)生NullPointerException異常裙品。例如:
String userName = request.getParameter("userName");
if(userName.length()==0)
.....
else
......
如果request.getParameter("userName")的結(jié)果為null俗批,則這里就會(huì)產(chǎn)生這種異常。
2市怎、在方法體中調(diào)用參數(shù)的方法岁忘。這種情況下,如果調(diào)用的方法的時(shí)候傳遞進(jìn)來的值是null区匠,也要產(chǎn)生NullPointerException異常干像。
要解決這種異常,只需要檢查異常出現(xiàn)在第幾行驰弄,然后查看調(diào)用了哪個(gè)對(duì)象的方法麻汰,然后檢查這個(gè)對(duì)象為什么沒有賦值成功即可。
要避免程序產(chǎn)生這種異常戚篙,比較好的解決方法是在調(diào)用某個(gè)對(duì)象的時(shí)候判斷這個(gè)對(duì)象是否為空五鲫,如果可能,則增加判斷的語(yǔ)句岔擂,例如上面的代碼可以寫成:
if(str!=null)
System.out.println(str.length());
else
System.out.println(0);
問題8:
如果MyAdapter中的getView()方法不執(zhí)行位喂,那么就應(yīng)該調(diào)用adapter.notifyDataSetChanged();方法(此方法為BaseAdapter中的方法)
原因:
setAdapter 時(shí)浪耘,首先會(huì)執(zhí)行g(shù)etCount(),當(dāng)getCount() ?返回的是0時(shí)塑崖,就不會(huì)去執(zhí)行g(shù)etView()方法七冲, 如果 開啟線程去下載數(shù)據(jù),然后在getCount()中返回其size规婆, 開始的時(shí)候因?yàn)檫€沒有下載數(shù)據(jù)澜躺,返回的size可能是0,所以不會(huì)去調(diào)用getView()方法聋呢,界面就不會(huì)被填充苗踪。 ? ?下載完成后 ?通過 notifyDataSetChanged()方法 重新加載適配器,就會(huì)調(diào)用getView()方法了削锰。。
問題9:
java.lang.ClassNotFoundException:com.example.MainActivity
個(gè)人按下面順序排查:
1.
在Manifest.xml中查看Activity的名字是否書寫正確毕莱。
2.
在Manifest.xml確認(rèn)Activity標(biāo)簽中的android:name屬性的格式器贩,例如我的activity的名字是helloworld,確認(rèn)android:name=”.helloworld”(其中的點(diǎn)很重要)朋截。
3.
如果有添加外部包的情況下蛹稍,在工程根目錄下建libs目錄,然后將需要導(dǎo)入的外部包放入此目錄內(nèi)再add jars(項(xiàng)目- -》屬性- -》- -》JavaBuild Path - -》Libraries 新加一個(gè)support-v4包)部服。
4.
如果上面都確保OK的情況下仍發(fā)生問題的話唆姐,clean工程->關(guān)閉eclipse->在命令行中重啟adb(adb kill-server adb start-server)->打開eclipse->編譯啟動(dòng)。
問題10(關(guān)于viewflow的使用):
使用網(wǎng)絡(luò)上比較流行的舊版(也可以稱作修改后可以實(shí)現(xiàn)循環(huán)的版本)的時(shí)候廓八,滑動(dòng)圖片的時(shí)候奉芦,老是出現(xiàn)閃動(dòng)。
解決方法是:
在AndroidManifest.xml文件中將android:targetSdkVersion = "17"這句話刪除掉就可以剧蹂。
問題11(關(guān)于百度地圖的問題):
java.lang.NoClassDefFoundError: com.baidu.mapapi.BMapManager
解決辦法:
一声功、右擊項(xiàng)目->properties->javaBuild Path->Order and Export,在需要引用的包前面打勾宠叼。
二先巴、Project->Clean...
問題12:
Caused by: java.lang.ClassCastException: com.fragments.Fragment1 cannot be cast to android.app.Fragment
的解決方法:
(1)app.fragment和v4.fragment都是可以使用標(biāo)簽的
只是在在使用的時(shí)候如果是app.fragment則沒有什么特殊的地方繼承Activity即 ? ? ?可。
(2)當(dāng)v4.fragment使用標(biāo)簽的時(shí)候就要特別注意了:
當(dāng)這個(gè)Activity的布局中有標(biāo)簽的時(shí)候冒冬,這個(gè)Activity必須繼承
FragmentActivity伸蚯,否則就會(huì)報(bào)錯(cuò)。
所以本錯(cuò)誤的解決方法就是:將MainActivity繼承的Activity改成FragmentActivity即可简烤。
問題13:
(非eclipse錯(cuò)誤剂邮,按鈕點(diǎn)擊錯(cuò)誤2014-3-17花費(fèi)兩天時(shí)間搞定的一個(gè)問題):
GridView中的setOnItemClickListener不響應(yīng)的問題:
原因:由于在每個(gè)item中使用的類似于Button、ImageButton的按鈕乐埠,所以是button攔截了點(diǎn)擊事件抗斤。
解決方法:這個(gè)時(shí)候囚企,需要將Button或ImageButton改換為ImageView,問題就得到了解決瑞眼。
當(dāng)問題解決的時(shí)候龙宏,總是令人興奮的(感覺以前的苦惱都是值得的)。
問題14:
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
...
無(wú)效的存儲(chǔ)伤疙,存儲(chǔ)空間不足银酗,卸掉幾個(gè)無(wú)用的APP即可解決問題。
問題15:
(在使用gridview的情況下--bitmapfun中的)
java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
主要原因:就是AbsListview的LayoutParams不能準(zhǔn)換成.xml布局文件中的RelativeLayout的LayoutParams
問題16:
(在開啟虛擬機(jī)的情況下)出現(xiàn):
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
可能問題:在創(chuàng)建AVD時(shí)設(shè)定的RAM過大(我選擇的device是Nexus 7徒像,其默認(rèn)RAM是1024)黍特。
解決方法:將這個(gè)值改為512后就能正常啟動(dòng)AVD了
問題17(非錯(cuò)誤;關(guān)于LogCat):
Eclipse LogCat出現(xiàn)大量"Unexpected value from nativeGetEnabledTags: 0"的解決方法:
在logcat的過濾器的log message字段中輸入以下過濾串:
^(?!.*(nativeGetEnabledTags)).*$
如果依然還有大量的信息出現(xiàn)锯蛀,可以考慮使用LogCat最上部的過濾搜索灭衷,直接搜索Text,或者tag:TAG.這樣就可以找到需要打印的信息旁涤。
問題18:
The connection to adb is down, and a severe error has occured.
解決方法:在Eclipse進(jìn)入DDMS模式翔曲,重啟下ADB
問題19:
Ctrl+Alt+方向上下鍵:Eclipse中該快捷鍵用于復(fù)制該行代碼,但最近在Eclipse中卻沒任何效果劈愚。
可能問題:該快捷鍵被電腦中的某個(gè)應(yīng)用所占用瞳遍。
解決方法:當(dāng)時(shí)原因就是網(wǎng)易云音樂的聲音調(diào)大調(diào)小的快捷鍵就是Ctrl+Alt+方向上下鍵,與Eclipse中的快捷鍵重復(fù)菌羽。
所以當(dāng)任何時(shí)候的快捷鍵不起作用的時(shí)候掠械,都應(yīng)該想到該快捷鍵可能被某個(gè)應(yīng)用程序所占用了。
問題20:
Eclipse添加Android library錯(cuò)誤的原因:
我這里是project和library沒有在同一個(gè)盤符下面注祖。
所以:在windows系統(tǒng)下猾蒂,library project必須和project處于相同的盤符中.
以后要養(yǎng)成的一個(gè)習(xí)慣是:導(dǎo)入project或library的時(shí)候,要勾選copy projects into workspace...以保證都在同一個(gè)盤符下面氓轰。
問題21:
Eclipse中Android SDK Manager中婚夫,未出現(xiàn)完整的API版本(或者說API版本得不到更新),解決方法:
1署鸡、在C:\Windows\System32\drivers\etc文件夾下面的hosts文件中添加如下信息:
#Google主頁(yè)
203.208.46.146 www.google.com
#這行是為了方便打開Android開發(fā)官網(wǎng) 現(xiàn)在好像不VPN也可以打開
74.125.113.121 developer.android.com
#更新的內(nèi)容從以下地址下載
203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com
2案糙、在Eclipse中的Android SDK Manager中Tools -> Options -> others下面的第一個(gè)(force...)打上對(duì)勾即可。
問題22:
Eclips中l(wèi)ayout中的布局文件的Graphical Layout不顯示布局:
情況<1>(一般情況):
解決辦法:項(xiàng)目右鍵-->Android Tools-->Fix Project Properties,然后右鍵close項(xiàng)目-->open項(xiàng)目,再次打開靴庆,即可时捌;
如果再次打開的時(shí)候,依然不可以炉抒,那么重啟Eclipse即可奢讨。
情況<2>(This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in):
解決辦法:
1、更新ADT焰薄。2拿诸、更改右上角adt版本為低版本3扒袖、manifest.xml文件夾中sdk配置版本的更改
問題23:
Eclipse中查看不了系統(tǒng)的源代碼:即出現(xiàn):the source attachment does not contain the source for...時(shí):
解決辦法:選擇最下面的folder按鈕,然后選擇相應(yīng)的路徑(我的選擇是:C:\Program Files (x86)\adt-bundle-windows-x86-20130514\sdk\sources\android-14\android)亩码,
即可解決該問題(另外:MyEclipse中如果想要查看Java的源代碼季率,那么選擇的是一個(gè)src壓縮的文件包,如我的路徑是:C:\Program Files (x86)\Java\jdk1.6.0_10)描沟。
問題24:
(關(guān)于ListView的使用問題)
(1)listview中添加的footer不顯示時(shí):
解決方法:將添加footer的代碼添加到listView.setAdaper(adapter)代碼之前飒泻。
(2)listView中footer出現(xiàn)不居中顯示的問題時(shí):
解決方法:將布局文件中的ListView的屬性改為MATCH_PARENT。
問題25:
導(dǎo)入android-support-v7-appcompat.jar包時(shí)出現(xiàn):Jar mismatch! Fix your dependencies:
我的問題是:兩個(gè)包v4與v7都在項(xiàng)目中吏廉,所以引起了沖突泞遗。
解決方法是:將v4包刪除即可。
問題26:
問題:微信打包后還是分享不了
解決方法是:
微信分享不了:
1席覆、測(cè)試沒有打包(打包成apk測(cè)試)
2史辙、打包的keystore跟微信開放平臺(tái)上面的不一致, 導(dǎo)致MD5碼不一致(在微信填寫的MD5是小寫佩伤,冒號(hào)要去掉)
3髓霞、分享參數(shù)錯(cuò)誤(微信指定平臺(tái)分享有參數(shù)類型,每個(gè)類型對(duì)應(yīng)的有相應(yīng)的參數(shù)畦戒,建議用戶先用網(wǎng)絡(luò)圖片測(cè)試,調(diào)通后再用本地圖片结序,onekeyshare沒有參數(shù)類型障斋,會(huì)自動(dòng)判斷)
4、應(yīng)用沒有審核通過
5徐鹤、包名跟開放平臺(tái)上面的不一致
6垃环、沒有在mob.com申請(qǐng)key!
我的解決方法是:
在微信開放平臺(tái)上下載簽名生成工具返敬,下載地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&lang=zh_CN
將APK項(xiàng)目及簽名工具都安裝到手機(jī)上遂庄,簽名工具中輸入報(bào)名,即可獲取簽名劲赠,經(jīng)該簽名重新填到微信上的應(yīng)用簽名涛目。
問題27:
問題:修改手機(jī)系統(tǒng)字體大小時(shí),雖然添加相應(yīng)代碼凛澎,但還是會(huì)有個(gè)別字體發(fā)生變化(華為手機(jī))
解決方法是:
將相應(yīng)字體的sp改為dp即可
問題28:
問題:如何無(wú)線調(diào)試運(yùn)行
1霹肝、cd到adb所在的目錄
2、命令行輸入adb tcpip 5555
3塑煎、斷開 USB數(shù)據(jù)沫换,在計(jì)算機(jī)命令行輸入 adb connect <設(shè)備的IP地址>:5555
4、如果需要斷開連接:adb disconnect <設(shè)備的IP地址>
問題29:
問題:已安裝了簽名沖突的同名數(shù)據(jù)包
原因分析:由于前一個(gè)APP是eclipse運(yùn)行出來的最铁,而后一個(gè)版本是打包出來的讯赏,所以簽名會(huì)有沖突垮兑。
解決方法是:重新打個(gè)包安裝,再次更新就會(huì)避免出現(xiàn)這個(gè)問題漱挎。
問題30:
問題:使用 eclipse 的 svn 查看歷史版本亂碼的問題
原因分析:編碼問題
解決方法是:Windows--Preferences--General--WorkSpace--Text file Encoding (other UTF-8)