[转载]开发一款高端大气上档次的android应用需要必备的知识——记于2013年末 – 张兴业 – 博客园.
Android入门还是很简单的,看两本书,翻阅几篇文章,搭建了开发环境就算入门了。可是怎样开发一款完备的Android应用呢,开发一款高端的android应用又需要那些知识呢,作者根据几年的开发经验做了一点总结,有不足之处也请读者补充。
一、网络开发技能
开发的应用肯定会联网,在移动互联网时代,单机应用会越来越少。如果我们开发的应用缺少与服务器的交互,内容上不会丰富,更有可能的是我们无法控制到应 用,得不到用户及用户反馈。网络连接中用的最多的无非是Http或者Tcp。Android中http使用提供了三个包,我们常用的是 HttpClient、HttpURLConnection。网络上也有对http的封装包,例如volley、android-async-http,volley 使用的HttpURLConnection,android-async-http使用的HttpClient。虽然http的封装包使用起来都很简单, 但是我们也应该了解一下他们的区别,作者有一篇文章是介绍HttpClient、HttpURLConnection区别的,希望对您有帮助,《AndroidHttp通信 HTTP Client与HttpURLConnection的区别》。
volley和android-async-http都是非常简洁、伟大的http开发库,android-async-http有详细的开发文档,作者不做详细的说明。 Volley是Ficus Kirpatrick在Gooogle I/O 2013发布的一个处理和缓存网络请求的库,能使网络通信更快,更简单,更健壮;他没有使用文档,作者有几篇文章介绍了volley的使用。
《Google I/O 2013 – Volley: Easy, Fast Networking for Android》
《Asynchronous HTTP Requests in Android Using Volley》
《Android UI开发第三十六篇——使用Volley加载图片列表》
二、丰富的UI技能
客户端开发不同于服务端,服务端只处理逻辑,客户端即处理逻辑又处理界面,而且界面又是多变的,不同的客户端,界面肯定不一样,相同的客户端,不同时期的界面也可能不一样,所以客户端开发者总感觉在修改界面,不是在改界面就是在改界面的路上。
我们处在一个以“用户体验至上”的时代,产品经理经常会以此为理由修改已经确定的UI,为了应付多变的需求,我们必须储备尽可能多的UI处理技能。从最简 单的Button、TextView、EditText到高级点的Listiew、Tab、ViewPager,我们都应该掌握,我们还应该跟上时代掌握 ActionBar、Fragment等等,自定义View的技能也必不可少。作者有一个UI开发专栏,介绍到了很多常用UI知识,分享给大家。
三、保证应用安全技能
应用安全是我们重点关注的,尤其涉及到支付相关应用。我们不希望自己的应用遭破解、也不希望用户被钓鱼、更不希望出现数据漏洞,那我们就需要提高应用安全技能。
应用安全会涉及到代码安全、客户端与服务端通信安全、应用内部组件通信安全、数据库数据安全等等,作者也提供了一个专栏来介绍应用安全,内容还不够多,以后会再补充一些。作者也不是专业做安全的,难免有不足之处,也请读者谅解。
四、NDK技能,适当的使用so
Android平台从诞生起,就已经支持C、C++开发。虽然Android的SDK基于Java实现,但这并不等同于“第三方应用只能使用Java”。 在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态 库,即在Android平台上,”Java+C”的编程方式是一直都可以实现的。涉及到注重性能,或比较底层的程序都会使用C/C++开发,例如音视频编解码。有的应用会使用so文件,以保证应用安全。
NDK全称是Native Development Kit。NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。官方关于NDK开发的文档相对较少,作者也总结了几篇文章,帮着初学者入门。
JNI专栏中包含了JNI入门、C调Java、Java调C、
android开发中,使用到的知识不只是上面的四点,还会有数据库相关、Broadcast、Service等等,但是上面的四点在使用过程中更丰富、 多变;而数据库相关、Broadcast、Service等比较简单、单一,在每个应用中的使用方式都是一样的。在学习中我们更应该注重以上四点知识的积 累。有不足之处,望读者留言补充。
博主有幸成为2013年度博客之星的候选人之一,期待你的一票,谢谢您的支持。
投票猛击: