[Android問答] 開發環境問題集錦


工欲善其事,必先利其器。

和iOS開發相比,Android的開發環境的版本比較多,隨之而來的問題也多。顯然,我們不應該浪費寶貴的時間在解決開發環境帶來的問題上,為此本文總結了常見的開發環境問題和解決方法,供大家查詢和隨時補充。

Debug certificate expired

Android SDK生成的用於調試的證書文件debug.keystore有效期是365天,當使用超過一年后控制台就會報這個錯誤。

Error generating final archive: Debug Certificate expired on 10/09/18 16:30

解決方法是手工刪除debug.keystore文件,Windows系統下位於"C:\Documents and Settings\username\.android"目錄,Linux和Mac系統下位於"~/.android/"目錄。下次啟動應用時,Eclipse會自動新建一個debug.keystore文件。最好"Project->Clean"一下項目以便觸發編譯器重新編譯。

Failed to install apk on device: timeout

導致這個問題的確切原因不清楚,可能是由於不正確關閉adb連接。

Failed to install helloworld.apk on device 'emulator-5554': timeout

解決方法1:更換電腦usb口(不使用前置usb口)或重裝手機驅動,將手機關機后再開機。

解決方法2:在Eclipse里選擇"Window->Preferences->Android->DDMS->ADB connection time out",將缺省的5000ms改為更大的值,例如20000ms。

解決方法3:在命令行窗口里依次輸入如下命令:

adb kill-server
adb start-server

invalid command-line parameter

這是由於Eclipse開發環境無法找到所需的可執行文件造成的。

[2011-07-10 07:10:22 - demo] Android Launch!
[2011-07-10 07:10:24 - demo] adb is running normally.
[2011-07-10 07:10:24 - demo] Performing com.demo.DemoActivity activity launch
[2011-07-10 07:10:25 - demo] Automatic Target Mode: launching new emulator with compatible AVD 'xxx'
[2011-07-10 07:10:25 - demo] Launching a new emulator with Virtual Device 'xxx'
[2011-07-10 07:11:06 - Emulator] invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.

解決方法是在Eclipse里選擇"Window->Preferences->Android"選項,檢查"SDK Location"的路徑是否包含了空格,如果是"c:\Program Files\android"這種,改為"c:\Progra~1\android",這樣命令行就可以正常調用到了。

小提示:在命令行窗口里輸入"dir /x"命令就可以列出8.3格式的文件名,看下面的結果:

2012-09-25  23:52    <DIR>          WATCHD~1     WatchData
2012-09-01  11:01    <DIR>                       Winamp
2012-07-24  22:22    <DIR>          WINDOW~4     Windows Live
2012-07-24  22:21    <DIR>          WI3957~1     Windows Live SkyDrive

INSTALL_FAILED_INSUFFICIENT_STORAGE

安裝應用程序時遇到存儲容量不足時會報這個錯誤:

Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
Please check logcat output for more details.
Launch canceled!

如果是在模擬器上運行應用,可以擴大AVD的內存容量。

如果是在真機上運行,可以在AndroidManifest.xml里修改安裝偏好,讓應用直接安裝到SD卡上解決。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example" android:installLocation="preferExternal" >
...
</manifest>

Unable to open sync connection

雖然很多人遇到這個問題,但問題的根源並不確切,可能有多種原因造成adb報這個錯誤:

[2010-10-12 09:36:48 - myapp] Android Launch!
[2010-10-12 09:36:48 - myapp] adb is running normally.
[2010-10-12 09:36:48 - myapp] Performing com.mycompany.myapp.MyActivity activity launch
[2010-10-12 09:36:48 - myapp] Automatic Target Mode: using device 'xxx'
[2010-10-12 09:36:48 - myapp] Uploading myapp.apk onto device 'xxx'
[2010-10-12 09:36:48 - myapp] Failed to upload myapp.apk on device 'xxx'
[2010-10-12 09:36:48 - myapp] java.io.IOException: Unable to open sync connection!
[2010-10-12 09:36:48 - myapp] Launch canceled!

解決方法1:拔掉手機連接線再重新連上;

解決方法2:在手機上關閉Debug選項再重新打開,這個選項在手機的"設置->應用程序->開發->USB調試"里。

Too many open files

這個問題與系統可同時打開文件數量設置有關,但一般不需要修改相關設置,用上一個問題(Unable to open sync connection)的方法即可解決。

第三方Jar包,NoClassDefFoundError

升級ADT版本以后容易出現這個問題:本來一切正常的Android項目,升級以后所有的第三方Jar包里的類都提示NoClassDefFoundError了。

原因可能出現在不同版本ADT使用的編譯ant腳本的區別,可能的解決方法有兩個:

方法1:在Eclipse里右鍵點擊你的Android工程,選擇"Properties->Java Build Path->Order and Export",在這里把所有第三方Jar包前面的復選框都勾上。

方法2:檢查你的第三方Jar包文件是否放在工程目錄下的"libs"目錄,如果不是,改過來。

Failed to allocate memory: 8

一般是AVD的設置有問題,很可能是RAM值設得太高,降低些試試。早期adt版本里有個bug,就是RAM值里必須包含"MB",例如是"512MB"而不是"512",否則提示上述錯誤信息。

也有人提到過分辨率是原因之一,但我沒有實際遇到過,如果只改小RAM沒有解決問題,試着把分辨率也調低看看。

參考資料

“Debug certificate expired” error in Eclipse Android plugins

Android error: Failed to install *.apk on device *: timeout

The Android emulator is not starting, showing “invalid command-line parameter”

Solution: Android INSTALL_FAILED_INSUFFICIENT_STORAGE error

Android adb “Unable to open sync connection!”

com.android.ddmlib.SyncException: Too many open files

NoClassDefFoundError - Eclipse and Android

Android emulator failed to allocate memory 8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM