⑴ 學習android開發,要學哪些東西
android的一些基本知識,控制項使用,傳值,組件等,現在好多培訓出來的人都是基礎差的要死,最基本的問題都要問好多人,其實只是隨便的一本android開發的書上都有寫的。弄懂這些之後如果你的java基礎還尚可,那麼就可以進行簡單的android開發了,如果想更深層次的開發你就要學會讀sdk,學會讀別人的代碼,最好模擬下市場上最常用的一些產品裡面的效果,試著自己去寫一下,哪怕你用最笨的方法實現也比直接別人的代碼import進來自己用要好的多。當然有時候經驗這個東西沒辦法,只有在開發過程中一點一點積累。看多了,寫多了慢慢就融會貫通了,祝你早日踏進大牛行列~
⑵ 如何自學 Android 編程
如何自學 Android 編程:
項目需要,8月中旬開始決定做安卓的程序,所以馬上就開始學習安卓方面的開發知識,把最近的學習實踐經歷和大家分享分享。不要一開始就下載一大堆資料,視頻,然後就不知道做什麼了,要給自己定個目標,我要做什麼?我怎麼達到目標?
我不懂java,但是懂C#和C++,所以我沒主張去單獨學習java語言,如果你是個最最初的新手,沒啥語言基礎,那你必須先看看java語言,不要很詳細看,因為學習Android中,你也是在學習java。
1. 明確目標
沒有目標的學習,會感覺到後面沒什麼成果,在1年前,我也打算學習android開發的,但是目的就是學習,到網上去下載很多學習的視頻,然後把開發環境搭建起來,能把Helloworld運行起來,能打些log,Activity之間也能互相切換了,但是後面也就不了了之了,因為不知道學了要干什麼。依葫蘆畫瓢的做了幾個例子,因為裡面的問題都是已經解決的,所以也沒能深入的系統學習。
這次因為產品的需要,要做Android版本,要做的東西一開始就已經設計好了,見搖搖2選1安卓版本,剛開始也不知道裡面有些什麼技術難度,但是要做的目標已經明確了,而且也沒有現成的,碰到問題就查資料,慢慢地解決,這樣有的放矢,學習的效果非常好。既有現成的技術可以使用,又有些技術,需要查比較多的資料,這樣記憶就比較深刻,所掌握的知識也比較系統。
接下來的一系列文章,我會把在開發搖搖2選1中遇到的問題,給大家詳細講講,程序雖然小,但是五臟俱全,做Demo和做產品的要求完全不是一個級別,如果Android大牛感覺知識講的比較淺,那可以繞道,畢竟我是從一個完全的新手開始的。
2. 了解安卓開發中比較困難的地方
學習一個新平台,就要知道此平台開發要面臨的困難有哪些,不要做到最後,這些問題沒有考慮,那就比較糟糕了。在網上搜索了下,安卓開發困難總結如何:
1)安卓系統版本比較多,各版本之間的兼容性是個問題,此為系統碎片。
2)安卓設備千變萬化,設備難以統一,每個產品都成為獨立,分散的Android碎片。
3)解析度五花八門。一個產品,可能需要多個界面排版,人工消耗比較大。
看到這張圖,有沒有頭疼的感覺?
總結成一句話:Android的碎片化真是要來開發者的命。
3. 搭建開發環境
"巧婦難為無米之炊",開發環境肯定是第一件要做的事情,這類的文章已經很多了,我也不多說了,多說也就比較無聊了。感謝吳秦,也是博客園里的一員,他寫的很詳細了,見這里。
4. 查看網友總結的一些經驗。
不是什麼都查看,開發中遇到什麼問題,就去查看什麼問題,這樣你查到的知識,馬上就能深入的實踐,這樣知識就鞏固了。
1)首先當然要看Android的開發文檔,裡面其實大部分的知識都有了,還有就是SDK自帶的Samples。
2)博客園里搜索「Android開發」,會出來一大把,很多網友都是很系統的講解了。
3)eoe
android社區,裡面有很多網友上傳了現成的demo代碼,裡面很多都是模仿現在流行的產品的界面開發,很是不錯。
5. 掌握調試方法
個人一直認為,調試技巧是開發中最重要的技能,如果調試技能比較差,不知道如何查找問題,那不會是個好的程序員,其技能也不會高到哪裡去。
Android做下來,感覺調試這塊做的很不錯了,這要感謝Eclipse
IDE做的比較不錯,但是Android的界面排版部分,真的不敢恭維,Eclipse時間用長了,佔用內存真是大。有哪位高手能否告訴我下,你們界面排版是用什麼的?
Android里,如果程序出了問題,有些是一下跟蹤不到的,這時就要用到Log類了,Log類使用很簡單,就不多說了。
自己一個很有感觸的經驗,如果你真的打算做Android開發,那就買一個設備,這樣能大大提高開發效率,模擬器有時用起來真是麻煩,而且開發的設備不要很好的,只要設備解析度是主流的,感測器的支持最好全點就夠了,國產的手機里,華為的還不錯,或者到淘寶上去買個二手的,投資不大。真的買了投資,可能也會增加你學習Android的決心。
6. 程序框架
經過10多年的經歷,認識到程序的框架對開發產品真的是起到舉足輕重的作用。一個好的產品,如果有個好的程序框架,那真是事半功倍,可能開始所做的工作會比較多,很難看到令人激動的成果,但是相信我,絕對值得。一開始,我也是比較注重程序界面開發,很快就開發出界面來,而且著實比較激動,因為有東西出來了,但是後面的事情,真是令人發狂,想從頭再來,太遲了,離計劃的時間比較近了,時間不允許,只有硬著頭皮往上打補丁,硬著交付第一個版本,第二個版本或者後面的版本,遲早是要重來的。所以在後面帶領團隊開發的時候,在開發前,都是要討論程序框架,留出很大部分時間進行程序框架開發,及在開發中不斷的改進。
剛接觸Android,不知道用什麼程序框架,所以查了很多資料,一開始看到一個程序框架,感覺很不錯,所以一開始就使用了下面這個程序框架。
⑶ 如何深入學習android開發
Android開發,需要掌握以下知識:
android以java為基礎的,所以前提要學好Java基礎知識,比如基本類型、集合等。
android api,學習基本的Activity、service、intent等基本的知識,可以開發一些界面。
計算機網路基本知識。
Linux命令、C編程基礎、Android Java編程、Google Android Linux操作系統具體操作等
安卓系統開發的方法,簡單來說分成四層:
第一層,以Inventor為代表的繪圖工具,是Google推出的簡單開發工具,主要是針對初級玩家的玩意兒,操作起來確實容易,一個不懂程序開發的用戶就可以通過拖拽搞出一個能在安卓平台上跑的應用來,有點像做PPT,但任何事情都有兩面性,這種容易上手的繪圖工具,無法實現業務邏輯,運行效率也比較低。
第二層,以Rexsee為代表的無線中間件,這種方法就不是玩家用的了,必須是工程師來用,但對技術門檻的要求很低,會用HTML和JS的技術員就可以方便的使用,在技術要求大幅度降低的同時,基礎功能的封裝也是一大亮點,這些中間件已經把所有應用需要的基礎功能封裝好,程序員直接使用JS去調用就可以了,不再需要吭哧吭哧從零開始寫代碼,比如你想調用個GPS,本來要編幾千行的代碼,用中間件只需一行JS代碼即可搞定,難怪說做中間件的廠商都說:「用了我的東西,你的程序已經做了一大半啦!」此言不虛。
第三層,基於JAVA的JDK JDK(Java Development Kit),目前絕大部分應用都是用這種方式來開發,對程序員的要求比較高,首先要有比較好的JAVA底子,然後要對Android平台本身有很深的研究,門檻不算低。
第四層,基於C++的NDK( Native Development Kit),很多大型游戲是用這種方法開發的,相對於JDK,這種方法的門檻就更高了,目前使用的比較少,畢竟現在是智能手機的時代,硬體和網速都大幅提升,沒必要動不動就Touch底層。
⑷ 如何自學 Android 編程
如果你已經確定了學習Android的目標,那麼,應該提前做好哪些工作、先打下哪些基礎呢?
首先,你最好先熟悉一門編程語言,現在大學裡面和計算機相關的專業甚至理工類專業一般都會開設C語言課程,只是很多同學在大學期間並沒有好好學習,如果對它掌握的不太好或者很久沒用了,建議先從將其好好復習一下,將其基本的語法再好好回顧一下,最好能搭建一個環境來運行、調試它。如果沒有學過,不妨也提前學習一下,可以參考清華大學出版社出版的譚浩強老師的《C語言程序設計》,推薦這本書的原因,一是它已經經過了多年的考驗,應該說還是比較嚴謹的;其次就是大部分的高校所開設的C語言使用的教材都是用它作為教材,因此無論是購買還是借閱,都容易找到。另外,華清遠見網站上也有一些這方面的教學視頻,可以結合來看。
其次,如果你後續有志於游戲方面的開發,你最好具備一定的數據結構和演算法基礎知識。這一點是我在華清遠見的講台上,給學員們堅持強調的。雖然現代的高級編程語言中,其類庫中已經幫我們實現了大部分的數據結構,一般情況下,我們直接使用即可。但如果你能對其原理有所了解,當你需要在這些數據結構和演算法中間的時候,你可以能更加的清楚到底應該選擇那個數據結構或者演算法。另外,在圖形圖像處理上面,線性代數的作用也非常重要,如果能掌握一點這方面的基礎知識,無疑也會在後續的學習中如虎添翼。舉個例子,在Android中,有一個用於圖形變換的類Matrix,用起來稍有點難。其實它的理論基礎就是線性代數中的矩陣,如果你了解矩陣的基本演算法,這個類的使用可以說就易如反掌了。
第三,因為Android應用的開發語言用的是Java語言,並且在Android中也用到了Java核心類庫的大量的類,因此,在學習Android開發之前,可以先把Java基本語法和Java SE的基礎類庫好好學習一下,例如:Java中的IO、網路、線程、List、Map、Tree等數據結構。現在的大學里也有不少的院系開設了Java課程,教材和圖書也非常豐富,如果你所在的院系沒有開設,也可以從其他開設了這個專業的院系同學那裡借閱一下,並認真完成他們所布置的作業,爭取自己能動手編寫出一些簡單的Java應用。如果自己購買圖書,可以購買《Java核心技術,卷1(原書第8版)》這本圖書來學習。
第四,因為在Android中,會用到資料庫來存儲數據,因此,也可以提前對資料庫知識做相關的儲備。在Android所使用的SQLite中,其語法是遵循標準的SQL-92語法的(當然和企業級資料庫如Oracle等比較,功能上要弱很多),有條件的話,最好也能安裝一個資料庫來進行實際的操作。從易用性和資料完備性來說,建議大家使用Microsoft SQL Server或者MySQL就可以了。它們都是我們學習資料庫的好平台。另外,如果曾經學習過資料庫原理或者關系代數,那麼,在學習資料庫的過程中,也可以再好好地復習一下這些基礎知識,對我們理解資料庫大有裨益。
最後,我們結合華清遠見3G學院的「3G Android系統開發就業培訓班課程體系」來談談Android開發的學習方法。
Android是一個比較龐大的體系,從底層的Linux內核到上層的應用層,各部分的內容跨度也比較大。因此,一個好的學習方法對我們學習Android開發很重要。因此在華清遠見的課程體系設計中採取了循序漸進、將大目標分解成多個小目標,逐步達成對Android開發從應用層到底層系統及驅動開發全面掌握的目的。
例如,可以先從Android的應用開發開始,等到對應用掌握的比較熟悉了,開始慢慢閱讀一些Android 應用框架層的源代碼,然後再漸漸往下去了解Android的JNI、Libraries、Dalvik虛擬機、HAL層、硬體驅動、Linux內核、ARM技術體系架構等,雖然近期Intel宣稱要讓Intel晶元支持Android系統,但在可預見的時期內,在移動設備上,ARM的優勢應該還是不可撼動的。
具體來說,可以先通過在開發板上構建一個自己的Android系統,了解Android系統的整體架構和啟動過程,由此先對Android有一個初步的了解;接下來,學習Android的應用開發,在這里可以先學習Android的幾個主要組件、UI組件,先對Android應用開發有一個感性認識。在能夠熟練搭建用戶界面後,再逐漸來豐富應用的功能,例如:加上事件處理,使其能夠和用戶互動;加上數據存儲功能;加上聯網功能等等。在學完應用後,在此基礎上來學習游戲編程,先了解游戲設計的基本思路,然後開始從小的游戲、小的模塊開始做起,到最後能完成一個類似於現在熱門的《捕魚達人》這樣的游戲。在掌握了這些應用層級的內容後,可以去了解如何在Android應用中通過JNI去調用C/C++的介面,再往下學習Linux的內核和驅動開發如字元設備驅動、Flash設備驅動、網路設備驅動等等;再在此基礎上,去學習Android驅動開發、HAL(硬體抽象層)開發、ARM體系架構和指令等等內容,這樣,Android開發的整個體系就都貫穿起來了。
當然,因為時間有限,而底層部分的內容比較龐雜,因此,在真正去做這部分工作之前,我們只需要對其基本原理有所了解,做好相關知識的儲備,能夠根據老師的指導來完成相關的實驗。這樣在後續的工作中,就可以方便的往這方面發展,讓自己的事業更上一層樓。
⑸ 高級程序員如何學習Android開發
一、Java基礎,雖然現階段Google已經將Kotlin定為官方推薦語言,但是大多數國內項目都是用Java開發。即使以後的大趨勢是向Kotlin轉換,也需要一些時間,所以完全不用擔心Java會過時,你可以在Android學的差不多的時候再去學Kotlin,學習成本也會很低。
1. 如果非科班出身建議看視頻或者找人指導學習,科班出身可以直接看Java相關書籍,基礎好的可以一邊了解Android一邊學習Java。
2. 對於Java需要掌握到什麼程度:
- Java基本數據類型、基本語法、關鍵字、表達式和分支循環
- 面向對象,封裝、多態和繼承
- 介面的使用方法和場景
- Java常用的各類型集合的優缺點及使用場景
- JavaI/O
- Java的多線程
- Java的反射機制和泛型
- 一些常用的設計模式(如:單例、工廠等)
掌握了以上Java知識基本可以應對很多開發場景。
二、Android(軟硬體部分)
1. 開發平台:電腦用Windows的或者Mac都可以,處理器最好i5及以上,8G內存及以上,配上固態硬碟。(推薦Mac)
2. 開發工具:Eclipse已經很少見到,大多數開發人員都選擇AndroidStudio(IntelliJ IDEA也可以,跟AS類似),調試可以用AS自帶的模擬器或者第三方模擬器,有條件的請用真機。
3. 開發環境:配好Java環境,正常安裝AndroidStudio即可。
三、Android(基礎編程部分)
1. 了解項目工程各個目錄的作用
2. 學習各類基本布局的使用方法
3. 了解基本控制項的使用(如:TextView、ImageView等)
4. Activity和Fragment的生命周期,數據交互方法
5. 列表類控制項(如:RecylerView、ListView等)和Adapter的使用方法
6. Activity的啟動模式,四大基本組件的作用及使用場景
四、Android(進階編程部分)
1. 資料庫的簡單存儲(增刪改查)
2. Android自帶的SharePreferences存儲
3. 文件存儲的方法
4. Android的消息機制和非同步任務
5. 三種動畫的使用
6. 了解Http協議相關的知識
7. 觸摸事件的分發機制
8. 自定義View
⑹ 如何學習安卓開發
Android開發學習路線的七大階段
第一階段:Java面向對象編程;
第二階段:Java Web開發;
第三階段:android UI編程;
第四階段:android網路編程與數據存儲;
第五階段:android手機硬體管理;
第六階段:Android圖形編程技術;
第七階段:Android游戲開發。
⑺ Android源碼該如何學習
直接沒目的的學習Android源碼效果並不好,建議設計一系列的任務,帶著任務學習源碼。比如:
1. 編譯並且燒錄到開發板中去
2. 嘗試分析、統計和優化系統的啟動速度
3. 在源碼中添加新的APP,或者嘗試刪除系統出廠的APP
4. 在源碼層編寫一些應用,如自定義鎖屏、底層Camera應用或者Audio應用
5. 嘗試編寫一個HAL層驅動
6. 嘗試移植系統到其他開發板上去
⑻ 學習android怎麼調試android應用源代碼
開發調試環境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼
由於AS是基於IntelliJ IDEA開發的,所以本文也適用於IntelliJ IDEA
一、修改Android Studio(以下簡稱AS)的內存配置
因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m,可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個沒有classpath的JDK,這樣可以確保使用源碼里的庫文件
在代碼中加斷點,然後選擇'Run'->''或者直接點擊下圖所示的圖標
在彈出的選擇進程(Choose Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.
六、其它
代碼中很多地方提示CallrequiresAPILevelx.... 出現這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.
我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。
也可以考慮使用build.gradle來解決該問題。
⑼ 如何學習Android開發
主要是學習Linux命令、C編程基礎、Android Java編程、Google Android Linux操作系統具體操作等。安卓系統開發的方法,簡單來說分成四層:
第一層,以Inventor為代表的繪圖工具,是Google推出的簡單開發工具,主要是針對初級玩家的玩意兒,操作起來確實容易,一個不懂程序開發的用戶就可以通過拖拽搞出一個能在安卓平台上跑的應用來,有點像做PPT,但任何事情都有兩面性,這種容易上手的繪圖工具,無法實現業務邏輯,運行效率也比較低。
第二層,以Rexsee為代表的無線中間件,這種方法就不是玩家用的了,必須是工程師來用,但對技術門檻的要求很低,會用HTML和JS的技術員就可以方便的使用,在技術要求大幅度降低的同時,基礎功能的封裝也是一大亮點,這些中間件已經把所有應用需要的基礎功能封裝好,程序員直接使用JS去調用就可以了,不再需要吭哧吭哧從零開始寫代碼,比如你想調用個GPS,本來要編幾千行的代碼,用中間件只需一行JS代碼即可搞定,難怪說做中間件的廠商都說:「用了我的東西,你的程序已經做了一大半啦!」此言不虛。
第三層,基於JAVA的JDK JDK(Java Development Kit),目前絕大部分應用都是用這種方式來開發,對程序員的要求比較高,首先要有比較好的JAVA底子,然後要對Android平台本身有很深的研究,門檻不算低。
第四層,基於C++的NDK( Native Development Kit),很多大型游戲是用這種方法開發的,相對於JDK,這種方法的門檻就更高了,目前使用的比較少,畢竟現在是智能手機的時代,硬體和網速都大幅提升,沒必要動不動就Touch底層。