㈠ 安卓開發需要學習什麼
學習分三個階段:
1,Android基礎階段:平台架構特性(JAVA/C) Market/應用程序組件 環境搭建與部署/打包與發布 AVD/DDMS/AAPT 調試與測試 相關資源訪問/資源製作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深層實現
2,Android進階初級:組件Widget/ 菜單Menu/ 布局Layout 詳解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL資料庫原理,。
SQLite /SharedPreferences/File詳解 多媒體Audio/Video/Camera 詳解
3,Android進階高級:藍牙/WIFI SMS/MMS 應用實現 深層次解析GPS原理。
實現LocationManager/LocationProvider 進行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術細節 2D圖形庫(Graphics/View)詳解 SDCARD/感測器/手勢 應用實現
(1)android開發技術有哪些擴展閱讀:
知識體系
1、Unix/Linux平台技術:基本命令,Linux下的開發環境
2、企業級資料庫技術:SQL語言、SQL語句調優、Oracle資料庫技術
3、Java 語言核心技術:Java語言基礎、Java面向對象編程、JDK核心API、Java集合框架、Java網路編 程、JavaI/O編程、Java多線程編程、Java異常機制、Java安全、JDBC、XML
4、軟體工程和設計模式:軟體工程概述、配置管理及SVN、UML、基本設計模式
5、Android應用開發基礎:Android開發平台、Eclipse+ADT開發環境、AVD及感測模擬器調試、Android核心組件、Android常用組件、Android高級組件、文件及網路訪問、SQLite資料庫編程、後台服務編程
6、互聯網核心技術: HTML、CSS、JavaScript、JQuery、Ajax應用
7、Android高級應用開發:音頻視頻攝像頭、互聯網應用、GPS和位置服務、Google Map、2D3D繪制、感測器開發、游戲開發、電話及SMS服務、網路BluetoothWi-Fi等。
8、Android系統級開發:移植、驅動、NDK(C方向)。
9、JavaEE核心技術:Servlet核心技術、JSP核心技術、Struts、Spring、Hibernate框架。
㈡ 移動開發技術有哪些
現在有3種開發技術:web,native,hybrid。移動web 開發:使用的語言是 HTML,CSS,JS,簡單易學,能夠開發移動應用網站,具備跨平台性,但是體驗效果不好,而且不能提交到應用市場;
native 原生開發:主流移動平台是iOS 和 Android,所使用的語言是Object-c , swift,java,能夠開發移動 APP,不過學習成本高,還需要開發多套平台應用,比較麻煩。
hybrid 混合開 發:這種模式是將web 和原生技術結合起來,通過簡單的web 語言編寫前端,原生技術提供各項功能,可以跨平台的,現在有很多支持這種開發模式的平台,國內口碑比較好的就是App Can了,
會web 語言就可以開發移動 APP,它幫你封裝好了原生插件,直接調介面就行,又簡單又快。
㈢ 安卓開發需要學什麼
安卓開發需要學:
一、應用程序
Android以Java為編程語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類負責創建視窗,一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。
二、中介軟體
操作系統與應用程序的溝通橋梁,並用分為兩層:函數層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。
Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。
三、硬體抽像層
Android 的 HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL
的目的是為了把 Android framework 與 Linux kernel 隔開。
讓 Android 不至過度依賴 Linux
kernel,以達成 kernel independent 的概念,也讓 Android framework
的開發能在不考量驅動程序實現的前提下進行發展。
四、編程語言
Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持。
包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。
五、安全控制
目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Managemeat),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型等。
下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
參考資料來源:網路—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開發主要是有三個層次的技術:
1、第一個層次和傳統的嵌入式Linux最接近,主要涉及的是CPU、GPU以及外設的驅動以及使能方面。需要熟悉Linux內核,Android框架定義中驅動的介面規范等等,這部分開源社區的力量最大。
2、第二個層次主要是涉及Android框架中間件部分,如多媒體/3D框架,Java虛擬機等等,這部分Google控制的是最嚴格的,因為他要控制Android各種feature以及捆綁自己的移動互聯網應用,必須規范中間件。這部分所涉及的軟體技術也最多,從各種C/C++庫,Java虛擬機性 能,用戶體驗抽象到資料庫設計等等很大的內涵。
3、第三個層次就是App開發層次,這個層次主要就是利用Android SDK開發了。很多C/C++出身的覺得是用Java開發,其實Java就是啥都是指針的C++,外帶try/catch以及垃圾收集,上手其實是很快的。
4、如果你是個新手的話建議你多掌握些技術知識,不管是自學還是去其他地方學習,教學聯盟也許會幫助到你,暫且說到這里。
㈥ android應用的軟體開發技術有哪些
ADT,Eclipise,JDK、JRE 主要就是這幾個……前面兩個是開發,後面兩個是運行和測試 如果需要開發就需要學JAVA,你去看看安卓應用源代碼基本能發現規律並做出來…… 最後需要無限的耐心,另外安卓可以開發C#,如果你有足夠的能力就開發C#關於這方面直接去谷歌去看吧,全英文介紹和軟體(反正我沒試過)
㈦ 做安卓軟體開發需要學習什麼技術
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無線開發的幾種常用技術(阿里巴巴資深
完整的開發一個android移動App需要經過從分解需求、架構設計到開發調試、測試、上線發布等多個階段,在發布後還會有產品功能上的迭代演進,此外還會面對性能、安全、無線網路質量等多方面的問題。
移動App的產品形態各不相同,有的是內容類,有的是工具類,有的是社交類,所以它們的業務邏輯所偏重的核心技術有些差別,但它們都會用到一些常用的技術方案。今天我們就先來簡單介紹一下這些常用技術,以後會專門分專題來詳細介紹這些技術的原理和使用場景。
1. Multidex
在Dalvik虛擬機所使用的dex文件格式中,用原生類型short來索引文件中的方法數,也就是最多隻能有4個位元組65536個method,在打包apk的過程中會把工程所需要的全部class文件都合並壓縮到一個dex文件中,也就是說自己開發的代碼加上外部引用的庫的方法總數不能超過65535。
隨著業務邏輯的不斷增長,很容易就會超過這個限制,在編譯期間就會遇到這樣一個錯誤:
還好google官方給出了一個解決方案Multidex,它會把dex文件拆成兩個或多個,第二個dex文件叫classes2.dex,在Application實例化後會從apk中解壓出classes2.dex並將其拷貝到應用的目錄下,通過反射將其注入到當前的ClassLoader中。但是這個方案非但不能解決一切問題也不能直接拿來用,而要加入自己的一些改造,來解決NoClassDefFoundError、INSTALL_FAILED_DEXOPT等問題,以保證自己的dex被順利的載入流暢的執行。
2. Plugin
Multidex雖然可以解決方法數的限制,但隨著業務邏輯越來越多,apk的大小也變得越來越多,而且有一些功能並非全部用戶都想用的,所以會把一些功能模塊獨立出來做成插件,讓用戶可以按需下載更新,這樣既減小了包大小,又改善了用戶體驗。
插件類似於windows的dll文件,放在某個特定目錄,應用程序主框架會用LoadLibrary載入各dll文件,按插件介面去訪問插件。Android的插件技術也是這樣,利用一個進程可以運行多個apk的機制,用ClassLoader將宿主apk之外的類載入進來,插件的context可以通過createPackageContext方法創建。因為插件中的activity,service等組件如果沒有在AndroidManifest.xml中聲明將不能運行,所以需要預先在AndroidManifest.xml中聲明一個代理類(ProxyActivity),將這個ProxyActivity傳給插件,讓插件的activity也有訪問資源的能力。
3. Hot Patch
有時一些嚴重的crash bug或漏洞需要緊急修復,但有些用戶不會或不願意立即升級,而且頻繁升級,沒有特別的功能更新只是修復bug的升級,對活躍用戶是一種傷害。熱補丁就可以解決這樣的窘境,它是一種可以線上修復的技術方案,有動態改變方法的能力,一般大型的移動應用都會使用熱補丁來處理緊急事件。
Hot Patch可以通過hook來修改java的method,注入自己的代碼,實現非侵入式的runtime修改,或者採用正向編程,通過工具生成patch文件,通過jni bridge指向補丁文件中的方法。還有就是利用ClassLoader,在dex中查找class時,如果找到類則返回,找不到就從下一個dex文件中繼續查找,由此可以想到,在把問題修復後,可以單獨生成一個dex,通過反射插入到dexElements數組的最前面,這樣就能讓dalvik載入補丁里的類了。
4. Push通道
Push是移動App常用的一種無線技術,基礎是基於TCP的心跳機制,和客戶端維持一個長連接。用處是向客戶端推送消息,或者代替客戶端定時去從伺服器pull的策略,改為客戶端接收到push消息後再去pull。
如果每個應用都自己實現push通道的話,cpu就會不定時地經常被喚醒,耗電量達到難以容忍的程度,而且自己搭建push平台的成本也很大,實時性和效率也存在問題,一般都直接使用一些服務商提供的push方案,這些push平台一般都經過了優化設計,在跨平台和網路穿透性、長連接心跳包、多客戶端App鏈路復用、服務和連接保活等技術上做了優化。比如Agoo最初是淘寶無線事業部開發的push服務,在逐漸完善和支撐淘系其他app後,通過服務端容量、通訊協議優化、業務和開放能力的拓展改進後,與友盟等合作,開始向第三方提供推送服務。
5. 應用加固
一款熱門的移動app或游戲發布後會受到很多的關注,經常會遇到二次打包的盜版行為,破解者要麼修改游戲的資源文件、道具、分值甚至直接把訪問的站點指向自己架設的伺服器,損害了開發者的利益;要麼偷偷植入自己的惡意代碼,表面上看起來跟正版的app完全一樣,在後台卻盜取用戶隱私,植入木馬;要麼通過反向工程學習原app的核心技術,打破技術上的競爭壁壘。
為了防止被破解只通過混淆是遠遠不夠的,即使是在native層混淆也還是會被人熟練的反編譯,所以需要一套對apk的保護方案來反調試、防逆向和防篡改。一般的加固方法都是對原apk先進行加密,然後和殼合並生成新的apk。殼是用來解密apk的dex文件。當應用啟動時,殼先解密原apk,准備好自己定義的ClassLoader,然後獲取源程序中的Application名稱,通過反射找到正確的Application對象,運行它的onCreate方法,這樣原apk才能被真正運行。其他一些反調試的方法有針對反編譯工具,在源程序中加入一些無效的指令或無效的指針,引發反編譯工具的崩潰,還有就是加花指令,利用一些跳轉,堆棧操作等指令,讓破解者無法清楚地理解反匯編後的內容。
6. 其他
除了上述幾點外,在服務端還會涉及灰度策略、鏈路流量優化、動態更新配置、防DNS劫持等技術,在客戶端會涉及用戶埋點上報、在線監控、進程保活、H5和native混合開發、注入框架等。