首先开发工具当然不能用eclipse咯,当然得用android studio。api版本当然必须是23+,以支持cardview、RecyclerView、百分比布局等。
另外还有引入android support v7、android support design,这样界面的效果就不会太差了,也就是metal design的风格。
然后除了界面之外,还需要访问数据库,网络请求等。
对于数据库操作,android有相应的函数可以操作sqlite,不过默认的方式要用sql语句来操作,不是很方便快捷,所以就要用ORM,那么greenDao怎么样呢? greenDao本人之前用过,虽然效率比较高,但实际上使用起来很麻烦,于是又用xutils提供的dbutils使用起来方便了很多,目前并没有感觉到有效率的问题。
使用orm虽然可以让数据库的读写很方便,但是还有一个问题,就是扩展起来不方便,程序还在开发的时候问题不大,只要修改实体类,然后框架就可以重新创建表,这样很好的,但程序一旦发布,就不能随便改了。因此考虑使用nosql,基于android的nosql也有很多的,前端时间看到SnappyDB感觉还不错,可以考虑引入。
网络操作有Volley可以用,数据格式用json比较好,有的地方使用webservice 基于xml的SOAP协议之类,本人认为xml的格式并没有什么好处,SOAP之类的协议也算是比较老了,很显然json更简洁更节省流量,而且可以和web端js更好的结合。反正都是基于http协议(json的解析,使用fastjson)。
不过对于volley本人并没有用到cookie和https,另外好像也不能上传图片,有待研究,或者有什么其他更好的框架。
对于安卓应用嵌入webview是很常见的,以显示文字、图片类所谓富媒体内容,或者用html5来扩展应用或用html5实现某些界面,所谓hybrid。
不过要让应用支持hybrid特性还是有很多问题需要考虑的,不是简单嵌入webview就可以的,如js代码和java交互等。但实际上很多问题在一些使用html5来开发移动应用的框架中已经解决了。而这些框架也有开源的。
因此本人考虑以第三库的形式导入这些框架,为app提供webview的支持,同时具有hybrid特性,另外这些框架有很多扩展库可以用,因此这看起来是个非常好的主意。
如果注意看一下微信,微信使用了html5来扩展功能,在公众号可以加入链接来打开手机网站,另外还提供js-api来调用app中的一些功能,如相册、拍照等。
如果app的代码可以放在服务器端,动态更新,当然是非常好的,实现上也有一些工具可以让程序代码动态更新,不过对于这样的工具本人并没有用过,考虑到代码混淆等问题,对这种方式本人表示怀疑,有时间可以试试看。
ReactNative使用js来编写原生应用,也可以实现代码的动态更新,另外使用类似css的方式来编写界面,这看起来也很不错。android开发中使用xml的方式来定义界面,本人感觉并不好,很啰嗦有很多重复和干扰的东西。也许ReactNative定义界面的方式会更好(有待研究)。
android使用java来编码,然而java怎么样呢,如果和c/c++比较java当然更好了(对于人来说),但是相比更高级的编程语言就会觉得不太好了,至少我感觉java的语句看起来太长了。正是因为如此,就有基于jvm的动态语言,如groovy,groovy2.4以后是支持安卓的,不过我觉得也没有更换编程语言的必要。
实际上我觉得应该用groovy去改善安卓编写界面的方式(xml),groovy中所谓DSL,gradle中声明依赖库的方式就比maven中的pom.xml看起来好过了,更为重要的是使用groovy脚本来作为配置文件就可以使用判断循环等,这样就非常灵活了。因此如果可以用groovy脚本来定义安卓界面,一定比xml的方式好玩多了。
好了,先就写这么多了,有一些还是设想,可能不切实际,有待研究。另外还有图片加载、推送、地图、支付甚至语言识别、语言合成等都有可以用的sdk这里就不多说了。
如果你觉得本文对你有所帮助请关注我的微信公众号:zhaojieTec,更多内容敬请期待.....