Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android eclipse常見錯誤開發總結

Android eclipse常見錯誤開發總結

編輯:關於Android編程

使用Android 開發工具eclipse的過程中,出現過很多問題,總結了一下,拿出來共同學習:


問題1、This Android SDK 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.
*方案一 系統自動添加了import android.R這條語句;這個時候只要刪除這條語句就可以了。
方案二 布局文件裡多了個.out的xml文件,刪除這個xml文件,然後把工程clean下就可以了。


問題3:error opening trace file:No such file or directory.
這主要是android api的版本和模擬器(或手機)的版本不一致導致的。把項目和模擬器都改成相同版本的,就不報錯了。


問題4:FINAL EXCEPTION: main
java.lang.RuntimeException:Unable to instantiate activity ComponentInfo{
com.項目名稱.包名.入口Activity名}:java.lang.ClassNotFoundException:com.chapter4layout3.入口Activity名.
原因分析:
AndroidManifest.xml中設置的“入口Activity名”並不是上面所提到的 Activity,即系統找不到Activity的入口,所以程序自然不能運行。
android:name = "com.chapter4layout3.ExpanListViewDemoActivity(入口Activity)從下面的MAIN知道是入口Activity,所要運行的Activity必須是此名"
android:label ="label"="@string/app_name">

問題5:
android - "Bitmap too large to be uploaded into a texture"

出現這個問題的時候可以把硬加速改為false,即在Manifest文件的application中加入如下語句:
android:hardwareAccelerated="false"就可以顯示出來。


問題6:
'ADB server didn't ACK'(The connection to adb is down, and a severe error has occured.)的解決辦法:
一般情況下1.先把任務管理器上所有的adb.exe關閉掉,重啟eclipse就可解決。但如果這種辦法不行的話,可以試試:
1、先把eclipse關閉。
2、在管理器站到你的android SDK的platform-tools下,鍵入adb kill-server,如果adb關閉了會提示server not running *
3、鍵入adb start-server 如果不成功會提示daemon not running.starting it now on port ***,而如果成功不提示任何語句的,這是再重新打開eclipse就可以正常運行了。
還有一種情況是開了豌豆莢,導致了端口沖突。
我遇到的問題就是USB線真的開始有問題了,沒連接好電話,所以出現adb一運行起來然後就消失的情況。⊙﹏⊙b汗。


問題7:
Unable to start activity ComponentInfo(....SecondActivity)java.lang.NullPointerException:
空指針異常:
空指針異常產生的主要原因:
1、當一個對象不存在時又調用其方法會產生此異常obj.method()//obj對象不存在(比如一個對象str你沒有賦值,卻調用它就會出現空指針異常的情況)。
2、當訪問或修改一個對象不存在的字段時會產生異常obj.method()//method方法不存在。
****我出現的問題是R.id.button01由於粗心寫成了R.layout.secondactivity這樣就找不到那個button01,所以會出現空指針異常。
空指針解決方法:
重點關注報錯發生的所在行,通過空指針異常 產生的兩條主要原因診斷具體的錯誤。同時為了避免空指針的發生,最好在做判斷處理時將“null”或者空值放到設定的值之前。
詳解:NullPointerException是空指針異常。但是在java中沒有指針,怎麼會有空指針異常呢?在C++中,聲明的指針需要指向一個實例(通過new方法構造),這個指針可以理解為地址。在java中,雖然沒有指針,但是有引用(通常稱為對象引用,一般直接說對象),引用也是要指向一個實例對象(通過new方法構造)的,從這種意義上說,java中的引用於C++中的指針沒有區別,不同的是,處於安全的目的,在java中不能對引用進行操作,而在C++中可以直接進行指針的運算,例如book++等。
所以這裡的NullPointerException雖然不是真正的空指針異常,但本質上差不多,是因為引用沒有指向具體的實例,所以當訪問這個引用的方法的時候就會產生這種異常,例如下面的代碼:
String str = "這是一個測試用的字符串!";
System.out.println(str.length());
這段代碼沒有問題,但是如果改成下面的代碼:
String str;
System.out.println(str.length);
就會產生NullPointerException異常了。那這種異常通常是如何產生的呢?比較多見的是下面的兩種情況:
1、把調用某個方法的返回值直接賦值給某個引用,單後調用這個引用的方法。在這種情況下,如果返回的值是null,必然會產生NullPointerException異常。例如:
String userName = request.getParameter("userName");
if(userName.length()==0)
.....
else
......
如果request.getParameter("userName")的結果為null,則這裡就會產生這種異常。
2、在方法體中調用參數的方法。這種情況下,如果調用的方法的時候傳遞進來的值是null,也要產生NullPointerException異常。
要解決這種異常,只需要檢查異常出現在第幾行,然後查看調用了哪個對象的方法,然後檢查這個對象為什麼沒有賦值成功即可。
要避免程序產生這種異常,比較好的解決方法是在調用某個對象的時候判斷這個對象是否為空,如果可能,則增加判斷的語句,例如上面的代碼可以寫成:
if(str!=null)
System.out.println(str.length());
else
System.out.println(0);


