為了學習android應用開發,學習原始碼是最好的方式之一。於是我網上下載了一個原始碼:MyContacts通訊錄。開啟eclipse,菜單使用import匯入原始碼,完畢後,工程出現錯誤。
一.應用開發包報錯,所有的import android.*;都報無發現該類庫的錯誤。好吧,這個原始碼不攜帶android的SDK,於是我點了工程,右鍵點Build
Path,點Add External Archivees,在選擇框找到我本地的android SDK的lib庫目錄D:\Program Files\Android\android-sdk\platforms\android-10的android.jar,選到jar檔案確定匯入,工程的應用程式套件錯誤立馬消失。
二.工程包的錯誤全部消失,但是工程還是有錯誤的叉叉,想運行下試試,提示有error不能運行。好吧,不關應用檔案的問題,那就關整個項目的問題,估計是哪裡的資訊尚不契合,有可能是版本資訊?
開啟工程的project.properties,根據QQ群群友的說明,找到整個工程使用的sdk版本資訊是target=android-5,這個明顯跟我昨天安裝本地SDK不對應了,看看目錄就知道我本地是android-10,於是我將project.properties檔案的target=android-5改成target=android-10,重新整理,一下錯誤消失。
三.繼續運行,還是報錯:conversion to dalvik format failed with error 1,把這資訊扔到網上搜尋,說是android低版本工程(如1.5)放到高版本環境中(如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檔案
該檔案可能存在該項: <classpathentry kind="lib" path ="你所指定的高版本的地址"
把她修改成<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK" />
3) 修改AndroidManifest.xml
在AndroidManifest.xml檔案中,application標籤後添加<uses-sdk android:minSdkVersion="3"></uses-sdk>
4) 修改default.properties(很重要)
該檔案最後一行(前面沒用#的)target=android-3 該成target=android-8,儲存。
再看看你的工程和建立的android 2.2的工程結構就一樣了。
=================================================================================
四. 我使用了第一個方法project clean,結果是無效,鬱悶。對應第二個方法也修改了資訊,還是錯誤
網上看了看,說是:
=================================================================================
http://blog.sina.com.cn/s/blog_70fd7a7b0100wp7b.html
...其實這個錯誤很簡單,你的jar包在工程裡面不止一個,所以刪除其他,留一個jar包即可,然後重新運行工程...
=================================================================================
有了點啟發,難道重複了?莫非步驟1是不需要的,而使用project clean就會自動給這個工程添加Android 2.3.3的jar包嗎?於是我點Build
Path,點configure Build Path,開啟介面,果然出了自己手動添加的android.jar,還有系統自動添加的Android 2.3.3lib庫,於是我把之前手動關聯jar remove掉,順便整理下AndroidManifest.xml,參照我hello想項目設定檔,把下面三行移動到最前面,不然總有波浪線提示,不舒服,這個應該無關大局。
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"
/>
好了,到這一步,run as android project,如期運行,非常好。