小米開原始檔管理器MiCodeFileExplorer-原始碼研究(0)-初步研究
阿新 • • 發佈:2019-02-11
2011年對著書本Android應用開發揭祕,寫了2個月的HelloWorld。
現在想複習並深入,我沒有耐心再去一點點地敲程式碼了。 4年前自己是個學生,實習,現在有工作,只能業餘時間研究。 這一點是非常不同的。 我希望通過研究別人的“成熟產品”,更好地全面學習。 以目標為導向,具體來說,通過研究別人的一個產品,進而全面掌握,在研究的過程中,把若干問題都解決了,從而達成“快速進步”的目標。 我們學習Java,學習Android開發,不是為了玩玩而已,也不能緊緊是“感興趣”,更重要的是解決實際的問題。實際問題通常都是要研發一個完整的產品,至少也是解決某個問題的工具,比如小米的開原始檔管理器,下載原始碼,搞好Android環境,打包,安裝到我的Coolpad手機上,就可以用了。它能夠解決Android手機上的檔案管理問題。 我對這個開源產品的評價是9/10,不足之處是,文件太少了,沒啥說明。 在成功打包執行,看到了介面和功能後,我非常喜歡,介面還可以,功能也是完整的。 這種開源專案,我最喜歡了,完全是“成型產品”,“半吊子”的開源產品,研究起來比較折磨人,各種問題。 看了看Github和官方社群,也不怎麼活躍了。 本地用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
現在想複習並深入,我沒有耐心再去一點點地敲程式碼了。 4年前自己是個學生,實習,現在有工作,只能業餘時間研究。 這一點是非常不同的。 我希望通過研究別人的“成熟產品”,更好地全面學習。 以目標為導向,具體來說,通過研究別人的一個產品,進而全面掌握,在研究的過程中,把若干問題都解決了,從而達成“快速進步”的目標。 我們學習Java,學習Android開發,不是為了玩玩而已,也不能緊緊是“感興趣”,更重要的是解決實際的問題。實際問題通常都是要研發一個完整的產品,至少也是解決某個問題的工具,比如小米的開原始檔管理器,下載原始碼,搞好Android環境,打包,安裝到我的Coolpad手機上,就可以用了。它能夠解決Android手機上的檔案管理問題。 我對這個開源產品的評價是9/10,不足之處是,文件太少了,沒啥說明。 在成功打包執行,看到了介面和功能後,我非常喜歡,介面還可以,功能也是完整的。 這種開源專案,我最喜歡了,完全是“成型產品”,“半吊子”的開源產品,研究起來比較折磨人,各種問題。 看了看Github和官方社群,也不怎麼活躍了。 本地用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> 個人觀點