百度上很多關於Could not find *.apk!這種編譯報錯的解決帖子,但是筆主在這里主要說一下在 引用工程項目的場景 下報這個錯誤消息的問題(不影響本項目的正常編譯運行!)。
筆主剛從谷歌上搞了Volley的源碼下來,寫了一個測試項目,把Volley源碼項目引進測試項目時(Java Build Path->Projects),編譯過程中發現報了一個紅色的錯誤:
...
[2014-08-25 11:03:16 - AndroidTest] Performing wavky.wand.androidtest.MainActivity activity launch
[2014-08-25 11:03:16 - AndroidTest] Uploading AndroidTest.apk onto device 'DMPM6235303695'
[2014-08-25 11:03:16 - AndroidTest] Installing AndroidTest.apk...
[2014-08-25 11:03:18 - AndroidTest] Success!
[2014-08-25 11:03:19 - volley] Could not find volley.apk!
[2014-08-25 11:03:19 - AndroidTest] Starting activity wavky.wand.androidtest.MainActivity on device DMPM...
...
這個消息很容易忽略掉,因為完全不影響測試項目的運行,但還是會很糾結,經過研究發現,應該是Eclipse的識別錯誤問題,因為Volley源碼項目是作為Library庫項目的身份存在的(Volley項目Properties->Android->Is Library;測試項目Properties->Android->Library->Add Volley項目),這樣的設置ADT會將整個Volley項目編譯為jar包放置在bin目錄里,而正常項目中的apk包則不再生成,因此Eclipse檢測不到這個apk包之后就直接誤報了。
解決方法也很簡單,把Volley源碼項目取消Is Library的勾選,clean & rebuild 一次,生成apk之后再重新勾選回去編譯成jar,就OK了。