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