為什么谷歌公司一直沒能讓Android開發(fā)步入正軌?
譯文內(nèi)容簡介
如今已經(jīng)是2015年,移動領(lǐng)域成了新的技術(shù)前沿,而我們似乎已經(jīng)從混沌不堪的舊日噩夢當(dāng)中逐漸解脫了出來——是的,主流網(wǎng)站原先在向主流移動設(shè)備交付內(nèi)容時的糟糕表現(xiàn)如今仍歷歷在目,而每一位開發(fā)人員應(yīng)該也還記得當(dāng)時那令人絕望的混亂情景。如果Web開發(fā)代表著上世紀(jì)九十年代的一切臟亂差元素,那么如今的移動開發(fā)則正是新紀(jì)元下丑陋效果的新載體。
正如已經(jīng)為Web開發(fā)者們?nèi)f夫所指的IE一樣,Android如今就扮演著移動開發(fā)者眼中的新IE角色。谷歌公司利用自己的全部資源將其推上了市場占有率***的寶座,而這位山丘之王的地位似乎已經(jīng)不可動搖。而如果想要開拓移動市場,那么忽略Android平臺在商業(yè)角度看無疑屬于自殺行為。
Android開發(fā)弱爆了。
Android開發(fā)機制一直可謂頑疾纏身。程序員們通常不愿意在Android平臺上開發(fā)應(yīng)用,因為他們需要考慮的太多——正如當(dāng)初Web開發(fā)者厭惡IE一樣。
互聯(lián)網(wǎng)上已經(jīng)有無數(shù)博客提到,眾多開發(fā)人員由于被迫在Android平臺上搞開發(fā)而不得不忍受著無盡的折磨。不用多說,相信每位有此經(jīng)歷的朋友都能體會得到。
從安裝到環(huán)境設(shè)置、愚蠢而又設(shè)計過度的工程SDK、設(shè)備碎片化,就連說明文檔都沒法在內(nèi)容上達(dá)成統(tǒng)一,這一切都讓我頭痛欲裂。我不想在今天的文章中再勾起我個人或者說大家的痛苦回憶,相反,我希望通過其它方式來闡述這種狀況。如果我告訴大家,Android開發(fā)本不必如此惱人,結(jié)果會怎樣?如果我告訴大家,還有其它的實現(xiàn)手段,結(jié)果又會怎樣?
另一種方式,Python的方式
如果我們能夠通過幾條簡單的命令就完成環(huán)境的整體設(shè)置,大家是不是會覺得非常振奮?
- sudo add-apt-repository ppa:kivy-team/kivy
- sudo apt-get update && sudo apt-get upgrade
- sudo apt-get install python-kivy
如果無需再安裝臃腫的IDE并加以配置,而是直接在文本編輯器當(dāng)中打開代碼內(nèi)容并加以修改(使用更為簡潔清晰的語言),大家會不會為之歡呼?
- import kivy
- from kivy.uix.widget import Widget
- from kivy.app import App
- class HomeScreen(Widget):
- def button_clicked(self):
- self.ids.home.counter += 1
- self.ids.label1.text = "you clicked " + str(self.ids.home.counter) + " times!"
- class MyApp(App):
- def build(self):
- return HomeScreen()
- if __name__ == '__main__':
- MyApp().run()
如果在需要建立一套圖形用戶界面時,大家只需要使用簡潔而明確的DSL即可實現(xiàn),又將如何?
- <HomeScreen>:
- BoxLayout:
- orientation: 'vertical'
- size: root.width, root.height
- id: home
- counter: 0
- Label:
- id: label1
- text: 'Hello World!'
- Button:
- id: button1
- text: 'click me!'
- on_press: root.button_clicked()
如果在需要運行應(yīng)用成果時,只需要直接運行即可而無需借助什么勞什子模擬器,聽起來怎么樣?
- python main.py
如果在需要對應(yīng)用成果進行部署時,只需要接入自己的移動設(shè)備并使用以下簡單命令,聽起來怎么樣?
- sudo apt-get install python-pip
- sudo pip install buildozer
- buildozer init
- buildozer -v android debug deploy
如果想要把應(yīng)用成果部署到iOS時只需輕松使用以下命令,又如何?
- 1 buildozer -v ios deploy run
這絕不是什么夢想,事實上Kivy與Python如今都能夠?qū)崿F(xiàn)上述目標(biāo)。另外,得益于高層API的幫助,利用它們甚至能夠?qū)崿F(xiàn)訪問GPS等操作——而且正如任何出色的API一樣,這一切都能夠以抽象方式完成。
總結(jié)
Kivy是一套夢幻般的跨平臺多點觸控GUI編程項目,它正是我理想當(dāng)中移動開發(fā)工具應(yīng)該有的樣子。簡單直接、開發(fā)輕松以及部署便捷。而且不用擔(dān)心,大家完全可以利用它建立起出色且同時能夠跨平臺運行的應(yīng)用程序。
既然如此,為什么谷歌就不能自己弄出一套同樣理想的方案呢?請牢記下面這句話:
任何一個聰明的笨蛋都能以規(guī)模更大、更復(fù)雜且更暴力的方式解決問題。但要以相反的思路拿出辦法,則需要天才與勇氣的結(jié)合。(愛因斯坦)
相信總有一天移動開發(fā)工具會具備Kivy的全部優(yōu)勢,但卻以原生且無需調(diào)整的方式存在。而且當(dāng)這一天到來時,它會成為新的山丘之王——它登上寶座靠的不是巨頭企業(yè)的全力推動,而是開發(fā)人員的堅定擁護。