問題8:
如果MyAdapter中的getView()方法不執行,那麼就應該調用adapter.notifyDataSetChanged();方法(此方法為BaseAdapter中的方法)
原因:
setAdapter 時,首先會執行getCount(),當getCount() 返回的是0時,就不會去執行getView()方法, 如果 開啟線程去下載數據,然後在getCount()中返回其size, 開始的時候因為還沒有下載數據,返回的size可能是0,所以不會去調用getView()方法,界面就不會被填充。 下載完成後 通過 notifyDataSetChanged()方法 重新加載適配器,就會調用getView()方法了。。


問題9:
java.lang.ClassNotFoundException:com.example.MainActivity
個人按下面順序排查:
1.
在Manifest.xml中查看Activity的名字是否書寫正確。
2.
在Manifest.xml確認Activity標簽中的android:name屬性的格式,例如我的activity的名字是helloworld,確認android:name=”.helloworld”(其中的點很重要)。
3.
如果有添加外部包的情況下,在工程根目錄下建libs目錄,然後將需要導入的外部包放入此目錄內再add jars(項目- -》屬性- -》- -》Java Build Path - -》Libraries 新加一個support-v4包)。
4.
如果上面都確保OK的情況下仍發生問題的話,clean工程->關閉eclipse->在命令行中重啟adb(adb kill-server adb start-server)->打開eclipse->編譯啟動。


問題10(關於viewflow的使用):
使用網絡上比較流行的舊版(也可以稱作修改後可以實現循環的版本)的時候,滑動圖片的時候,老是出現閃動。
解決方法是:
在AndroidManifest.xml文件中將android:targetSdkVersion = "17"這句話刪除掉就可以。


問題11(關於百度地圖的問題):
java.lang.NoClassDefFoundError: com.baidu.mapapi.BMapManager
解決辦法:

一、右擊項目->properties->Java Build 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都是可以使用標簽的
只是在在使用的時候如果是app.fragment則沒有什麼特殊的地方繼承Activity即 可。


(2)當v4.fragment使用標簽的時候就要特別注意了:
當這個Activity的布局中有標簽的時候,這個Activity必須繼承
FragmentActivity,否則就會報錯。
所以本錯誤的解決方法就是:將MainActivity繼承的Activity改成FragmentActivity即可。


問題13:
(非eclipse錯誤,按鈕點擊錯誤2014-3-17花費兩天時間搞定的一個問題):
GridView中的setOnItemClickListener不響應的問題:
原因:由於在每個item中使用的類似於Button、ImageButton的按鈕,所以是button攔截了點擊事件。
解決方法:這個時候,需要將Button或ImageButton改換為ImageView,問題就得到了解決。
當問題解決的時候,總是令人興奮的(感覺以前的苦惱都是值得的)。




問題14:
Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
...
無效的存儲,存儲空間不足,卸掉幾個無用的APP即可解決問題。

問題15:
(在使用gridview的情況下--bitmapfun中的)
java.lang.ClassCastException: android.widget.AbsListView$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
主要原因:就是AbsListview的LayoutParams不能准換成.xml布局文件中的RelativeLayout的LayoutParams

問題16:
(在開啟虛擬機的情況下)出現:
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
可能問題:在創建AVD時設定的RAM過大(我選擇的device是Nexus 7,其默認RAM是1024)。
解決方法:將這個值改為512後就能正常啟動AVD了

問題17(非錯誤;關於LogCat):
Eclipse LogCat出現大量"Unexpected value from nativeGetEnabledTags: 0"的解決方法:
在logcat的過濾器的log message字段中輸入以下過濾串:
^(?!.*(nativeGetEnabledTags)).*$
如果依然還有大量的信息出現,可以考慮使用LogCat最上部的過濾搜索,直接搜索Text,或者tag:TAG.這樣就可以找到需要打印的信息。


問題18:
The connection to adb is down, and a severe error has occured.
解決方法:在Eclipse進入DDMS模式,重啟下ADB


