您好,登錄后才能下訂單哦!
開發工具首選Android studio ,其作為Google官方指定的Android開發工具,其發展已經有了很長一段時間,目前已經成為了Android特定的開發工具。
2.App設計風格
這一點對于一個開發者來說,貌似沒有決定權,最終的決定權在產品部門手里。盡管這樣,我還是會盡力說服產品部門將App設計成MaterialDesign風格。這一點說多了都是淚啊,作為一個Android開發者,卻整天開發著iOS風格的App,相信很多公司都這樣,為了節省成本和時間,Android和iOS共用一套UI。舉一個最常見的例子,AndroidApp中每個頁面TitleBar的左上角放一個返回按鈕,這在iOS里是必須的,但Android有返回鍵啊,這樣設計對于Android完全是多此一舉。真心希望產品設計者尊重每種操作系統的風格及使用習慣,不要再設計不倫不類的產品。MaterialDesign正好提供了一種這樣的規范,自MD規范發布以來,其優雅的設計和清新的風格已吸引了大批設計者和開發者,如今MD設計不止在Android上(已有官方類庫支持MD風格),甚至在CSS、HTML、JavaScript網頁設計上都越來越火。因此,對于App的設計風格,MaterialDesign當仁不讓,也許你曾經錯過了AndroidDesign,請不要再錯過Material Design。
3.版本支持
對于Android要支持的最低版本,可以參考各個版本的市場占有率,其實最靠譜的是根據自家App的統計數據來決定,目前我們的App最低支持4.4。以個人觀點認為,雖然4.x的版本仍然有一部分用戶,但其實手機更新換代特別快,為了更好的用戶體驗,也為了應用更新的API(很多第三方庫也都有版本要求),應該提高最低支持的版本,大概3.0為宜,即API Level為11。
4.App框架設計
相信大家都有體會,隨著功能模塊的增加,App越來越大,如果沒有良好的架構設計,則代碼將會變得臃腫且不易維護,各功能模塊的耦合度會越來越高。因此可以把App模塊化,將一個完整的App劃分成幾個相對獨立的模塊,這樣即可以降低模塊間的耦合也利于復用。
1.網絡模塊
已經很少有單機版的App了吧,大部分都需要聯網,從服務器請求數據,因此網絡模模塊必不可少。GitHub上的開源網絡框架也特別多,個人認為可以使用開源框架,目前我會選okHttp或者Volley,也許以后會有更好的網絡框架出現。注意如果使用開源框架,則必須要閱讀其源碼,必須能夠駕馭它,這樣就不至于當bug出現時束手無策。當然還可以自己寫網絡模塊,目前我們的App網絡模塊就完全是自己寫的,這樣的好處是自己熟悉所寫的代碼,當有bug時可以迅速定位問題,同時注意處理一些聯網過程中的細節,如:
(1)對HTTPS的支持、HTTPS證書的驗證(目前很多做法都是默認允許所有HTTPS證書的,其實這樣做是不安全的,應當真正地做證書校驗)
(2)支持Wap方式上網,移動、聯通、電信代理的設置
(3)支持重定向、數據壓縮傳輸等
(4)其他值得注意的問題
自己寫網絡框架可以完美地處理這些細節,但時間成本比較大。如果使用開源框架,一般都沒有處理這些細節,因此我們可以在第三方框架上做些修改,這樣時間成本將會節省很多。在這里我給大家推薦幾個比較流行的網絡庫:
okgo:OkGo - OkHttpUtils-2.0.0升級后改名 OkGo,全新完美支持RxJava
項目地址:https://github.com/jeasonlzy
該庫是封裝了okhttp的網絡框架,可以與RxJava完美結合,比Retrofit更簡單易用。支持大文件上傳下載,上傳進度回調,下載進度回調,表單上傳(多文件和多參數一起上傳),鏈式調用,可以自定義返回對象,支持Https和自簽名證書,支持cookie自動管理,支持四種緩存模式緩存網絡數據,支持301、302重定向,擴展了統一的上傳管理和下載管理功能
retrofit:Retrofit 是 Square 公司出品的默認基于 OkHttp 封裝的一套 RESTful 網絡請求框架,不了解 RESTful 概念的不妨去搜索學習下,RESTful 可以說是目前流行的一套 api 設計的風格,并不是標準。Retrofit 的封裝可以說是很強大,里面涉及到一堆的設計模式,你可以通過注解直接配置請求,你可以使用不同的 http 客戶端,雖然默認是用 http ,可以使用不同 Json Converter 來序列化數據,同時提供對 RxJava 的支持,使用 Retrofit + OkHttp + RxJava + Dagger2 可以說是目前比較潮的一套框架,但是需要有比較高的門檻。
Retrofit 的具體使用方法與地址在這里:
http://square.github.io/retrofit/
Volley:Volley 是 Google 官方出的一套小而巧的異步請求庫,該框架封裝的擴展性很強,支持 HttpClient、HttpUrlConnection,甚至支持 OkHttp,具體方法可以看 Jake 大神的這個 Gist 文件:
https://gist.github.com/JakeWharton/5616899
而且 Volley 里面也封裝了 ImageLoader ,所以如果你愿意你甚至不需要使用圖片加載框架,不過這塊功能沒有一些專門的圖片加載框架強大,對于簡單的需求可以使用,對于稍復雜點的需求還是需要用到專門的圖片加載框架。
Volley 也有缺陷,比如不支持 post 大數據,所以不適合上傳文件。不過 Volley 設計的初衷本身也就是為頻繁的、數據量小的網絡請求而生!
關于 Volley 的具體用法可以見我很早在 GitHub 的一個 demo :
https://github.com/stormzhang/AndroidVolley
OkHttp: OkHttp 是 Square 公司開源的針對 Java 和 Android 程序,封裝的一個高性能 http 請求庫,所以它的職責跟 HttpUrlConnection 是一樣的,支持 spdy、http 2.0、websocket ,支持同步、異步,而且 OkHttp 又封裝了線程池,封裝了數據轉換,封裝了參數使用、錯誤處理等,api 使用起來更加方便。可以把它理解成是一個封裝之后的類似 HttpUrlConnection 的一個東西,但是你在使用的時候仍然需要自己再做一層封裝,這樣才能像使用一個框架一樣更加順手。
OkHttp 的具體使用方法這里就不贅述,地址在這里:
http://square.github.io/okhttp/
在APP的開發過程中,圖片是APP 不可或缺的元素,而且圖片是占用內存的大戶,因此圖片管理框架特別重要,不好的圖片框架容易引起內存泄露甚至導致崩潰。當然可以自己實現圖片框架(目前我們也是這樣做的),實現圖片的下載、解碼、緩存等關鍵環節。個人建議可以采用一些比較好的圖片庫,也許會比我們自己管理圖片更完善和高效。我會推薦如下幾個圖片管理庫:
(1)Glide,Google的一些官方App,如Googlephotos都使用了,還要解釋更多嗎?
(2)Fresco,FaceBook的開源庫,功能超級強大,支持WebP、Gif、JPEG漸進顯示,關鍵是其對圖片內存的設計思想,使得圖片內存開銷大大減少。
(3)Android-Universal-Image-Loader,在出現上述圖片庫之前,貌似這個最火吧,之前個人的App中也用了它。
(4)Picasso,Square的開源庫,據說Glide就是參考Picasso設計的。
對于APP 的設計模式個人采用MVVM或者MVP模式進行設計。
10.App的安全性考慮
AndroidApp的安全問題很少有人重視,但這的確是一個很嚴重的問題,一些好的App經常被人破解。建議將一些核心算法等寫成.so庫,重要的邏輯放在服務器端,數據請求采用加密等,另外打包APK時至少要混淆代碼,還可以采用APK加殼機制,總之這類的防范措施永遠不嫌多。
一口氣漫無邏輯地寫了這么多,可能會有遺漏的內容,后續會補充完善。我想如果按照上述原則,至少可以開發出一款不錯的App。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。