小米開原始檔管理器MiCodeFileExplorer-原始碼研究(0)-初步研究

小雷FansUnion發表於2015-10-25
2011年對著書本Android應用開發揭祕,寫了2個月的HelloWorld。
  現在想複習並深入,我沒有耐心再去一點點地敲程式碼了。
  4年前自己是個學生,實習,現在有工作,只能業餘時間研究。
  這一點是非常不同的。
  
  我希望通過研究別人的“成熟產品”,更好地全面學習。
  以目標為導向,具體來說,通過研究別人的一個產品,進而全面掌握,在研究的過程中,
把若干問題都解決了,從而達成“快速進步”的目標。
  我們學習Java,學習Android開發,不是為了玩玩而已,也不能緊緊是“感興趣”,更重要的是
解決實際的問題。實際問題通常都是要研發一個完整的產品,至少也是解決某個問題的工具,比如
小米的開原始檔管理器,下載原始碼,搞好Android環境,打包,安裝到我的Coolpad手機上,就可以用了。
它能夠解決Android手機上的檔案管理問題。

  我對這個開源產品的評價是9/10,不足之處是,文件太少了,沒啥說明。
  在成功打包執行,看到了介面和功能後,我非常喜歡,介面還可以,功能也是完整的。
  這種開源專案,我最喜歡了,完全是“成型產品”,“半吊子”的開源產品,研究起來比較折磨人,各種問題。
  
  看了看Github和官方社群,也不怎麼活躍了。
  
  官方社群:http://www.micode.net
  本地用Eclipse搞好環境,把Github上的程式碼搞進去。
  
  我個人習慣用Android真機測試,速度非常快,從打包到執行,不超過10秒。如果用模擬器,至少要30秒,急死人啊~
  
  Android原始碼,就2個包:
  net.micode.fileexplorer 小米寫的程式碼
  org.swiftp:一個開源的ftp server,被整合到了小米原始碼中,可以這麼理解
  
  
  幾十個Java原始檔,都放在1個包裡,好不習慣啊~
  在初步讀程式碼後,我優先整理了Java程式碼,分成了好幾個包。
  
  根目錄net.micode.fileexplorer
  1.頂級包
    FileExplorerTabActivity等各種Activity介面入口檔案,仍然保留在頂級包裡。
  2.impl
     小米或Android定義的介面的實現類。
  3.model
    模型檔案,實體檔案,比如FileInfo.java用來表示一個Android物理檔案。
這種程式碼,通常都是比較獨立的。
  4.ui
    檢視元件,是對Android元件的封裝和補充。
和Activity不同的是,它們不是入口檔案。
  5.util
    工具類,和模型類類似,它們也相對比較獨立。
比如,FileOperationHelper.java就具體完成了檔案的“增刪改查”。
  
  總的來說,就是把入口、介面、介面元件、模型、工具類等分離,使得你能很快地建立對專案的整體印象。
  先整體,後區域性。
  要有全域性思維,這是我對自己的要求~
  
  一個常見的問題
  Android打包之後,手機上顯示“程式停止執行”,沒有別的提示。
  這種問題,通常都是程式出了問題,這個地方Eclipse不夠友好,沒有給出錯誤提示。
  最後,通過debug模式,打斷點,定位到了錯誤程式碼,然後增加了try-catch捕捉,最後定位到問題。
  有的java檔案,包的路徑變了。
  CategoryBar extends View,這個元件是1個介面型別的元件,在xml中有配置。
  
   <net.micode.fileexplorer.ui.CategoryBar
                    android:id="@+id/category_bar" android:layout_width="fill_parent"
                    android:layout_height="35px" android:layout_gravity="center"
                    android:layout_marginBottom="5dip">
   </net.micode.fileexplorer.ui.CategoryBar>

  個人觀點:如果只會Android,只做自己工作中的那點事,而不關心Java服務端等其他人的工作,
  視野會比較狹窄。我心中的“大牛”,“經理人”,“技術負責人”一定是全域性型別的人才。
  我認為,全域性型別的人才更加稀缺,全域性型別的人才多是從專一型別的發展過來的。
  
  從專一型別過渡到全域性型別,我覺得更主要是“機遇”。
  “機遇”可能是別人給的,如果別人給不了,自己應該通過努力而獲得。
  個人努力,需要意識和方向指引~
  我是不會認可“努力比方向更重要”和“方向比努力更重要”這種片面的觀點的~
  
  小雷FansUnion-一個正在研究Android的程式設計師
  2015年10月25日
  湖北-武漢-循禮門
  QQ:240370818
  微信:FansUnion
  我的主要部落格:http://blog.csdn.net/FansUnion

相關文章