PC上開發一個安卓模擬器,至少需要搭配怎樣的團隊,做到夜神、海馬、逍遙的程度有多大?
從底層開發估計太貴了,如何能利用開源、商用版之類的快速開發;
補充一下,主要目的是為了適配輸入設備(特殊鍵盤、攝像頭等),多謝了!有北京的的高人,我請客,求賜教!
大多數商業性的Android模擬器也是基於 VirtualBox 的(且無視開源協議),據我所知你在題目中提到的某個就是。
如果是這種模擬器,你也需要無視開源協議的東西的話,大概一個水平中上游的高中生就能做。
(不過沒進入社會的高中生們還充滿對正義的信任,還相信開源協議在我大天朝有啥法律效應呢【笑】,大概不會去做這種違背良心的事。)
安卓模擬器方面我有些許研究,好多人也說了安卓模擬器核心還是用的vbox虛擬機,另一個核心就是Android x86這個項目,再進一步呢就是intel開發的arm指令轉x86指令的模塊。你說的鍵盤滑鼠外圍設備不用擔心,vbox都有的。可以這麼說如果沒有Intel的這個庫,模擬器不會這麼火熱。不是說沒有人能開發出這個指令轉換的模塊,只是願不願意搞,以及開發後的穩定性和效率,雖然intel的這個庫效率方面肯定有損耗,這都不是問題,pc機處理器和手機處理器沒有可比性。下面再說說vbox的架構,vbox是分層設計,其他你可以不管,你只需要熟悉vbox的sdk,vbox是有sdk的!sdk介面是com組件(只說win系統),你必須能熟練使用com組件,並且對sdk的介面非常熟悉然後才能靈活運用開發。基於vbox開發說簡單一點就是給vbox重新開發個前端界面而已。他自帶的qt開發的界面也是用的sdk介面,裡面還有用sdl開發的前端界面。
如果你有追求不想用vbox,畢竟是虛擬機里運行和本機運行還是有差別的。你如果想在win上直接運行?!可以嗎?也是可以的!你用虛擬機跑安卓系統其實是想運行某個apk程序,如果apk可以在win上運行不用vbox,想想是不是有點小激動呢?好吧,先說一下你需要學習的東西,精通win系統底層開發,內核模塊要會開發吧,就是所謂的驅動開發,深入解析Windows操作系統這本書就不說了。熟悉Linux系統開發,各種系統api瞭然於胸。精通Android系統,特別是native層。好了,說這麼多下面要乾的事情就是安卓系統的裁剪,把Linux內核砍掉,把其他部分移植到win系統,這個說的簡單,做起來就難多了。這裡又有兩種方案選擇。第一,用mingw編譯器編譯安卓native的模塊,來移植大部分模塊,剩下的可是難啃的骨頭!這個編譯器是gcc的win版本,可以把Linux下的程序在win下編譯運行,他處理了一部分API轉換,Linux下某些api用win下的api替代,有不少api他是處理不了的,需要自己來處理,主要就是模擬這個api,但是裡面坑有不少!用mingw這個有兩個好處,編譯後的文件是pe文件不是elf,也就是模塊是dll不是so。第二,處理兩個系統之間的api差異,其實就是用win api來替代linux的api,但是它只能處理一部分。這個搞完後,需要搞定安卓的專有驅動,好像3個左右,其中binder這個最重要!你要在win這邊搞定,可以在應用層,也可以在內核。這個驅動主要是進程間通信,數據0拷貝,物理內存直接映射到進程的虛擬地址。安卓的Java層其實最簡單,把java虛擬機移植出來就行了。下一步你要知道安卓的包管理器,apk安裝後有哪些動作,你要運行apk,相當於你這個apk已經安裝,不過你也可以不管這些但是要砍掉一些東西。下面你要把apk的啟動流程搞清楚,然後就可以運行這個apk了。apk運行都是zygote進程fork出來的,這個進程名字還會變,Java虛擬機就泡在這裡面。
這麼移植出來對apk來說是透明的,它不知道運行在哪裡,只要api能正常工作就行。上面只是粗淺的說了一下,裡面坑非常多,這個移植需要深厚的功底,win,linux,android,這三個系統最好精通,至少也得非常熟悉,這個方案有個弊端,如果apk里有ndk開發的so模塊,且只有arm架構的,那麼這個apk跑不起來,因為intel的指令轉換庫不開源,只有elf格式的so,而且還不少。當初Intel搞這個的初衷是想進攻移動市場,市場也有過幾款x86平台的手機,聯想就有一款。要想手機廠商用你的處理器你要保整現有的apk可以用啊,要不誰買啊,所以Intel搞了這個東西給他硬體來鋪路。這個方案國內已經有公司實現。如果你想完美?!可以的!不能用mingw編譯器了,你要把android x86系統里的so直接拿出來用,其中libc的源代碼要好好修改一下,把Linux系統調用全部修改調用到你的代理模塊,代理模塊實現所有的api,libc里用到的Linuxapi貌似有200個左右,自己實現這麼多不現實,下面就另一個東西上場,cygwin,紅帽子開發維護,開源,實現了很多api,代理模塊直接中轉過去,不過cygwin要初始化一些東西,自己去看。還有一個問題就是文件格式的問題,你要寫個elf載入器來運行。這樣是可以利用intel這個庫運行帶有arm架構的so模塊apk程序。上面只是大概說了一下,有不少細節沒有說,一下也說不完。如果感興趣自己順著這個可以慢慢研究。漏了一個事情,Google的chrome瀏覽器運行apk就是這個方案大同小異,指令轉換是自己開發的,但不是轉換到x86他轉換成瀏覽器沙箱虛擬機位元組碼,也是指令。後面也可能有變動,好長時間沒有看了,這個插件叫arc,app runtime for chrome。據我所知, 夜神團隊是X86的模板製作的。
而雷電是 完全在夜神的模板之上進行的微型調整,談不上版權問題 更談不上技術支持。
主要是你開發一個安卓模擬器之後, 你要有一個 強大的運營團隊幫你 做到拉新 推廣 呢。
這倆點 才是重中之重, 除此之外 關於維護的 技術團隊 你要自己甄別 挑選的,成熟的團隊不好找 稚嫩的新人 又不好培養。
如果沒有自己 一個成熟的技術團隊,建議樓主 還是放棄這個想法的好。。。
畢竟理想很豐滿 現實確實異常的骨感
前兩年研究過,最早的起源是andriod x86項目,可以用virtualbox跑Android,後來有人在這個基礎上合併了google的一部分模擬器代碼來支持OpenGL,發布了開源的androVM項目,後來項目開發者意識到了這個項目的商業價值,於是刪除了開源代碼,變成了genemotion這個商業模擬器產品。國內的一些人在androVM的基礎上繼續修改,推出了一大波諸如海馬,逍遙等等的模擬器。目前最大的障礙是把arm轉換成x86的庫是用的Intel的huodini,這個庫是不開源的,而且Intel也不再維護了,所以目前模擬器支持的Android版本始終停留在4.x,後續要繼續發展技術上有較大的障礙。
海馬已經不做模擬器了,模擬器團隊的人都走了
我想團隊至少也得有幾個軟體開發的工程師,幾個客服人員,幾個營銷人員,幾個銷售人員,幾個後勤包括出納,財會,還得租一間辦公室。所以還是安心的玩夜神,海馬,逍遙吧!!!
我也想搞個android模擬器,不過我是萌新
你懂的,這種東西靠的不是技術而是宣傳啊
推薦閱讀:
※零基礎如何學習安卓應用開發?
※BAT之類的大公司的android程序員跟普通公司的android程序員的技術差距在哪?
※安卓的進程管理軟體是否科學?
※如何解決安卓系統吃內存、侵佔ram的問題?
※Android 開發時,如何實現和伺服器的數據同步 ?