内容简介
如今已经是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的全部优势,但却以原生且无需调整的方式存在。而且当这一天到来时,它会成为新的山丘之王——它登上宝座靠的不是巨头企业的全力推动,而是开发人员的坚定拥护。