Android入門仍是很簡單的,看兩本書,翻閱幾篇文章,搭建了開發環境就算入門了。但是怎樣開發一款完備的android應用呢,開發一款高端的android應用又須要那些知識呢,做者根據幾年的開發經驗作了一點總結,有不足之處也請讀者補充。html
開發的應用確定會聯網,在移動互聯網時代,單機應用會愈來愈少。若是咱們開發的應用缺乏與服務器的交互,內容上不會豐富,更有可能的是咱們沒法控制到應用,得不到用戶及用戶反饋。網絡鏈接中用的最多的無非是Http或者Tcp。Android中http使用提供了三個包,咱們經常使用的是HttpClient、HttpURLConnection。網絡上也有對http的封裝包,例如volley、android-async-http,volley使用的HttpURLConnection,android-async-http使用的HttpClient。雖然http的封裝包使用起來都很簡單,可是咱們也應該瞭解一下他們的區別,做者有一篇文章是介紹HttpClient、HttpURLConnection區別的,但願對您有幫助,《AndroidHttp通訊 HTTP Client與HttpURLConnection的區別》。java
volley和android-async-http都是很是簡潔、偉大的http開發庫,android-async-http有詳細的開發文檔,做者不作詳細的說明。 Volley是Ficus Kirpatrick在Gooogle I/O 2013發佈的一個處理和緩存網絡請求的庫,能使網絡通訊更快,更簡單,更健壯;他沒有使用文檔,做者有幾篇文章介紹了volley的使用。
android
《Google I/O 2013 – Volley: Easy, Fast Networking for Android》數據庫
《Asynchronous HTTP Requests in Android Using Volley》緩存
《Android UI開發第三十六篇——使用Volley加載圖片列表》安全
客戶端開發不一樣於服務端,服務端只處理邏輯,客戶端即處理邏輯又處理界面,並且界面又是多變的,不一樣的客戶端,界面確定不同,相同的客戶端,不一樣時期的界面也可能不同,因此客戶端開發者總感受在修改界面,不是在改界面就是在改界面的路上。服務器
咱們處在一個以「用戶體驗至上」的時代,產品經理常常會以此爲理由修改已經肯定的UI,爲了應付多變的需求,咱們必須儲備儘量多的UI處理技能。從最簡單的Button、TextView、EditText到高級點的Listiew、Tab、ViewPager,咱們都應該掌握,咱們還應該跟上時代掌握ActionBar、Fragment等等,自定義View的技能也必不可少。做者有一個UI開發專欄,介紹到了不少經常使用UI知識,分享給你們。網絡
應用安全是咱們重點關注的,尤爲涉及到支付相關應用。咱們不但願本身的應用遭破解、也不但願用戶被釣魚、更不但願出現數據漏洞,那咱們就須要提升應用安全技能。
應用安全會涉及到代碼安全、客戶端與服務端通訊安全、應用內部組件通訊安全、數據庫數據安全等等,做者也提供了一個專欄來介紹應用安全,內容還不夠多,之後會再補充一些。做者也不是專業作安全的,不免有不足之處,也請讀者諒解。
Android平臺從誕生起,就已經支持C、C++開發。雖然Android的SDK基於Java實現,但這並不等同於「第三方應用只能使用Java」。在Android SDK首次發佈時,Google就宣稱其虛擬機Dalvik支持JNI編程方式,也就是第三方應用徹底能夠經過JNI調用本身的C動態庫,即在Android平臺上,"Java+C"的編程方式是一直均可以實現的。涉及到注重性能,或比較底層的程序都會使用C/C++開發,例如音視頻編解碼。有的應用會使用so文件,以保證應用安全。
NDK全稱是Native Development Kit。NDK提供了一系列的工具,幫助開發者快速開發C(或C++)的動態庫,並能自動將so和java應用一塊兒打包成apk。官方關於NDK開發的文檔相對較少,做者也總結了幾篇文章,幫着初學者入門。
JNI專欄中包含了JNI入門、C調Java、Java調C、
android開發中,使用到的知識不僅是上面的四點,還會有數據庫相關、Broadcast、Service等等,可是上面的四點在使用過程當中更豐富、多變;而數據庫相關、Broadcast、Service等比較簡單、單一,在每一個應用中的使用方式都是同樣的。在學習中咱們更應該注重以上四點知識的積累。有不足之處,望讀者留言補充。
博主有幸成爲2013年度博客之星的候選人之一,期待你的一票,謝謝您的支持。
投票猛擊:
http://vote.blog.csdn.net/blogstaritem/blogstar2013/xyz_lmn