Android Studio導入Fresco


       大概一周之前,Facebook開源了專為Android系統定制的圖片下載緩存工具,當天該消息就上了各大技術論壇網站的頭條,也成為了各個技術群里討論的最主要的話題。也就在當天stay4it的QQ群里面就有人嘗試着用Android Studio導入Fresco,折騰了半天還是失敗了,發生這種情況的不止一個人,很多人都碰到這樣的問題,導入不成功,編譯不了,更別說運行了。前兩天正好清明節放假,我懷着好奇的心情也嘗試了一次,發現確實很麻煩,但是最終還是成功的編譯運行了。先分享一下sample運行的效果圖,勾引一下大家:


  

    現在就把我的導入過程分享給大家,希望大家不要走彎路。本來有想過在我的Android Studio系列視頻課程里面再額外增加一節課來專門講解Fresco的導入,但是想了想還是決定寫成博客分享給大家,原因大家往下看就知道了。

    先介紹一下我電腦的系統以及環境:

  • Macbook Pro
  • Yousemite
  • Android Studio 1.2 beta (剛剛升級的,大部分人應該還是1.1的版本)
  • Gradle 2.2.1-all

    另外你還需要預先下載Android NDK,並且將Android NDK的路徑配置到環境變量里面,具體的下載與配置我這里就不再描述了,作為一個優秀的程序員這些都不是問題,記得翻牆哦。

    相信大部分朋友用的是Windows系統,但是由於我本人已拋棄Windows太久,家里的Windows機器已過花甲之年,也已病入膏肓所以就沒有在Windows系統上嘗試,但是從Github上的Fresco issues來看,Windows的導入還是存在問題的,至少在我寫這篇文章的時候還沒有解決。由於Facebook的團隊都是用Mac或者Linux來開發的,所以Windows上並沒有測試過,所以會出現各種各樣的bug,這里有一個Github上關於Windows的open issue大家可以參考一下或者實時跟進。

     好了,讓我們繼續來看Mac上怎么導入的,首先,將Fresco從Github上clone下來。這里跟大家提醒一下,整個導入過程最好翻牆,因為在導入以及后面build的時候,有部分資源是必須翻牆才能訪問的。而且導入以及build的過程比較耗時,需要下載很多相關資源,所以最好確保自己在網絡狀況良好的情況下嘗試導入。這也是我為什么沒有錄制成視頻課程的主要原因。打開Android Studio,選擇Import Project,如圖:

  選擇你clone下來的Fresco的路徑,點擊確定,接下來就是一個長時間的下載以及導入的過程,如圖:

  這是一個漫長的過程,這段時間大家可以干點別的事情,玩個游戲休息一下或者看看Fresco的中文文檔之類的,導入的過程當中主要下載的資源有:

  1. 項目中依賴的jar包 (每個module中的build.gradle文件中依賴的jar包,jcentral或者maven)
  2. 各式各樣的插件 (包括1.0.1的gradle插件,基於JVM的自動化測試工具robolectric插件等等,很多)

  當你各種資源下載完成進入到Android Studio的主界面之后,你已經成功了一半了。下一步就是build,這里大家要特別注意,只能用命令行進行build,不能使用菜單欄上面的build->make project或者rebuild project,因為利用后者build會失敗。我碰到的報錯如下圖:

  當然,在碰到上述錯誤的情況下我也嘗試過去搜索解決方案,Github上有這樣一條關於[Mac導入build的issue],里面有人提到要將imagepipeline module的build.gradle中的ndk路徑全部配成你本地的絕對路徑,我嘗試了一下,還是失敗了,具體錯誤我就不再貼了,我覺得這里還存在bug,有興趣的朋友可以關注一下剛提到的issue。

  既然GUI的build不行,我們就用命令行來build,打開Android Studio左下角的terminal tab,檢查一下terminal的路徑是不是Fresco工程的根目錄,因為gradlew和gradle wrapper均在工程的根目錄下。接着運行./gradlew clean將工程clean一下,可能你會碰到這樣的錯誤:

  沒關系,不用管他,我們可以進行手動clean,將每個module中的build文件夾都刪掉就行,其實clean的過程就是如此。刪干凈之后我們就可以運行./gradlew build了,整個build的過程可以分為三個階段:

  1. 又是一輪download,主要是imagepipeline中需要一些資源,如圖:

  2. 所有資源download成功之后又會進入clonewebp的階段,這個階段將會持續一段時間,並且沒有任何log出現在命令行,如圖:

    注意,在clonewebp的過程當中,如果你沒有翻牆的話可能會出現這樣一個錯誤,如圖:


    大家一看便知為什么會失敗,chromium相關的資源,需要從googlesource去download的

  3. 還有一個常見問題也會發生,就是取消lint error的問題,如圖:

    解決方案很簡單,就是在imagepipeline的build.gradle文件中的android的代碼塊中添加如下圖所示的代碼:


  經歷過上述三個階段之后,你的build也應該會成功了,整個build的過程應該在10分鍾左右,說實話我也頭一次見過build這么長時間的工程。build成功之后應該如下圖:

  好了,等你到了這一步,Fresco的導入也完成了,祝賀你成功了,下面我們來運行一下吧:

  大家可以通過Spinner隨便選一個加載工具將所有圖片和gif下載下來,然后切換加載工具進行比較,你會發現Fresco的緩存加載效率比我們常用的picasso和imageloader高太多,效果太明顯了。至於下載速度我個人覺得區別不大,這個跟網絡環境有關,就算相同網絡環境下的下載速度應該差距不大。

  這就是我導入Fresco的全部過程,時間有限,能力一般,如果哪里有講解錯誤,或者你有更好的解決方案請給我留言,咱們一塊討論討論。

 


免責聲明!

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



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