㈠ android 游戲開發需要如何學習
想要學好Android游戲開發需要經歷以下三個層次的學習:
第一個層次和傳統的嵌入式linux最接近,主要涉及的是CPU、GPU以及外設的驅動以及使能方面。多需要熟悉Linux內核,Android框架定義中驅動的介面規范等等,這部分開源社區的力量最大。這個層次技術主要需求方是是各種CPU和Android設備解決方案供應商。
第二個層次主要是涉及Android框架中間件部分,如多媒體/3D框架,java虛擬機等等,這部分Google控制的是最嚴格的,因為他要控制 Android各種feature以及捆綁自己的移動互聯網應用,必須規范中間件。這部分所涉及的軟體技術也最多,從各種C/C++庫,Java虛擬機性能,用戶體驗抽象到資料庫設計等等很大的內涵。開發的一般也是選擇一個方向發力。另外深度定製Android ROM重點也是這個層次。
第三個層次就是App開發層次,這個層次主要就是利用Android SDK開發了。很多C/C++出身的覺得是用Java開發,其實Java就是啥都是指針的C++,外帶try/catch以及垃圾收集,上手其實是很快的。Android程序最重要一點是理解生命周期概念,將一個Activity和Linux進程關系搞清楚,啥時候這個進程啟動,啥時候睡眠,啥時候退出,後台的事件循環如何運行的,最後時刻要提醒自己虛擬機在運行,垃圾收集在運行。Google Code上有還多參考代碼,在看中學,體會很快的。
㈡ 為什麼當年android選擇用java做開發語言
首先我們需要選用一個語言來開發本地App。
那麼,我們第一步幹啥了。
在現有的語言中挑選語言。
那麼首先考慮的條件是不火的語言和沒前途的語言是不在選擇范圍的。
---因為沒人用,那麼庫就會少。因為庫少就不會好用。因為不好用。所以用的人更少。生態圈的核心思想。
--那這個世界是不是只有C++/Java了。肯定不是。因為有些語言是有前途的。最大的特點是。簡化了程序員的負擔。或者效率更高。未來肯定是主流。
那麼我們常用的語言和有前景的語言是哪些
C/C++/Java/C#/python/Ruby/Go/JavaScript+Html
好。這些是我們常用的語言。我們看待的是怎麼把這些語言一步步的踢掉。然後只剩下Java的。
首先踢掉的是C。至今大型的超過10萬行代碼的圖形化界面程序沒有幾個是用C的。因為復雜的錯誤處理和沒有糾錯機制。使得程序非常容易崩潰。同時。因為C沒有面向對象。那麼工程化開發顯得非常麻煩。
相信沒有人現在主動說。用C開發App這種多界面程序吧。
繼續踢掉的是C#。我幹嘛要用一個一出生就為了對付Java的。還是微軟的私貨的語言。對。Android是開源界的。而C#註定不是適合開源界的語言。
那我們繼續踢語言:
我們該要一門重語言還是輕語言?
Java/C++/C#/Go/C是重語言。
Python/Ruby/JavaScript+Html/是輕語言。
對。我心目中劃分語言的標准基本上是屬於這樣的,只要在代碼中體現我們需要講效率的。那就是重語言。
重語言首先講究的是運行效率。然後講究工程化。
輕語言講究開發效率,講究敏捷性開發。
回到我們選語言的原則。
我們想開發一款本地App。還在性能不高的手機上。
那麼除了C之外的開發語言中。運行效率最高的是C++,然後是Java。
那麼輕型語言就要被一個個踢掉了。
Ruby在網頁端有作為。但是庫太少。圖形庫更少,開發者都是網頁端的人。被踢。
JavaScript+Html - ----> 這是未來大一統的趨勢。但是我們現在是找一門開發本地App的語言。
外加真心html+JavaScript有著先天的劣勢。(效率+Offline)
Python有著完善的庫。有著極高的人氣社區。在手機上開發也有過嘗試。(Nokia就干過這事。Ubuntu Phone的UML也是一種類python的語言。)Google也是python的大用戶。效率是問題。但是不是絕對的。先對Python實現保留意見。
那麼我們看這一輪入圍的四門語言
Java/C++/Python/Go
再說Go。Go語言還不成熟。庫也不多。開發者少。但是作為Google主打的語言。很有可能。Google會提供基於Go的Android sdk。至少現在Android的主打語言不會是Go。
剩下三門
C++/Python/Java
C++重運行效率。但是跨平台性較弱。開發難度較高。庫多,用的人多。
Python,重開發效率。跨平台性高。開發難度低,庫多,用的人多。
Java。重開發效率。不及python,重運行效率,不及C++。開發難度低。庫多。用的人多。
那再回到需求:
Google是想要一門開發本地App的語言。Google想屏蔽掉底層硬體的差異。實現對於開發者來說是一個統一的平台。
同時。對於手機這個現階段的平台來說。耗電,以及性能。是無法迴避的問題。
那麼這門語言的跨平台性要求很高。同時效率又很高。
說Python:效率實在無法達到其普遍的手機要求。尤其是對於圖像處理這種高計算操作。且。社區無法與C++/Java相比。意味著庫沒有Java和C++多,開發者不是跟Java和C++一個等級的。
說C++:用過JNI的人都知道本地的C/C++庫,至少要編譯多次。不同的框架就代表者不同的編譯環境。而且直接用C++編譯運行的話。C++並不能很好的屏蔽掉硬體差異。所以對於開發來說調試來說,都是一個比較艱巨的任務。
C++也不是一個非常好的工程化開發語言。
那有沒有破解法。Qt。可以用框架屏蔽掉大部分的細節操作。Qt5.0支持Android。
為什麼沒用。估摸著是跟Qt不是Google家的產品加不開源的問題吧。
說Java:虛擬機是核心。因為虛擬機真正能屏蔽掉開發的很多差異。而且通過虛擬機。開發者只要在打包的時候翻譯成運行碼而不需要翻譯成機器碼。通過虛擬機完成很多差異的解決。而效率並不是丟的非常嚴重。
且Java比C++更受開源界和工業界的共同歡迎。即使Java也有版權問題。。。
我們屏蔽掉最基礎的硬體差異。通過Linux,在屏蔽掉手機的一些基本功能差異。然後提供純粹的利於開發者開發和測試的方法。只有通過虛擬機了。而這個虛擬機是需要講性能的。
Google搞了一個Davlik虛擬機。對。這就是Android的核心。就是因為性能要求高。不得不重新開發虛擬機。Davlik就是一個非常講效率的虛擬機。而其他的常用庫都有的,現成的。根本就不需要自己去寫的。只要打包就好。
那麼還有些必須考效率的庫和應用。怎麼辦。
用JNI技術調用C++
對就這么坑爹。
為什麼Object-C這門語言無視我說的大部分要求了。因為Apple有能力創造一門更好的語言。Google對於Android,只是在開源社區挑一門語言。
且。ObjectC生在Apple,死在Apple。兼容性。人家才不需要考慮。所以人家敢用Object-C,而Android為了實現真正的跨平台。只能選Java。
㈢ 除了github android bus 還有哪些android開源平台
目名稱
項目簡介
1. react-native 這個是 Facebook 在 React.js Conf 2015 大會上推出的基於 JavaScript 的開源框架 React Native, 該框架結合了 Web 應用和 Native 應用的優勢, 可以使用 JavaScript 來開發 iOS 和 Android 原生應用
2.Android-Universal-Image-Loader ImageLoader 是最早開源的 Android 圖片緩存庫, 強大的緩存機制, 早期被廣泛 Android 應用使用, 至今仍然有很多 Android 開發者在使用
3. RxJava RxJava 是一個在 Java VM 上使用可觀測的序列來組成非同步的、基於事件的程序的庫, 簡單來說它就是一個實現非同步操作的庫, RxJava 的優點在於一個詞 "簡潔", 使用它就算你程序邏輯有多麼復雜, 它依然能夠保持簡潔易懂
㈣ 為什麼Android是開放系統而不是開源系統
Andy Rubin創立了兩個手機操作系統公司:Danger和Android。Danger 5億美元賣給微軟,今年成為了Kin,Android4千萬美元賣給Google。 Android是Google於2007年11月05日宣布的基於Linux平台的開源手機操作系統的名稱,該平台由操作系統、中間件、用戶界面和應用軟體組成。它採用軟體堆層(Software Stack,又名軟體疊層)的架構,主要分為三部分。底層以Linux內核工作為基礎,由C語言開發,只提供基本功能;中間層包括函數庫Library和虛擬機Virtual Machine,由C++開發。最上層是各種應用軟體,包括通話程序,簡訊程序等,應用軟體則由各公司自行開發,以Java作為編寫程序的一部分。不存在任何以往阻礙移動產業創新的專有權障礙,號稱是首個為移動終端打造的真正開放和完整的移動軟體。 Google通過與軟、硬體開發商、設備製造商、電信運營商等其他有 關各方結成深層次的合作夥伴關系,希望藉助建立標准化、開放式的行動電話軟體平台,在移動產業內形成一個開放式的生態系統。 Android 作為Google企業戰略的重要組成部分,將進一步推進「隨時隨地為每個人提供信息」這一企業目標的實現。全球為數眾多的行動電話用戶正在使用各種基於 Android 的電話。谷歌的目標是讓(移動通訊)不依賴於設備甚至平台。出於這個目的,Android 將補充,而不會替代谷歌長期以來奉行的移動發展戰略:通過與全球各地的手機製造商和移動運營商結成合作夥伴,開發既有用又有吸引力的移動服務,並推廣這些產品。 MeeGo是諾基亞和英特爾宣布推出一個免費手機操作系統,中文昵稱米狗,該操作系統可在智能手機、筆記本電腦和電視等多種電子設備上運行,並有助於這些設備實現無縫集成。這種基於Linux的平台被稱為MeeGo,融合了諾基亞的Maemo和英特爾的Moblin平台。諾基亞的執行副總裁Kai Oistamo表示,MeeGo適用於多種平台的能力使其顯得與眾不同,因此它不僅僅是一種新的手機操作系統。諾基亞公司近日宣布,除了最近即將上市的N8機型之外,所有其後上市的N系列旗艦手機將不再使用塞班操作系統,將轉為使用基於Linux的MeeGo操作系統。 .該MeeGo項目很高興地宣布:「第一天」的MeeGo手機用戶體驗的項目。 你們中許多人會記得這個「從3月1日,當我們第一次提出的MeeGo核心操作系統的源代碼,並開始向MeeGo 1.0版本的開發」的概念。 如今,手機的基準源代碼是提供給開發社區,此代碼是積極發展MeeGo 1.1,這是在10月推出。該小組已准備MeeGo Gitorious所有的來源和基礎設施進行每周一次的1.1版本的MeeGo發展。 該MeeGo用戶界面小組還忙於創造手機參考用戶經驗,並編寫了MeeGo用戶界面設計原則和互動准則 。 這一里程碑標志著在Moblin和Maemo操作為主要架構和技術的選擇決定合並完成已確定。 今天,我們也開放MeeGo基礎設施建設 。
㈤ linux 和 android都是開源的那麼騰訊qq軟體開源了嗎 從哪裡可以找到qq的源碼啊
QQ是不開源的,原來是對外開放協議和介面的,後來也不開放了。可以找和QQ類似的即時通訊軟體的或者原來QQ的開源版本(都是開源社區的人自己開發的,現在大都不能用了)的源代碼看看,大體思路都差不多的。
㈥ 介紹幾個好的安卓開發論壇
學習android就到IT學習聯盟。我就是在他們的網站上學習的,現在已經在做android的工作了。
……………………………………………………………………
如果對android感興趣,看看一個中專生怎麼自學android到找到工作。
我是一名中專生,在學校里讀的是計算機專業,但是由於學校不好大部分同學都不愛學習來這里幾乎大部分都是在混日子的,雖然我中考的成績不差,但是因為家裡窮考慮到以後沒錢讀大學我毅然來到這里,雖然是中專,但是我相信只有努力以後也會出頭,但是我被這里的學習氣氛給感染了,慢慢的變得不喜歡學習,後來還經常逃課,三年時間里就渾渾噩噩的過了,到了畢業,由於我學歷低和打了三年的醬油什麼也沒學到,後來只能到電腦城裡工作一個月辛辛苦苦的工作,只能賺到幾百元,每次想起農村裡的爸媽辛辛苦苦的賺錢給我讀書最後我白白浪費了他們的血汗錢我感到很痛苦很內疚,經常晚上坐在天台上,眼淚不自然地流下了,難道自己一輩子都這樣了嗎,一次偶然的機會我在網上看到了一段新聞說安卓現在特別火有一年工作已經的工資可以達到8000元左右就算沒工作經驗起薪也有5000元,5000元對我來說簡直就是個天文數字,於是我決定學習安卓,後來我到書店找了一些安卓的書但是由於基礎太差,很多都看不明白,網上看到可以報培訓班都是幾乎每所都要上萬大洋,對於我一個一個月只能賺幾百元的中專生來說簡直是個天文數字,後來在IT學習聯盟這個網站看到了一套安卓視頻叫<<安卓就業班>>(喜歡《安卓就業班》的可以復制 sina.lt/brxC 粘貼瀏覽器地址欄按回車鍵即打開)。價格還挺合理的。覺得內容挺不錯的於是我決定買下來,我想既然我看書看不明白,看視頻應該容易看明白吧,自從我把視頻買下來後就就天天看,因為自己基礎太差了,所以每天至少學習5個小時以上,那段日子真的很辛苦但又很充實,覺得我的人生最有意義的時間段。我拿到光碟後首先跟著他要求的學習順序學習(因為他已經偏好了學習的順序)從第一塊開始到第十七塊,首先學的是JAVA,是一個培訓視頻,總共十幾G,但老師幽默風趣而又輕松的課堂教課,使我發現原來學習JAVA並不是一件很難的事情,但我的基礎太差了有些地方還是不容易看懂,於是有些地方重復看了兩,三篇,甚至四,五篇,大概這樣過了一個月我就把JAVA給學會了,這個月因為要上班所以經常學到晚上1,2點早上6點多就起床,星期六,星期天的話就從早上看到晚上,所以有段時間眼睛經常通紅通紅的,但是我知道天道酬勤這個成語,你努力付出就一定得到回報的,於是我堅持了下來,到了第二階段,學習android了,他有基礎篇和深入篇,基礎篇比較容易,深入篇的話還是有點難度的,但是我覺得JAVA學好了,android並不難學,學起來還覺得挺容易的,心裡不由自主的笑了,覺得是不是我的付出有了回報,到了第三階段也是最難的了,是基於linux的嵌入式,因為android的是由linux底層開發的再加上界面是JAVA,所以學好linux的嵌入式也比較重要(如果你以後想成為android內核移植這個方向走的非常重要,工資可是很高的哦,如果你只想做界面的話了解一下也不錯),他首先從C語言開始教,然後到linux嵌入式,我覺得這部分太難理解了,很多都是硬著頭皮看完的,因為有不地方看不明白,斷斷續續的來到了第四階段項目階段這里總共有22個大項目,一開的時候還是跟不上老師的腳步但是後來就慢慢的跟上了,我覺得項目很重要,他把之前的所有的東西都復習了一遍而且讓你熟悉了真正企業項目實線,使你以後工作的時候更容易上手,學習了大概4個多月。終於學完了。就開始找工作。最後找到一份在小公司工作,待遇也有4500元,感覺還行。但是這4500元對我只有中專文聘來說已經很多很多了,我很滿足了,我覺得只有肯努力,也會有成功的一天的。
………………………………………………
㈦ android (安卓)是完全開源的嗎
android (安卓)是完全開源的。
Android是一種基於Linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由Google(谷歌)公司和開放手機聯盟領導及開發。
尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。Android操作系統最初由Andy Rubin開發,主要支持手機。2005年8月由Google收購注資。
2007年11月,Google與84家硬體製造商、軟體開發商及電信營運商組建開放手機聯盟共同研發改良Android系統。隨後Google以Apache開源許可證的授權方式,發布了Android的源代碼。
(7)android開源社區擴展閱讀:
一、發展歷程
2003年10月,Andy Rubin等人創建Android公司,並組建Android團隊。
2005年8月17日,Google低調收購了成立僅22個月的高科技企業Android及其團隊。安迪魯賓成為Google公司工程部副總裁,繼續負責Android項目。
2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統,並且在這天谷歌宣布建立一個全球性的聯盟組織,該組織由34家手機製造商、軟體開發商、電信運營商以及晶元製造商共同組成。
並與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統,這一聯盟將支持谷歌發布的手機操作系統以及應用軟體,Google以Apache免費開源許可證的授權方式,發布了Android的源代碼。
2008年,在GoogleI/O大會上,谷歌提出了AndroidHAL架構圖,在同年8月18號,Android獲得了美國聯邦通信委員會(FCC)的批准,在2008年9月,谷歌正式發布了Android 1.0系統,這也是Android系統最早的版本。
二、系統內核
Android 是運行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。
Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 Userspace,使得Linux driver 與 Linux kernel徹底分開。
Bionic/Libc/Kernel/ 並非標準的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
㈧ android開發用的是什麼語言啊
android開發用的是Java語言。
Java也擁有自己強大的開源社區,當編寫時遇到問題就能通過這些社區找到答案。android開發的教程,書籍和課程,包括免費和付費的,這些教程可以讓先用java語言開始入門Android開發之路。
Android代碼,示例demo 和App都是用Java編寫的,使用Java的開發者更容易轉為Android開發者,這在一開始Android生態系統未能建立時,尤為重要。
(8)android開源社區擴展閱讀
Java語言很成熟
Java語言可以說是一個相當成熟的計算機編程語種,性能很好,用的人也超級多,除了基礎類庫完善,各種高級的第三方組件更是不計其數,更重要的是Java虛擬機規范是開放的,谷歌只要按照甲骨文的虛擬機規范很容易寫出一套虛擬機。
Java語言安全
由於Java語言經常被使用在網路環境中,為了增加其程序的安全性,Java語言提了一個防止惡意代碼攻擊的安全機制,另外Java的強類型機制、垃圾回收器、異常處理和安全檢查機制,也使得用Java語言編寫的程序具有很好的健壯性。