本文从开发工具选择、UI界面、图片模块、网络模块、数据库产品选择、性能、安全性等方面讲述了Android应用的开发。现在整理出来和Android程序员兄弟们分享。
选择开发工具
我会选择开发工具 Android Studio,它是Google官方指定的Android开发工具,目前是1.2.2稳定版,1.3预览版也已发布。 Android 不用说,Studio的优势,Github上的Android开源库大多已经迁移到Android Studio上来了,没有提供 使用Android文件时,jar文件 Studio集成开源库非常方便。最重要的是,谷歌宣布将在年底前停止对待 Eclipse Android开发工具的所有支持(Google Ends Support for Android Eclipse Tools),所以请尽快转移到Android Studio上来了。
App设计风格
对于一个开发者来说,似乎没有决策权,最终的决策权掌握在产品部门手中。尽管如此,我还是会尽力说服产品部门把App设计成Material design风格。
说多了就是眼泪。作为Android开发者,他整天开发iOS风格的应用程序。我相信很多公司都是这样。为了节省成本和时间,Android和iOS共享一套UI。
举一个最常见的例子,Android 在应用程序中,在TitleBar的每个页面左上角放置一个返回按钮,这在IOS中是必要的,但Android有一个返回按钮,用于此设计 Android完全是多余的。
我真诚地希望产品设计师尊重每个操作系统的风格和使用习惯,不要设计不伦不类的产品。Material Design刚刚提供了这样的规范。自MD规范发布以来,其优雅的设计和清新的风格吸引了大量的设计师和开发者。现在MD设计不仅仅是在Android上(已经得到了官方类库的支持 MD风格),甚至在CSS、HTML、JavaScript网页设计越来越受欢迎。因此,对于App的设计风格,Material 也许你曾经错过了Androididn。 Design,请不要错过Materialia Design。
一些相关链接:
Material 官网Design
Material Design配色模板
MD设计案例网站
Andorid抽屉源代码MD风格:Android-MaterialDesign-NavigationDrawer
MD风格的App源代码(有姐妹哦):Android-MaterialDesign-DBMZ
版本支持
对于Android支持的最低版本,您可以参考每个版本的市场份额。事实上,最可靠的是根据自己应用程序的统计数据来确定。目前,我们的应用程序最低支持2.2。从个人角度来看,虽然2.x的版本仍然有一些用户,但事实上,手机更新特别快,为了更好的用户体验,也为了应用更新API(许多第三方库也有版本要求),应该改进最低支持版本,大约3.0 为宜,即API Level为11。
App框架设计
我相信每个人都有经验,随着功能模块的增加,应用程序越来越大。如果没有良好的架构设计,代码将变得臃肿和难以维护,每个功能模块的耦合程度将越来越高。因此,应用程序可以模块化,将一个完整的应用程序分为几个相对独立的模块,以减少模块之间的耦合,并有利于重用。
1.网络模块
单机版的app已经很少了,大部分都需要联网,从服务器请求数据,所以网络模块是必不可少的。GitHub上有很多开源网络框架。就我个人而言,我认为开源框架可以使用。目前,我将选择OKHTTP或Volley,未来可能会有更好的网络框架。请注意,如果使用开源框架,您必须阅读其源代码并能够控制它,以免在bug出现时束手无策。当然,你也可以自己编写网络模块。目前,我们的应用程序网络模块完全是我们自己编写的。这样做的好处是我们熟悉编写的代码。当出现问题时,我们可以快速定位问题,并注意处理网络连接过程中的一些细节,例如:
(1)支持HTTPS,验证HTTPS证书(目前很多做法默认允许所有HTTPS证书,其实不安全,要真正验证证书)
(2)支持Wap上网、移动、联通、电信代理的设置
(3)支持重定向、数据压缩传输等
(4)其他值得注意的问题
编写网络框架可以完美地处理这些细节,但时间成本相对较高。如果使用开源框架,这些细节通常不会处理,所以我们可以在第三方框架上进行一些修改,这将节省大量的时间成本。
2.图像管理模块
图片也是应用程序中不可缺少的元素,图片是占用内存的大家庭。因此,图片管理框架尤为重要。图片框架不良容易导致内存泄漏甚至崩溃。当然可以自己实现图片框架(目前我们也是这样做的),实现图片的下载、解码、缓存等关键环节。个人建议可以使用一些更好的图片库,这可能比我们自己的图片管理更完美、更高效。我将推荐以下图像管理库:
(1)Glide,一些官方的Google应用程序,如Google photos都用了,还需要解释更多吗?
(2)Fresco,Facebook的开源库功能超强,支持WebP、Gif、JPEG逐渐显示,关键是其图片内存的设计理念,大大降低了图片内存的成本。
(3)Android-Universal-Image-Loader,在上述图片库出现之前,这似乎是最受欢迎的,它也被用于个人应用程序。
(4)Picasso,据说Glide是指Picasso设计的Square开源库。
3.本地数据库模块
也许你的应用程序需要使用本地数据库,所以建议你使用流行的ORM框架,如ActiveAndroid或grendao,使用第三方库将非常方便你操作sqlite,我认为我们需要注意数据库升级和多线程并发操作数据库。
4.文件管理模块
一个应用程序肯定会涉及一些文件,如配置文件、图片、视频、音频、SharedPreferences文件等。我们可以提供一个负责文件添加、删除、更改和检查的全球文件管理模块。此外,还需要支持文件压缩、文件上传和下载操作。下载需要支持多线程并发下载、断点续传等功能。
5.组件之间的通信机制
对于一个应用程序来说,组件通信是必不可少的。通信类型可分为点对点和点对面通信。点对点意味着只有唯一的接收者才能响应信息,点对面类似于新闻广播,即所有注册信息都可以响应。Android 消息机制通常用于实现,但消息机制的耦合度相对较高。目前也有一些通信框架,如Eventbus、Otto等事件总线框架可以大大降低组件之间的耦合,但不能完美地实现点对点通信。因此,建议将消息机制与事件总线机制相结合。
6.数据处理框架
事实上,还应该有一个数据处理框架。当数据请求发出(行子线程)并通过网络模块返回数据(通常是JSON格式)时,JSON数据通常不能直接交给View层,需要分析为相应的Model。同时,如果需要,需要缓存数据,因此这些过程可以抽象成数据处理框架。该框架可以被视为接受数据请求的url,并将数据model返回Activity或 Fragment。对JSON数据分析,建议使用fastjson,速度快且稳定,省值不足也比较完善。
7.线程调度模块
事实上,Android中有许多操作,如请求数据、下载图片、删除缓存等,都需要在子线程中执行。通常,一个Thread是直接制作的,这将非常混乱,更多的线程将难以管理。因此,可以抽象一个线程调度模块来维护一个线程池。如果需要线程,可以通过线程调度模块取线程,便于统一管理。当然,我们不能将第三方库中的线程操作归类为线程调度模块进行管理,但其它涉及线程的操作应统一处理。
8.业务层
业务层大概有四个组件。Fragment、View,建议尽可能使用原始组件,少使用自定义组件,因为原始组件的性能是最好的。此外,只要设计和管理自己的逻辑,就建议使用MVC模式、MVVM等模式个人认为都有缺陷,总之,寻求折中吧,有得有失。
9.APK动态加载机制
随着应用程序的增加和功能的扩展,许多应用程序已经采用了APK动态加载机制,也可以称为插件。因为我没有在实际的应用程序中应用过,所以不方便发表太多的评论。但个人认为这种机制很有前途,有利于App的解耦、功能扩展和局部升级。具体可参考商业解决方案:ApkPlug-移动应用模块化解决方案和开源APK动态加载框架。
10.考虑App的安全性
Android 很少有人关注应用程序的安全问题,但这确实是一个非常严重的问题。一些好的应用程序经常被破解。建议写一些核心算法.so库,服务器端的重要逻辑,数据请求加密等。此外,在包装APK时,至少要混淆代码,也可以使用APK外壳机制。简而言之,这样的预防措施永远不会太多。
如果你一口气写了这么多,可能会有遗漏的内容,以后会补充和改进。我认为如果你遵循上述原则,你至少可以开发一个好的应用程序。
免费获取价值¥9800项目解决方案