① 如何學習安卓開發
android開發學習路線的七大階段
第一階段:java面向對象編程;
第二階段:Java Web開發;
第三階段:android UI編程;
第四階段:android網路編程與數據存儲;
第五階段:android手機硬體管理;
第六階段:Android圖形編程技術;
第七階段:Android游戲開發。
② 一個資深的Android開發者需要掌握哪些技能
Android平台手機終端軟體開發精通Android開發平台及框架,一年以上實際開發經驗;精通Android GUI程序開發;1年以上J2ME開發經驗,熟悉J2ME編程;熟悉Linux環境編程優先 ;從事過嵌入式開發工作2年以上。熟悉HTML/WML/HTTP,具有良好的編程思想;熟悉C/C++或者Java開發語言和環境;有一年以上移動終端應用軟體開發經驗,有Android或者iPhone開發經驗尤佳;基礎扎實,精通常用數據結構與演算法和設計能力;熟悉移動終端特性和開發特點; 熟悉移動終端網路編程,了解3GWiFi等技術;熟悉C++/C#, MSSQL/MySQL資料庫開發;熟悉多線程、Socket或ACE等網路通信編程技術;熟悉java各種編程方法,比如多線程,jni,idl等。 熟悉JVM的運行機制,移植或者擴展過JVM到嵌入式平台者優先,比如phoneme 等。精通Android平台UI開發優先;英語良好,能閱讀英文資料;工作職責:負責Android平台的瀏覽器開發。在Android手機上設計並開發應用程序或游戲;Android平台框架層的維護以及擴展。移植各種流行的框架體系(多媒體,藍牙,無線)到android上負責Android項目的開發工作;負責Android項目的架構設計、方案的制定;跟進Android的新技術發展。纂寫設計開發及實現文檔;根據產品功能需求設計並完成軟體實現;參與產品需求分析並制定技術實施方案;總而言之,資深的工程師作用水權在於他本人有多強,而是起到了以點帶面的效果,提高整個團隊的競爭力。
③ 安卓開發工程師都需要會什麼求指導
各階段的Android工程師掌握的專業技術:
初級安卓開發工程師
掌握扎實的java基礎,了解各種設計模式,熟練掌握Android UI控制項、Android Java層API的相關使用。往中級層次發展時,繼續深入學習java編程技術,掌握更多Android開發需要的庫,還要精通ml、json解析,會做socket
c/s端的程序。
中級安卓開發工程師
除了上面提到的必備技能外,中級開發人員需要延伸到精通NDK JNI方式的開發,熟悉Android framework,會移植類似Fmpeg、Mplayer這樣的開源項目,並在Android上運行。
高級安卓開發工程師
作為高級app開發工程師,你只需了解,並不需要親自操作初級和中級工程師的工作流程,但是,你需要有一個整體知識構架,安卓開發各方面所涉及的知識你都有要了解,並有自己獨到的見解。需要熟練掌握Linux驅動開發,並對Linux內核結構很精通,掌握Android移植,包括硬體移植。
④ 如何做好Android的開發
開發人員應當在學習並深入了解Android之後,在自己的軟體中,將Android的優勢發揮出來,同時通過一些手段去彌補Android 本身的缺陷或不足。下面來看一下Android擁有的特點吧:
與硬體交互非常方便,包括攝像頭、GPS 等,都可以簡單的操作。
擁有自己的運行時和虛擬機,優秀的內存管理能力。
提供豐富的界面控制項供開發者使用,允許可視化開發,並保證Android平台下的應用程序界面一致。
提供輕量級的進程間通信機制。
支持無界面的後台服務類應用程序。
支持高效、快速的數據存取方式。
在這些特性的支持下,試圖在Android下開發一個應用不會太過困難。事實上,一個稍有 Java經驗的開發人員,都可以快速的上手進行 Android的開發。而開發的核心,一直以來也是圍繞著Android手機幾個大的特點來進行的,其中就包括了觸摸屏、攝像頭、GPS模塊、互聯網功能、語音輸入、Google賬戶等。需要說的是,如果一位 J2ME 工程師想轉行做Android,那麼他將付出的代價比J2SE或J2EE工程師要大得多。畢竟Android所支持的是基本完整的J2SE的子集,反過來再看J2ME就會覺得它的功能太弱了。
除了Java外,還有許多語言支持Android 的開發,比較為人所熟知的有Scala,而作為 Android本身的底層語言,C/C++的作用也完全不可忽視。而目前的開源社區內,已經有一些牛人在嘗試讓更多的語言可以開發Android應用。比較有代表性的可能是Koushik Dutta,他已經解決了在Mono平台下,讓Dalvik調用Mono 代碼的問題。或許在不久的將來,.NET 下的所有語言,都有可能藉助Mono跑在Android上,這是一件值得讓人期待的事情。
語言已不是問題,那還有什麼會成為問題?也許很多人會說「經驗」。誠然,經驗決定了一位開發人員能否快速地、流暢地完成開發工作,也決定了軟體的魯棒性,Bug的數量、等級和修正問題的返工次數。不過我認為,這些都不重要,哪怕是一個 Android 行業的新人,一邊查詢文檔一邊做開發,雖然效率會很低,但是一樣能把項目做完。在 Android 下,開發技術幾乎是沒有瓶頸的。那麼瓶頸在哪裡呢?事實上,在用過很多軟體後,就會發現,有很多軟體並不好用。很多用戶不願意用某個軟體,也並不是因為軟體沒有技術含量或是滿足不了需求,原因很簡單,就是不好用。
用戶體驗是凌駕於技術之上的,可以說,優秀的用戶體驗將可以起到事半功倍的效果,在一堆同類的軟體中,下載量最大的,一定是讓用戶用著感覺最舒服的,哪怕它的功能並不比其他的產品出色,甚至略差一些。我見過很多開發人員,他們視技術為己任,一心只鑽研技術,認為技術出色的軟體,會受到用戶的好評,甚至在一個手機游戲中,加入各種華麗炫目的3D效果。這些固然都不錯,但是真正的用戶卻不會喜愛它們。在移動應用中,簡潔明快才是用戶希望看到的。試想一下,當用戶在手機上玩一個RPG游戲,並被華麗的3D效果充斥了整個界面,那麼他將完全無法著手進行下一個動作。誠然,華麗的畫面是很容易吸引人,但是在這種華麗的背後,卻會直接把用戶和開發者自己領入一條深淵,再也無法回頭,最終的結果就是,用戶完全舍棄該款游戲,開發者或運營商也完全賺不到錢。
在移動平台開發的過程中,用戶體驗已經成為首要大事,只有聚焦在用戶的設計,才有可能被用戶所接受。下面來看一些典型的例子。
左圖是經典的Windows Mobile 6.1的界面,從Windows Mobile推出的那天起,這個界面就一直被宣傳成內容充實,包含常用所有功能的入口,非常貼合用戶的實際需求。也許在當時,這樣的界面確實能滿足一定的需求,但是到了現在,這樣的設計只能說是遠離用戶。每一項的高度都過小,因此需要使用筆來點擊,或是使用指甲。位於右下角的三個圖標,或許用指甲都很難點到,使用筆即多佔用用戶的一隻手,體驗是直線下降的。在用戶希望連耳朵都解放的現在,多佔用一隻手是什麼概念,這就意味著用戶乘車時沒有辦法握緊扶手,或者沒有辦法拎著自己的包。另外,在手機操作時,擁有一隻空閑著的手,就能有更多機會處理突發事件,佔用用戶的兩只手實在是不應該的。可以說Windows Mobile的用戶體驗是非常差勁的,幸好微軟在新的Windows Phone 7中,對界面做了巨大的改進,沒有再犯過去的錯誤。
再來看看Android是如何做的,這個界面看起來簡潔明了,和上面的Windows Mobile相比,可以說是毫不出彩,甚至在有些人的眼裡,這個界面很醜陋。但它卻是相當好用的,圖標很大,圖標的間距也很大。這就決定了用戶可以使用指腹去進行點擊的操作,並且點擊的范圍可以比較大,降低了點錯的幾率。
雖然屏幕點擊的方式一定程度上也和屏幕的材質有關,比如電阻屏只能用筆或指甲,而電容屏允許使用指腹,有一些還可以支持多點觸摸。對於普通用戶來說,使用指腹比使用指甲顯得更為常見,原因很簡單,如果圖標很大,那麼用戶會不自覺的使用指腹去點擊,而如果圖標很小,那麼用戶會屈起手指然後用指甲去戳屏幕。這個「屈起手指」的動作不能被大部分的用戶所接受。因此電容屏會漸漸流行,而電阻屏會漸漸被淘汰,這完全是根據用戶的體驗,優勝劣汰,是一件非常符合進化論的事。
用戶體驗還不僅僅是界面上的那些事,作為手機來說,每一個特點都將成為用戶體驗可以挖掘的一部分。比如說是否有鍵盤、是否支持多點觸摸等。有鍵盤的手機與無鍵盤的手機,用戶在執機時用的手勢必然不同,一個著重點在機身下半部分,即鍵盤上;而另一個著重點在整個屏幕上,換言之,手指可能在屏幕的任何一個位置活動。針對設備的具體情況來對應用進行設計也是很有必要的,目前Google為Android設計的按屏幕大小自動切換布局方式的框架非常有用,它改變了以往在程序的設計過程中,需要為每一種設備單獨編譯一個版本,或是僅對不同的屏幕做簡單拉伸的情況。另外,在設計中,還需要考慮實際操作體驗,比如放大一張圖片,是使用放大按鈕,還是使用多點觸摸。這兩種做法都很常見,但是在一個有此需求的應用中,卻不能單獨的使用某一種。比較好的做法是,在程序代碼中,判斷設備是否支持多點觸摸,若不支持,可以顯示一個放大按鈕,而對於支持的,則在應用第一次啟動時,彈出一個Toast提示,告訴用戶可以多點觸摸從而放大圖片。
下面再說說應用界面布局的問題,來看下面兩個截圖。
這兩個應用同為Android下的游戲機模擬器,上面的圖是PS模擬器,可以看到虛擬按鍵的布局有些奇怪,特別是 L和R,一上一下非常不習慣。而右面的是GBA模擬器,可以看到它的按鍵中規中矩,用戶馬上就可以上手了。但是,從上手的角度來說,GBA模擬器的確簡單,但是從實用的角度來說,PS模擬器做得更好。為什麼呢?原因很簡單,PS模擬器利用到了整個屏幕,而且虛擬按鍵的布局,防止了兩只手打架,也防止了屏幕下半部分由於手指的原因完全不可見的問題。通過一段時間的習慣,PS 模擬器就可以被玩得很溜。而再看GBA模擬器,只利用到了一半的屏幕不說,而且還是縱向的,雙手操作時,兩只手很容易打架,相互干擾,要玩一些動作性稍強的游戲幾乎不可能。雖然看起來直觀易懂,但是這樣的UI,是會被用戶所舍棄的。
在移動平台上,到目前為止,用戶依然沒有固定的操作習慣,而軟體的開發人員要做的事情,就是把用戶往一個簡單、明快的操作體驗上引導,使他們更快的學會使用軟體,並且讓他們習慣、擅長某一種或幾種操作。從某種意義上來說,蘋果的設計人員手冊已經很好的解決了問題,iPad已經做到了中老年人也可以輕松上手,甚至連貓都會玩。但是至少目前為止,還沒有見到適用於Android的設計手冊,開發人員或是軟體廠商也都各按自己的理解去進行軟體的設計,用戶也被迫在使用不同的軟體時,適應不同的風格。
在未來為期不短的一段時間內,Android上應用程序的用戶體驗將成為一個主要的研究點,特別是游戲類應用。由於Android上的某些限制,開發人員較難實現像PSP游戲那樣的華麗效果,因此只能夠在游戲本身的游戲性上下足工夫。當然了,等Android手機的性能再次大幅提升,電池容量再大幅提升後,可能會出現可以匹敵PSP游戲的華麗游戲,只是目前不應當過分考慮這些。
在我以前的一些文章也曾提到過,為移動平台做開發,應該盡可能的考慮程序的執行效率而不是架構,因為移動平台本身通常不會有多好的配置,在有限的配置下實現性能最佳化是非常重要的。從另一種角度上說,iPhone 能夠用較低的配置來實現整機流暢運作,也是得益於較為嚴格地針對性優化,把硬體平台的性能完全發揮出來,這樣做得到的結果是,iPhone的整體性能,看起來反而比一些更高配置的手機要好一些。
最後,再簡單地說一下Android的開發與其他平台的開發有什麼異同。我們知道不同的開發方式將對最終的結果產生不同的影響。在以往的經驗中,各廠家的開發工具,都在往可視化方向發展,比如說微軟的 Visual Studio,一代比一代強大,可視化程度越來越高。而蘋果的Xcode也是一樣,它建議用戶完全使用可視化的方案來解決一個應用。這些固然很好,但是帶來的問題也不小。舉個簡單的例子,有一個 Windows Mobile 的應用,上面有一個 ListBox,而你正試圖為該 ListBox 添加一個圖標,並試圖按每一項的內容限定來改變文字顏色。能做到嗎?當然能,但是過程卻不簡單,你必須經歷復雜的自繪才能實現這一點。這也是常規的RAD開發中普遍遇到的問題,即開發人員不能方便地控制到應用的每一個細節。開發框架對API的封裝在某種程度上提高了開發的效率,但是另一種程度上,它屏蔽了太多的細節,而這些細節有可能就是開發人員所需要的。
而Android雖然也擁有可視的開發環境,但是它非常弱,第三方的RAD方案迄今為止也依然顯得虛弱無力,對於用慣了微軟等公司出品的高級RAD環境的人來說,可能會充滿了無奈,也可能充滿了鄙視,這種可視化算什麼呢?如果僅僅從開發人員的角度來看,有利也有弊,弊端很顯然是開發效率不夠高,而事實上,由於Android採用Java語言來進行開發,其開發效率本身就不會太高。而利的部分,可能是會被很多高級工程師所喜愛的,因為它是犧牲開發效率,來換取最大的可定製性的一個典範。也許有一些剛開始學習Android開發的朋友會覺得製作界面有種種的不便,但是只要深入地學習下去,就會覺得Android的界面實現方式是非常領先的。同樣舉出上面ListBox的例子,在Android下,就可以通過一組短小精悍的代碼來自定義ListItem和相關Adapter以實現。
我想優秀的開發人員是應該完全放棄RAD的,在目前的環境下,RAD幾乎沒有什麼作為,反而會成為應用分層的一個巨大的絆腳石。在RAD的環境下,要求一位開發人員對軟體的每一個部分都面面俱到,這怎麼可能呢?比如說軟體界面就是應該交由UI專員去設計,資料庫部分也應該交由相關的負責人去做,完全不可能由開發人員從頭到尾一個人搞定。如果哪個老闆真的僱用了一位超級開發人員來包辦一切,那麼除非那個人擁有100年的工作經驗,不然的話項目做死就是活該。我想Android的開發框架已經很好地說明了這個問題,程序資源(包括圖片、字元串、其他的外部數據等)和代碼完全分離,各部分人員各司其職,完成整個項目,每個部分的人員都不會有太大的壓力。並且,由於Android採用XML對界面進行描述,使得對界面的更換也變得容易,設計師可以設計出多套界面,不論是用於UI方案評估或是在實際應用中更換界面風格都很方便。這也是其他移動平台的開發所不具備的。
⑤ Android開發求職簡歷的項目經驗是指什麼
我面試別人時,希望看到的簡歷是這樣的:
我在XXX項目中擔任技術leader,在開發該項目過程中,遇到了內存溢出,業務邏輯混亂,網路數據載入慢的問題,在我的帶領下,App的運行內存從80M降低到40M;項目進行了多次重構,嘗試了MVVM和MVP,最後因為效率問題,部分模塊改為MVC結構,重要的業務邏輯,我們將其放在了Web層;我獨立封裝了網路框架,請求響應的效率提高了0.5S-1.5S左右;
隨便寫的簡歷Demo,大致意思你應該能看懂吧?
多多揣摩黑體字的意義:列具體數據,切記不要假大空,吹噓。
⑥ 做安卓軟體開發需要學習什麼技術
Android的開發技術很多,在開始學習的時候不可能一次性全部學會,也沒有必要一開始都全部學會,但是有些技術是非常常用的,需要在開始時打好基礎,這些技術時:
1、Activity生命周期
雖然Android中有四大組件,但是不可否認Activity是最常用的。所以熟練掌握Android的生命周期是必須的。其實生命周期就是記住 Activity的那些方法在什麼時候被系統調用,這樣才可以把對應的邏輯代碼寫到合適的方法內部去。
至於服務和廣播組件可以稍微緩一下,到實際使用的時候再學習都可以。
2、界面開發技術
界面開發是一種基本的技術,幾乎所有的程序裡面都需要用到。在Android開發中界面開發分為3種:
1)使用xml文件布局
使用xml首先對於界面進行布局,然後在Activity裡面進行引用是最常見的應用軟體開發技術,這種方式使用的最大,需要學習的內容也最多。學習時需要熟悉:
a)五種Layout布局
深刻理解五種布局組織控制項的方式是一個基本的基礎,這樣你才可以在實際的界面中靈活的使用每種布局結構,構造出需要的界面。
b)常用控制項
控制項有很多,至少要知道每種控制項是做什麼的,至於裡面的特定參數和方法可以學要的時候再去查
c)界面美華
系統的控制項很多時候無法滿足要求,需要通過添加背景更換圖片等進行美化,要熟悉每種控制項如何去美華。
掌握了上面的內容,通過布局的嵌套就可以製作出各種界面,如果在熟悉include的使用就可以減少xml的重復,方便後期的修改和維護了。
2)使用代碼動態創建
有些時候需要動態的創建一些布局和控制項,這個就需要使用LayoutInflater去創建一些動態的界面了。
3)自己繪制界面
游戲中常用,繼承SurfaceView自己繪制。
3、數據存儲技術
Android中的數據存儲方式有3種:
1)SharedPrefereneces存儲
對於簡單的數據可以使用該方式存儲,以鍵值對的方式存儲一些基本的數據。
2)文件存儲
將數據以文件的形式存儲,可以是手機自身的存儲也可以是SD卡,文件的數據格式自己定義。
3)SQLite資料庫存儲
使用標准SQL語句進行操作,復雜數據的首選。
4、網路編程
現在的Android程序不需要聯網的已經不多了。所以網路編程也是必須的,一般的公司都會封裝有自己的聯網結構,但是基本的聯網還是要熟悉。
1)HTTP聯網
使用Http聯網+Json數據格式是現在很多客戶端的首選。
2)Socket聯網
至於藍牙等連接方式則可以在項目需要的時候學習。
對於手機的系統功能,如撥打電話、發送簡訊、讀取系統參數等則可以根據需要在學習,不麻煩的。
其次,手機軟體相關
Android開發不同於普通的電腦軟體開發,需要了解手機的操作習慣,知道手機的屏幕不大、內存有限,電池有限等,在實際開發和設計時盡量考慮。
⑦ 一個資深的Android開發者需要掌握哪些技能
1.Android/iphone平台手機終端軟體開發精通Android開發平台及框架,一年以上實際開發經驗;
2.精通Android GUI程序開發;
3.1年以上J2ME開發經驗,熟悉J2ME編程;熟悉Linux環境編程優先 ;從事過嵌入式開發工作2年以上。
4.熟悉HTML/WML/HTTP,具有良好的編程思想;
5.熟悉C/C++或者Java開發語言和環境;
6.有一年以上移動終端應用軟體開發經驗,有Android或者iPhone開發經驗尤佳;
7.基礎扎實,精通常用數據結構與演算法和設計能力;
8.熟悉移動終端特性和開發特點; 熟悉移動終端網路編程,了解3G\WiFi等技術;
9.熟悉C++/C#, MSSQL/MySQL資料庫開發;熟悉多線程、Socket或ACE等網路通信編程技術;
10.熟悉java各種編程方法,比如多線程,jni,idl等。 熟悉JVM的運行機制,移植或者擴展過JVM到嵌入式平台者優先,比如phoneme 等。
11.精通Android平台UI開發優先;英語良好,能閱讀英文資料;
工作職責:
1.負責Android平台的瀏覽器開發。
2.在Android手機上設計並開發應用程序或游戲;
3.Android平台框架層的維護以及擴展。
4.移植各種流行的框架體系(多媒體,藍牙,無線)到android上負責Android項目的開發工作;
5.負責Android項目的架構設計、方案的制定;
6.跟進Android的新技術發展。纂寫設計開發及實現文檔;
7.根據產品功能需求設計並完成軟體實現;
8.參與產品需求分析並制定技術實施方案;
⑧ 如何成為一名Android開發高手
以下適合沒有開發經驗者,對於碼農不適用:
1、你得喜歡開發,強烈的感受到那種看到自己的代碼運行後得到你想要的結果後的那種幸福的感覺。(上c語言課程的時候,只要自己做過作業一般都能體驗到這種感覺吧)
2、找一本好的書。(怎麼找?上amazon看看用戶的review就差不多知道哪個適合你了)
拿到書之後循序漸進,不要跳躍閱讀(你還沒到這個程度),連前言都不要放過,一字一句的讀。裡面講到例子的時候,打開開發平台跟隨例子(不要代碼,而要一字一句的敲進去,感受語法和開發環境)
3、如果你看完一章後你發現很多東西不明白,請重新再看這章。(如果看了幾遍還不明白,請換一本書,這本書不適合你)
4、不要開始就嘗試看android的reference(還沒到時候,龐大的library會讓你迷失,進而失去學習的興趣)
5、一章一章的跟隨書本進行,完成所有的範例(如果有作業的話,一並完成),進行到全書的一半的時候,你應該掌握了初步的開發技能,對android的資
源、api的應用也積累了一定的程度,這個時候可以嘗試超越書上的范疇。你花在查閱android文檔上面的時間應該越來越多,因為你內心洶涌著一種沖
動:把書上提到的範例更佳完善化。Ok,你必須開始使用文檔,學習各種新的資源和api。
6、嘗試採用項目驅動法看書:打開新的一章,首先看看這一章的範例擬實現的功能是什麼,自己思考一下該如何實現,需要使用到哪些新的資源和api,通過查
閱文檔嘗試獨立完成。無論最後完成到什麼程度,先把程序跑起來再說。之後再去閱讀這一章的內容,看看作者是怎麼做的,你的方法跟他的方法差別在哪裡。
⑨ 如何增加android開發經驗
。數據結構,性能優化等等這些。想想自己實際開發中這些確實用上了,但並不知道原理,很多時候都是從網上拿來代碼然後修修改改,或者比如retrofit框架,看看demo引入項目中。。