問題19:
Ctrl+Alt+方向上下鍵:Eclipse中該快捷鍵用於復制該行代碼,但最近在Eclipse中卻沒任何效果。
可能問題:該快捷鍵被電腦中的某個應用所占用。
解決方法:當時原因就是網易雲音樂的聲音調大調小的快捷鍵就是Ctrl+Alt+方向上下鍵,與Eclipse中的快捷鍵重復。
所以當任何時候的快捷鍵不起作用的時候,都應該想到該快捷鍵可能被某個應用程序所占用了。


問題20:
Eclipse添加Android library錯誤的原因:
我這裡是project和library沒有在同一個盤符下面。
所以:在windows系統下,library project必須和project處於相同的盤符中.
以後要養成的一個習慣是:導入project或library的時候,要勾選copy projects into workspace...以保證都在同一個盤符下面。


問題21:
Eclipse中Android SDK Manager中,未出現完整的API版本(或者說API版本得不到更新),解決方法:
1、在C:\Windows\System32\drivers\etc文件夾下面的hosts文件中添加如下信息:
#Google主頁


203.208.46.146 www.google.com


#這行是為了方便打開Android開發官網 現在好像不VPN也可以打開


74.125.113.121 developer.android.com


#更新的內容從以下地址下載


203.208.46.146 dl.google.com


203.208.46.146 dl-ssl.google.com
2、在Eclipse中的Android SDK Manager中Tools -> Options -> others下面的第一個(force...)打上對勾即可。


問題22:
Eclips中layout中的布局文件的Graphical Layout不顯示布局:
情況<1>(一般情況):
解決辦法:項目右鍵-->Android Tools-->Fix Project Properties,然後右鍵close項目-->open項目,再次打開,即可;
如果再次打開的時候,依然不可以,那麼重啟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中查看不了系統的源代碼:即出現:the source attachment does not contain the source for...時:
解決辦法:選擇最下面的folder按鈕,然後選擇相應的路徑(我的選擇是:C:\Program Files (x86)\adt-bundle-windows-x86-20130514\sdk\sources\android-14\android),
即可解決該問題(另外:MyEclipse中如果想要查看Java的源代碼,那麼選擇的是一個src壓縮的文件包,如我的路徑是:C:\Program Files (x86)\Java\jdk1.6.0_10)。


問題24:
(關於ListView的使用問題)
(1)listview中添加的footer不顯示時:
解決方法:將添加footer的代碼添加到listView.setAdaper(adapter)代碼之前。
(2)listView中footer出現不居中顯示的問題時:
解決方法:將布局文件中的ListView的屬性改為MATCH_PARENT。


問題25:
導入android-support-v7-appcompat.jar包時出現:Jar mismatch! Fix your dependencies:
我的問題是:兩個包v4與v7都在項目中,所以引起了沖突。
解決方法是:將v4包刪除即可。


問題26:
問題:微信打包後還是分享不了
解決方法是:
微信分享不了:
1、測試沒有打包(打包成apk測試)
2、打包的keystore跟微信開放平台上面的不一致, 導致MD5碼不一致(在微信填寫的MD5是小寫,冒號要去掉)
3、分享參數錯誤(微信指定平台分享有參數類型,每個類型對應的有相應的參數,建議用戶先用網絡圖片測試,調通後再用本地圖片,onekeyshare沒有參數類型,會自動判斷)
4、應用沒有審核通過
5、包名跟開放平台上面的不一致
6、沒有在mob.com申請key!


我的解決方法是:
在微信開放平台上下載簽名生成工具,下載地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&lang=zh_CN
將APK項目及簽名工具都安裝到手機上,簽名工具中輸入報名,即可獲取簽名,經該簽名重新填到微信上的應用簽名。


問題27:
問題:修改手機系統字體大小時,雖然添加相應代碼,但還是會有個別字體發生變化(華為手機)
解決方法是:
將相應字體的sp改為dp即可


問題28:
問題:如何無線調試運行
1、cd到adb所在的目錄
2、命令行輸入adb tcpip 5555
3、斷開 USB數據,在計算機命令行輸入 adb connect <設備的IP地址>:5555
4、如果需要斷開連接:adb disconnect <設備的IP地址>


問題29:
問題:已安裝了簽名沖突的同名數據包
原因分析:由於前一個APP是eclipse運行出來的,而後一個版本是打包出來的,所以簽名會有沖突。
解決方法是:重新打個包安裝,再次更新就會避免出現這個問題。


問題30:
問題:使用 eclipse 的 svn 查看歷史版本亂碼的問題
原因分析:編碼問題
解決方法是:Windows--Preferences--General--WorkSpace--Text file Encoding (other UTF-8)

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved