項目
搜芽移動客戶端
項目包結構,日志,編碼說明
作者
曾金龍
時間
2014-10-13
說明
簡要說明工程結構,使用的log4j日志系統和UTF-8編碼
第一部分:解決工程亂碼問題
在windows下面建立工程默認是采用GBK編碼的。而一般互聯網公司(迅雷,包括我知道的百度等)都是采用UTF-8編碼的。所以,在windows環境下面打開我們的工程會出現亂碼,我們的APP也是亂碼。所以需要更改編碼方式為UTF-8.具體步驟如下
右擊項目(seller,ExpandTabView等都是如此),選擇properties菜單,在彈出的對話框的第一個選項Resource,如下圖:在Text file encoding 中,選擇 UTF-8)
注明:我的是ubuntu系統,默認是UTF-8,windows的可能要從Other裡面去選UTF-8,具體自己摸索,不難)。
至此,編碼問題解決。以後工程都采用UTF-8進行開發。通用。
第二部分:日志系統
1)Android.util.Log
日志在我們這裡有兩部分組成。一部分是Android.util.Log,Android默認的,它可以將日志打到DDMS的logcat裡面,供我們實時觀察。這也是我們開發中最主要的日志方法。快捷定位問題。
2)Log4j.
Logcat的日志會被沖掉,對於有些深層次的邏輯問題,而不是編程問題的時候,一般互聯網公司都會采用輸出日志到文件系統再進一步發送到某個日志服務器。搜芽采用的是log4j日志輸出系統,在項目/libs/可以看到有兩個jar庫是log4j的。
Log4J的初始化配置,在文件com.souya.seller.app包中的sellerApplication文件中的setupLog4j()方法中配置,具體看代碼,這樣在APP啟動,日志系統就配置好了。
log4j的作用還不大,但先架起來,一個完整的APP需要它。後續復雜了就會用得上。觀察幾十兆甚至幾百兆的日志對與定位非必現的復雜問題會經常碰到的。
關於log4j,網上也有資料可查。
第三部分:包結構
如下圖所示,簡單說明現有包的結構
seller:包含幾個重要的Activity,後續的Activity盡量不要放在這裡。
app:APP范圍內的全局類。
Askbuy:用戶求購
Askbuy.widget:用戶求購的UI組件
base:Fragment和Activity的基礎類
cache:圖片緩存系統
clothManager:布匹管理
data: 數據,主要是和服務器打交道的數據處理。
Database:數據庫相關,本地SQLite的。
exception:異常處理
hotsearch:熱門搜索
misc:常量
module:模塊。主要是用到第三方庫或者我們後續的其他庫,升級庫等用到。
search:搜索相關,在ActionBar上進行搜索,並自動提示等功能。
Upload:上傳
util:工具
widget:常用UI組件。
Q& A
1:這個包結構合理麼?
答:不合理,後續會繼續優化,但暫時先這麼做,畢竟重構是建立在代碼多的驅動下做才有意義。
2:為什麼這麼多包?
答:後續把買家賣家都用到的放到一塊。對於如clothmanager等這種功能性頁面,還是會保持一個功能頁面一個包的設計,每個包不會超過10個文件,邏輯一目了然。