app开发的结构(app框架结构)
本篇文章给大家谈谈app开发的结构,以及app框架结构对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
干货|深度讲解APP结构,看完后你学会了?
本文节选自霍格沃兹测试学院内部教材
我们要学习App结构,那么就是一定先了解APK包的结构。
什么是APK
APK 是 Android Package 的缩写,其实就是 Android 的安装包。通过将 APK 文件直接传到 Android 模拟器或
Android 手机中执行即可安装。
APK 文件其实是 zip 格式,但后缀名被修改为 apk,通过 Android Studio 可以看到 APK 内部的文件。
APK结构
知道什么是 APK 之后,接下来再来看看 APK 里面的结构是怎么样的。
下面拿雪球 APK 来举例。
* lib/ 目录
存放的是一些 so 文件。so 文件是二进制文件,用来兼容各种类型的 CPU。
Android 开发中,在打包发布应用时会选择应用适配的 CPU 架构平台,在引用第三方库时也遇到根据不同 CPU 架构引入相应的 so 包。Android
主要包括这几种 CPU 架构:armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips,大多数情况下只需要支持
armabi 与 x86 的架构即可。
不同的 CPU 架构决定了 app 可以运行在哪些设备上。比如我们的手机设备一般来说用的是 arm 架构,而我们的模拟器一般来说是 x86 架构。如果
app 只支持 arm 架构的话,那么就只能安装在真机上,模拟器上安装就会不成功。如果是两种架构都支持的话,那么就是真机和模拟器都可以安装了。
* res/ 目录
res 目录是工程资源目录,存放的是各种资源文件,包括界面布局,图片,字符串等。
* assets/ 目录
assets 目录用来存放配置文件。
* classes(n).dex 文件
DEX 编译 Java 的 Class 文件,生成 classes.dex 文件。
* resources.arsc 文件
resources.arsc 文件是编译后的二进制资源文件。
* AndroidManifest.xml 文件
AndroidManifest.xml 文件是 Android
的清单文件,是每个应用都必须定义和包含的。它描述了应用的名字、版本、权限、引用的库文件等等信息。
移动端App分类
app 可以分为下面这些类型
1. Native App:原生 app 手机应用程序,使用原生的语言开发的手机应用。比如系统自带的计算器、闹钟就是原生 app。
2. Hybrid App:混合型 app 手机应用程序,混合使用原生的程序和 HTML5 页面开发的手机应用。现在大部分的 app 都是这种混合型的,比如微信,支付宝等等。
3. Web App:基于 Web 的 app 手机应用程序,完全使用 HTML5 页面加前端 js 框架开发的手机应用。比如在浏览器中打开美团,这个页面就是网页 Web App。
Native App
对于 Native APP 来说,一个页面上有下面这些类型的对象。
**Activity**
Activity 是 Android 四大组件之一,用于展示一个与用户交互的界面。Activity 是存放 View
对象的容器,也是界面的载体,可以用来展示一个界面。
**Window**
Window 是 Android 中的窗口,表示顶级窗口,也就是主窗口。它提供标准的用户界面策略,如背景、标题、区域、默认按键处理等。
**View**
View 就是一个个视图的对象。视图,是用户接口组件的基本构建块,它在屏幕中占用一个矩形区域,它是所有 UI 控件的基类,如一个按钮或文本框。View
负责图形界面渲染及事件处理。
**ViewGroup**
ViewGroup 是 Android 中的视图组。包含多个 View,也可以包含 ViewGroup。
查看界面元素
对于 Android 来说,要查看 app 界面的元素需要用到工具帮忙,常用的工具有 uiautomatorviewer。这是 Android SDK
自带的工具,使用起来非常简单。它可以获取到整个界面的布局,我们通过它就可以很容易的查看界面当中的元素和元素的属性了。
元素属性
左侧就是我们同步过来的界面,可以在界面上直接选择元素,然后右面就会展示界面布局和对应元素的属性。
布局
了解 app 的界面布局,可以让我们做自动化测试的时候更容易去定位页面上的元素。
这里的布局就是指界面元素排布的方式。界面上的布局方式都有以下这些方式:
* 线性布局(LinearLayout):所有子视图在单个方向(垂直或水平)保持对齐
* 相对布局(RelativeLayout):每个视图的位置可以指定为相对于同级元素的位置。例如在另一个视图的左侧或下方,或相对于父级区域的位置,例如在底部、左侧或中心对齐
* 帧布局(FrameLayout):坐标原点是屏幕的左上角,位置固定,只需为控件指定大小即可,用来显示一个单一的视图
* 绝对布局(AbsoluteLayout):能够指定其子视图的确切位置
* 表格布局(TableLayout):通过画表表格的方式来实现布局,整个页面就相当于一张大的表格,控件就放在每个 Cell 中
常见属性
* index:元素索引
* text:显示文本
* resource-id:元素id
* class:类名
* package:包名
* content-desc:描述文案
* checkable:是否可以选择
* checked:是否已经选择
* clickable:是否可以点击
* enabled:是否可用
* focusable:是否可以聚焦
* fucused:是否已经聚焦
* scrollable:是否可以滚动
* long-clickable:是否可以长选择
* password:是否为密码输入框
* selected:是否已选择
* bounds:元素位置坐标
在这些属性当中,对于测试有意义的有 text、resource-id class 和 content-
desc,其余的暂时不用太关注。这几个属性在后面做自动化的时候,可以用来定位元素。
App结构讲解就先讲到这里啦,下期我们分享adb常用命令。大家还想看什么内容的文章也可以留言告诉我们哦!
** _
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
QQ交流群:484590337
公众号 TestingStudio
视频资料领取:;url=
点击查看更多信息
如何设计app的架构
想要设计App的整体框架,首先要清楚我们做的是什么
一般我们与网络交互数据的方式有两种:主动请求(http),长连接推送
结合网络交互数据的方式来说一下我们开发的App的类型和特点:
数据展示类型的App:特点是页面多,需要频繁调用后端接口进行数据交互,以http请求为主;推送模块,IM类型App的IM核心功能以长连接为主,比较看重电量、流量消耗。
手机助手类App:主要着眼于系统API的调用,达到辅助管理系统的目的,网络调用的方式以http为主。
游戏:一般分为游戏引擎和业务逻辑,业务脚本化编写,网络以长连接为主,http为辅。
一般我们做的App都是类型1,简要来说这类app的主要工作就是
把服务端的数据拉下来给用户展示
把用户在客户端修改的数据上传给服务端处理
所以这类App的网络调用相当频繁,而且需要考虑到网络差,没网络等情况下,App的运行,成熟的商业应用的网络调用一般是如下流程:
UI发起请求 - 检查缓存 - 调用网络模块 - 解析返回JSON / 统一处理异常 - JSON对象映射为Java对象 - 缓存 - UI获取数据并展示
这之中可以看到很明显职责划分,即:数据获取;数据管理;数据展示
确定了职责,就可以进入正题了
1. 传统的Android App架构
Android最原生也是最基础的架构,可以理解为MVC,Controller即是Activity和Fragment,但是这两者掌握了Android系统中绝大多数的资源,并且在内部直接控制View,因此传统的Android App一般是以Activity和Fragment为核心,将网络模块,数据库管理模块,文件管理模块,常用工具类等分离成若干工具类包,供Activity和Fragment使用。
这是比较基础的Android项目架构,市面上大部分App都是这种造型
优点:就是开发简单,以页面为导向;如果构建水平可以,项目就已经基本实现模块化,基于Activity,Fragment这这两个上帝般的存在,很多事情直接就妥了,不用绕。
缺点:维护难,因为是以页面为导向的,有些需要共用的业务逻辑就会很烦,don't repeat your self, 你要不要repeat ?不想repeat就要写模块,慢慢的项目就会多出一堆乱七八糟的小模块。另一方面,测试很困难,因为所有的数据处理都在Activity和Fragment,假如现在想先用假数据显示,就要直接改Activity和Fragment的数据控制逻辑。
还有个最恼火的问题,那就是业务复杂起来后Activity和Fragment的代码量激增,举一个例子,电商App的购物车,如果只是管理一下购物车中的商品,无非就是查、删、改调用,列表管理,300多行代码应该就搞定了,假如现在加了个优惠券提示呢?光优惠券不够,还有满减,还有凑单,要计算运费。还要能领取优惠券…… 噢,忘了一般来说还有一个商品推荐,好了现在有两个列表要管理了,你觉得CartActivity 2000行代码能止住么?
在上面这些缺点的描述中,可以看到一个很大的痛点在于:Activity和Fragment不应该管这么多数据处理逻辑
2. 分层架构
如果仔细看自己的项目,可以发现绝大多数数据处理的代码是不需要使用Activity和Fragment持有的资源的(比如Context),而很多时候我们需要多个页面共用一套数据和请求逻辑,很经典的例子是应用中的User对象,一般来说都是全局单例。
这些全局的数据源写多了,很容易就能想到将数据处理统一抽出来形成一层,向上层提供数据接口,而上层并不关心数据的来源(内存,缓存,网络),因为不用从Activity和Fragment拿资源而且主要工作是数据处理,所以这一层是UI无关的,大幅提升了复用性,我把这一层称为DataManager层。
这是我一个项目的包结构
Activity和Fragment剥离了数据处理的责任后,持有DataManager的引用,负责获取数据并展示,向DataManager传递数据,绝不进行网络请求和缓存读写。
手机app制作流程
手机app制作流程从app开发前,中,后期详细给您讲解下:
一、App开发前期
1、明确app开发需求
在明确需要开发一个app前,首先要问自己,为什么要做一个app,手机app需要什么系统版本,app是给谁使用的,面向的用户是哪些群体等。要对开发app行业进行了解,分析app开发的可行性。
2、确定app开发报价
在确定完需求后,开发公司会根据沟通内容出一份开发app功能需求列表,目前普遍使用思维导图居多,可以根据这份思维导图增加或删除功能。敲定好功能需求后,再确认使用什么开发模式进行开发等细节。较后开发公司会核算开发所需周期和人员投入,提供一份详细开发价格表。
二、App开发中期
1、确定视觉UI界面设计
UI设计是APP正式开发的为数不多步。一般来说,app风格较好简洁大方,功能一目了然,能让用户为数不多眼留下好印象。效果图的制作会根据app的需求、app的LOGO、app面对人群来选择主色调,终让客户确定。
2、着手开发app应用程序
在确定好app界面风格后,就可以正式进入app应用程序开发了。目前主流app包括两类,一类是基于安卓系统的app,另一类是基于苹果系统的app。两种系统使用的开发语言和工具不同,但是流程基本都是包括前端开发、后端开发、应用接口开发、服务器环境构建等。此外还有就是页面标注和手机适配,这是app开发项目独有的流程。这个环节是为了能够让app在不同手机上也能正常显示和使用,后期上线不会影响用户使用app的体验。
3、进行app整体测试
测试内容包括:APP内容测试、APP性能测试、APP功能测试、APP视觉测试、对于BUG调试修复。如果测试问题需要及时修复,直到测试结果通过,App的整体开发才能完成。可以多邀请一些内部人员进行测试,充分优化和测试app的体验度和稳定性。
三、App开发后期
1、App打包上线发布
全部做好之后就可以在各大应用市场发布上线了。APP上线审核,俱备苹果开发者账号的前提下,一般苹果的APP store审核大概需要一个星期,安卓审核在3天左右,甚至更快,所以我们要注意把握好这个时间,不要让审核时间耽误上线时间。而且,有个别情况会导致审核失败,需要修改资料重新提交,这样就会导致审核周期更长。
2、App后期维护升级
完成开发上线后,app开发公司根据合同要求,交付相关内容,合作完成。至于后期需不需要维护升级得根据双方合同要求。
企业APP开发流程是什么?
在企业中,整个的开发的过程,从头到尾,大致可以分成五个大的阶段,分别是需求,设计,编码,测试,交付这五个阶段,这当中,位于软件公司内部管理的过程,详细划分又可以分为7步,如下所列:
相关系统分析员向用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚利用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。
开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。
做app的公司一般的组织构架是怎样的?
大致分为:
财务部:公司的收入,支出,发工资,跟钱有关的;
人事部:负责公司人员的招入,迁出,人员变化都要这个部门来做;
行政部:负责公司整体的战略方向,策划活动等等;
产品市场部:负责调研市场需求,产生需求,以及产品对市场的冲击等等;
开发部(安卓开发部:开发安卓应用,ios开发部:开发苹果应用,服务器后端开发部:开发app所需要的服务器端数据支撑):负责按产品市场部的需求开发产品;
测试部:负责开发部程序的测试。这个工作也有可能直接由开发部负责程序测试,产品市场部负责功能性测试。
扩展资料:
关键因素:
基于企业产品独特性特点开发App,是企业开发App的一项原则。再比如汽车、笔记本电脑这样产品,可能适合做360度的产品展示,在视觉上延长体验时间和以细节加强用户兴趣。“汽车产品方面,我们也曾经有过这样一个案例。
客户要求系列产品全方位展示,我们便将不同款式、颜色、亮点的超清图片像视觉大片一样包含在App里,同时,根据汽车的不同特性设计相应展示形式,比如为体现某款车车速飞快,图片先是像漫画般一帧帧排列。
但滑动一下按钮,这组图片便可以呈现汽车飞驰的视觉效果。”中国无线营销公司、飞拓无限销售及市场营销高级副总裁叶保伦说道。
参考资料来源:百度百科-企业APP
app开发的结构的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于app框架结构、app开发的结构的信息别忘了在本站进行查找喔。