在线咨询
微信咨询

微信咨询

现在咨询送您价值9800大礼包

手机扫码加我微信

电话咨询

预约回电

专家顾问将在24小时内向你致电

咨询电话 09:00-18:00
400-071-5188

如何开发出好的Android? app?

1,580人看过 2023-09-28 07:33

  本文从开发工具选择、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项目解决方案

Copyright © 2022 广州市启橙网络技术有限公司 版权所有 粤ICP备18028829号-1