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






















