android项目开发流程_android 项目开发流程 - CSDN
  • 做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。  一 应用规划:   ※确定功能。   ※必须的界面及界面跳转的流程。   ※需要的数据及数据的来源及格式。   ※是否需要...

    转自:http://www.iteye.com/topic/890517

    做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。 

    一 应用规划: 
        ※确定功能。 
        ※必须的界面及界面跳转的流程。 
        ※需要的数据及数据的来源及格式。 
        ※是否需要服务端支持。 
        ※是否需要本地数据库支持。 
        ※是否需要特殊权限。 
        ※是否需要后台服务。 
    二 架构设计: 
        ※分层。 
        ※网络连接。 
        ※数据处理-xml、domain。 
        ※封装Activity。 
    三 界面设计: 
        ※主界面确定。 
        ※模块界面、列表、查看、编辑界面。 
        ※菜单、按钮、对话框、提示信息。 
        ※界面总体颜色。 
    四 数据操作和存储: 
        ※数据来源。 
        ※数据类型。 
        ※存储方式。 
    五 业务实现: 
        ※客户端业务解析。 
    六 页面跳转: 
        ※每个页面间的跳转。 
        ※菜单、按钮、事件等。
    展开全文
  • ANDROID经典项目开发实战---------------带书签扫描版
  •  ※必须的界面及界面跳转的流程。  ※需要的数据及数据的来源及格式。  ※是否需要服务端支持。  ※是否需要本地数据库支持。  ※是否需要特殊权限。  ※是否需要后台服务。 二 架构设计:  ※分层。 ...
    一 应用规划:
        ※确定功能。
        ※必须的界面及界面跳转的流程。
        ※需要的数据及数据的来源及格式。
        ※是否需要服务端支持。
        ※是否需要本地数据库支持。
        ※是否需要特殊权限。
        ※是否需要后台服务。
    二 架构设计:
        ※分层。
        ※网络连接。
        ※数据处理-xml、domain。
        ※封装Activity。
    三 界面设计:
        ※主界面确定。
        ※模块界面、列表、查看、编辑界面。
        ※菜单、按钮、对话框、提示信息。
        ※界面总体颜色。
    四 数据操作和存储:
        ※数据来源。
        ※数据类型。
        ※存储方式。
    五 业务实现:
        ※客户端业务解析。
    六 页面跳转:
        ※每个页面间的跳转。
        ※菜单、按钮、事件等。
    展开全文
  • 学习了Android开发基础必须要通过项目实践来巩固。博主现在也开新的项目了,我将通过博客来记录自己开发项目过程。 一、应用需求设计应用的需求设计大体上可以分为三个阶段: 阶段一: 应用基本需求设计。 ...

      学习了Android的开发基础必须要通过项目实践来巩固。博主现在也开新的项目了,我将通过博客来记录自己开发项目的过程。 

    一、应用需求设计

    应用的需求设计大体上可以分为三个阶段:
    阶段一: 应用基本需求设计。
      首先确定我们应用的功能:该应用是干什么的,面向的客户是哪些,包含哪些功能,客户如何使用等。
    阶段二:应用的草图设计。
      在确定应用的各项功能之后,我们需要确定应用基本的界面设计。应用每个界面的草图设计。前期草图一般使用axure绘制 ,这里绘制的一般是站位图。通过前期的草图绘制我们的应用设计就基本成型了,从草图设计我们可以了解应用界面的实现样式,跳转流程等等。
    阶段三:应用的高清图设计。
      将前期的草图设计转为高清图设计,不准使用站位图,必须使用标准图。应用开发过程中将主要以此为标准。

    二 架构设计

    1. 分层。
      对应用进行分层设计,确定需要的数据及数据的来源及格式,是否需要服务端支持,是否需要本地数据库支持,是否需要特殊权限,是否需要后台服务等功能。
    2. 网络连接。
      确定应用的网络连接,一般都是封装应用自己的网络连接方式。这样在以后应用升级中更改网络连接方式时不至于修改大量的代码,只需要修改自己封装的网络连接方式即可。这里不建议使用(Http)URLConnnection和HttpClient,建议使用Volley或者XUtils。
    3. 数据库。
      通过分析应用的数据,创建应用的数据库。一般分为本地的数据库和服务器的数据库。
    4. 服务器

    三、Code

      编码,也就是我们程序员最主要的工作。将前期数据库,网络连接,服务器,UI界面等的设计通过代码实现。

    四,测试

      测试应用的使用。

    五,运营维护

    展开全文
  • 上两篇博客中提到了构建过程的问题,之前毕业在准备面试的过程中,对这个部分有过较为认真的学习,也进行了博客记录,但是实际工作过程中,如果是在写业务逻辑上,那么这方面的问题接触的就会比较少了。逐渐的淡忘了...

    前言

    上两篇博客中提到了构建过程的问题,之前毕业在准备面试的过程中,对这个部分有过较为认真的学习,也进行了博客记录,但是实际工作过程中,如果是在写业务逻辑上,那么这方面的问题接触的就会比较少了。逐渐的淡忘了,其次,之前所写的文章条理性也不是很强,同时,最近准备进行Gradle插件的一系列博客的产出,其中将会涉及到很多与项目构建相关的内容。所以此文也将成为后续文章的一个铺垫。

    PS :有兴趣的加入Android工程师交流QQ群:752016839 主要针对Android开发人员提升自己,突破瓶颈,相信你来学习,会有提升和收获。

    构建过程

    项目的构建: 当我们打开一个项目,我们可以看到的是我们写的Java Code文件or Other JVM Code,资源文件,Build配置文件,但是通过run the project,我们就可以得到一个在我们的Andoid设备上可以运行的Apk,上线应用市场,还需要我们对其进行签名处理,来确保我们App的唯一性和安全性。整个过程就是所谓的项目构建。

    如何实现整个构建的过程,对于每一个构建的步骤,都需要相应的功能模块来进行,比如Java Code编译,如何打成dex包等等,而这Android则为我们提供了相应的工具,在Android Studio命令行窗口中,我们可以通过相应的命令行来进行控制,但是,整个构建过程涉及到很多的步骤,很多的工具的使用,如果都通过命令行来进行控制,势必会相当麻烦,因此Androd Studio等IDE则对整个过程进行了一个打包,当我们在Run project的时候,底层的打包工具就会被调用,打包流程都会自动执行。然后我们只需要对构建文件按照自己的需求进行相应的配置,就可以构建出自己所需要的项目。

    那么,整个Andoid项目的构建过程中,都执行了那些构建的任务呢?

    首先看一下,Google官方为我们提供的详细的构建过程图

     

    构建过程概述

     

     

    如果你接触Android开发已经有一段时间了,我想当你看到这张图的时候,就会觉得很清晰。但是更多的可能会一头雾水,如果之前没有阅读相关的资料的话,那么,接下来,将针对上述的构建过程,先给出一个概述,这样你将会整个构建流程在心中有一个框架,然后针对其中具体的细节,进行进一步详细的讲解。

    图中绿色标注为其中用到的相应工具,蓝色代表的是中间生成的各类文件类型。

    • 首先aapt工具会将资源文件进行转化,生成对应资源ID的R文件和资源文件。
    • adil工具会将其中的aidl接口转化成Java的接口
    • 至此,Java Compiler开始进行Java文件向class文件的转化,将R文件,Java源代码,由aidl转化来的Java接口,统一转化成.class文件。
    • 通过dx工具将class文件转化为dex文件。
    • 此时我们得到了经过处理后的资源文件和一个dex文件,当然,还会存在一些其它的资源文件,这个时候,就是将其打包成一个类似apk的文件。但还并不是直接可以安装在Android系统上的APK文件。
    • 通过签名工具对其进行签名。
    • 通过Zipalign进行优化,提升运行速度(原理后文会提及)。
    • 最终,一个可以安装在我们手机上的APK了。

    通过上述讲解,我想对于Android项目的整个构建过程,应该有了一个很清晰的框架了,下面将针对其中的具体的细节,和前面挖的一些坑,来进行更细致的分析,下图是一个Android项目构建过程的详细步骤图。

    详细构建过程

     

    接下来的分析,我们还是按照上述构建过程概述的顺序和流程,进行具体的分析。

     

    第1步:aapt打包资源文件,生成R.java和编译后的资源(二进制文件)

    讲到资源文件的处理,我们先来看一下Android中的资源文件有那些呢?Android应用程序资源可以分为两大类,分别是assets和res:    1. assets类资源放在工程根目录的assets子目录下,它里面保存的是一些原始的文件,可以以任何方式来进行组织。这些文件最终会被原装不动地打包在apk文件中。如果我们要在程序中访问这些文件,那么就需要指定文件名来访问。例如,假设在assets目录下有一个名称为filename的文件,那么就可以使用以下代码来访问它:

    2. res类资源放在工程根目录的res子目录下,它里面保存的文件大多数都会被编译,并且都会被赋予资源ID。这样我们就可以在程序中通过ID来访问res类的资源。res类资源按照不同的用途可以进一步划分为以下10种子类型: layout(布局文件),drawable,xml,value,menu,raw,color,anim,animator,mipmap。 为了使得一个应用程序能够在运行时同时支持不同的大小和密度的屏幕,以及支持国际化,即支持不同的国家地区和语言,Android应用程序资源的组织方式有18个维度,每一个维度都代表一个配置信息,从而可以使得应用程序能够根据设备的当前配置信息来找到最匹配的资源来展现在UI上,从而提高用户体验。由于Android应用程序资源的组织方式可以达到18个维度,因此就要求Android资源管理框架能够快速定位最匹配设备当前配置信息的资源来展现在UI上,否则的话,就会影响用户体验。为了支持Android资源管理框架快速定位最匹配资源,Android资源打包工具aapt在编译和打包资源的过程中,会执行以下两个额外的操作:

    • 赋予每一个非assets资源一个ID值,这些ID值以常量的形式定义在一个R.java文件中。
    • 生成一个resources.arsc文件,用来描述那些具有ID值的资源的配置信息,它的内容就相当于是一个资源索引表。包含了所有的id值的数据集合。在该文件中,如果某个id对应的是string,那么该文件会直接包含该值,如果id对应的资源是某个layout或者drawable资源,那么该文件会存入对应资源的路径。

    为什么要转化为二进制文件?

    • 二进制格式的XML文件占用空间更小。这是由于所有XML元素的标签、属性名称、属性值和内容所涉及到的字符串都会被统一收集到一个字符串资源池中去,并且会去重。有了这个字符串资源池,原来使用字符串的地方就会被替换成一个索引到字符串资源池的整数值,从而可以减少文件的大小。
    • 二进制格式的XML文件解析速度更快。这是由于二进制格式的XML元素里面不再包含有字符串值,因此就避免了进行字符串解析,从而提高速度。 有了资源ID以及资源索引表之后,Android资源管理框架就可以迅速将根据设备当前配置信息来定位最匹配的资源了。

    对于具体的一些操作流程,可以参考本人之前的一篇文章APK打包安装过程或者更偏向于源码层级的老罗的文章。(文后参考文献链接)

    第2步:aidl

    aidl,全名Android Interface Definition Language,即Android接口定义语言。是我们在编写进程间通信的代码的时候,定义的接口。 输入:aidl后缀的文件。输出:可用于进程通信的C/S端java代码,位于build/generated/source/aidl。

    第3步:Java源码编译

    我们有了R.java和aidl生成的Java文件,再加上工程的源代码,现在可以使用javac进行正常的java编译生成class文件了。

    输入:java source的文件夹(另外还包括了build/generated下的:R.java, aidl生成的java文件,以及BuildConfig.java)。输出:对于gradle编译,可以在build/intermediates/classes里,看到输出的class文件。

    第4步:代码混淆(proguard)

    源码编译之后,我们可能还会对其进行代码的混淆,混淆的作用是增加反编译的难度,同时也将一些代码的命名进行了缩短,减少代码占用的空间。混淆完成之后,会生成一个混淆前后的映射表,这个是用来在反应我们的应用执行的时候的一些堆栈信息,可以将混淆后的信息转化为我们混淆前实际代码中的内容。 而这个过程使用的工具就是ProGuard,是一个开源的Java代码混淆器(obfuscation)。ADT r8开始它被默认集成到了Android SDK中。 其具备三个主要功能。

    • 压缩 - 移除无效的类、属性、方法等
    • 优化 - 优化bytecode移除没用的结构
    • 混淆 - 把类名、属性名、方法名替换为晦涩难懂的1到2个字母的名字 当然它也只能混淆Java代码,Android工程中Native代码,资源文件(图片、xml),它是无法混淆的。而且对于Java的常量值也是无法混淆的,所以不要使用常量定义平文的密码等重要信息。同时对于混淆,我们可以通过代码制定去混淆那些,不去混淆那些。

    第5步:转化为dex

    调用dx.bat将所有的class文件转化为classes.dex文件,dx会将class转换为Dalvik字节码,生成常量池,消除冗余数据等。由于dalvik是一种针对嵌入式设备而特殊设计的java虚拟机,所以dex文件与标准的class文件在结构设计上有着本质的区别,当java程序编译成class后,使用dx工具将所有的class文件整合到一个dex文件,目的是其中各个类能够共享数据,在一定程度上降低了冗余,同时也是文件结构更加经凑,实验表明,dex文件是传统jar文件大小的50%左右。class文件结构和dex文件结构比对。

    Dex和Class比对

     

     

    第6步:apkbuilder

    打包生成APK文件。旧的apkbuilder脚本已经废弃,现在都已经通过sdklib.jar的ApkBuilder类进行打包了。输入为我们之前生成的包含resources.arcs的.ap_文件,上一步生成的dex文件,以及其他资源如jni、.so文件。 大致步骤为 以包含resources.arcs的.ap_文件为基础,new一个ApkBuilder,设置debugMode

     

    第7步:对APK签名

    对APK文件进行签名。Android系统在安装APK的时候,首先会检验APK的签名,如果发现签名文件不存在或者校验签名失败,则会拒绝安装,所以应用程序在发布之前一定要进行签名。签名信息中包含有开发者信息,在一定程度上可以防止应用被伪造。对一个APK文件签名之后,APK文件根目录下会增加META-INF目录,该目录下增加三个文件:

     

    • MANIFEST.MF
    • [CERT].RSA
    • [CERT]

    Android系统就是根据这三个文件的内容对APK文件进行签名检验的。签名过程主要利用apksign.jar或者jarsinger.jar两个工具。将根据我们提供的Debug和Release两个版本的Keystore进行相应的签名。

    MANIFEST.MF中包含对apk中除了/META-INF文件夹外所有文件的签名值,签名方法是先SHA1()(或其他hash方法)在base64()。存储形式是:Name加[SHA1]-Digest。

    [CERT].SF是对MANIFEST.MF文件整体签名以及其中各个条目的签名。一般地,如果是使用工具签名,还多包括一项。就是对MANIFEST.MF头部信息的签名。

    [CERT].RSA包含用私钥对[CERT].SF的签名以及包含公钥信息的数字证书。

    第8步:zipalign优化

    Zipalign是一个Android平台上整理APK文件的工具,它首次被引入是在Android 1.6版本的SDK软件开发工具包中。它能够对打包的Android应用程序进行优化, 以使Android操作系统与应用程序之间的交互作用更有效率,这能够让应用程序和整个系统运行得更快。用Zipalign处理过的应用程序执行时间达到最低限度,当设备运行APK应用程序时占更少的RAM。

    • Zipalign如何进行优化的呢?

    调用buildtoolszipalign,对签名后的APK文件进行对齐处理,使APK中所有资源文件距离文件起始偏移为4字节的整数倍,从而在通过内存映射访问APK文件时会更快。同时也减少了在设备上运行时的内存消耗。如果对于为何提速不理解,那么可以看下内存对齐的规则以及作用该篇文章,对于内存对齐的好处有比较生动详细的解释。最终这样我们的APK就生成完毕了。

    典型的APK中内容

    • AndroidManifest.xml 程序全局配置文件
    • classes.dex Dalvik字节码
    • resources.arsc 资源索引表
    • META-INF该目录下存放的是签名信息
    • res 该目录存放资源文件
    • assets该目录可以存放一些配置或资源文件

    总结

    至此,对于Andoid项目构建过程的分析已经完成,当然,并没与深入到源码层级的分析,本文的旨在对于构建过程流程上的了解和其中一些优化的原因所在,为后续通过Gradle插件hook构建过程来做一定的操作,做一个铺垫。

    展开全文
  • 之前在网上搜索关于项目开发流程的文章,然后搜到了一位大神的讲解,通俗易懂。 所以我就按照他的讲法总结了一个比较短的解释。 原博链接:https://blog.csdn.net/duantianya2012/article/details/78021701 项目...

    之前在网上搜索关于项目开发流程的文章,然后搜到了一位大神的讲解,通俗易懂。
    所以我就按照他的讲法总结了一个比较短的解释。
    原博链接:https://blog.csdn.net/duantianya2012/article/details/78021701

    在这里插入图片描述

    1. 项目调研:开发产品前先做一个调查,根据客户的调查再确定做什么类型的项目
    2. 需求分析:设计框架,编写自己所想表达的UI效果图,并设计一份原型图以及系统框架
    3. 需求评审:对需求分析进行评估并做适当的修改,有利于更高效的开发
    4. 开发阶段:开发人员对上面的需求阶段进行代码编写,在这之前应该先写一份文档,如果在代码编写时遇到问题应该向上级汇报;测试人员在测试前要写一份测试文档流程
    5. 测试:测试人员按照测试文档对产品进行测试并记录结果,如果有bug要重新交给开发人员修改
    6. 上线:大公司需要开发人员向上级发送打包申请邮件,小公司则需要开发人员自己进行系统文件打包发送
    7. 运营:需要一些公司的运营部门对上线的产品进行数据的追踪
    8. 版本迭代:来对产品做新的修改并处理一些bug或者更新较高的版本产品
    展开全文
  • 刚过完春节,好久没写过博客,今天看到一个帖子把移动开发过程中需要的很多东西都做了记录,我这里也转载一下,留着以后备用。软件立项及方向选择因为自己的一个想法开始做这个项目,或者在实际开发中由产品经理立项...
  • Android项目开发流程

    2014-03-05 13:46:23
    大方向:产品调研-需求分析-系统设计-编码开发-测试-运营维护 一 应用规划:  ※确定功能。  ※必须的界面及界面跳转的流程。  ※需要的数据及数据的来源及格式。  ※是否需要服务端支持。  ※是否...
  • android项目开发流程

    2015-04-23 18:09:39
    本人来论坛发贴能得到很多高手的帮助支持,谢谢大家,这个网站确实android卧虎藏龙的地方,希望大家能分享一下android项目开发流程的经验。我在网上查到一位开发者写的,贴出来: android开发流程  一 应用...
  • 全书以一个Android应用程序开发案例为主线,介绍了整个Android项目开发过程。在内容的编排方面,为突出项目编程方法与编程思路这条主线,将Android组件的使用分配到每一个功能界面中讲解。《移动平台开发书库:...
  • 2、选择Android,发现下面有一段红字,解释很清楚,由于第一使用为设置...4、当然在这之前想要做Android项目要有jdk和sdk这我就不在说了,默认已经有了哦 点击new一个新的sdk 把jdk先配置进入(特殊说明下此版本ide
  • 在现在很多的开发中,开发一个app缓存和网络存储搭配起来使用往往是必须的,自己写过比较多的项目所有谈谈感想。 缓存作用: 所谓的缓存机制就是数据获取方式的变化,app的缓存通常就是把用户经常需要从网络上加载...
  • 笔者对于Android的学习时间比较晚,我没有使用eclipse对于Android进行开发学习,接触Android开发的时候,Androidstudio3.0就已经出来了,而且这毕竟是专门进行Android项目开发的,都说是Google的亲儿子,我没用过...
  • Android Studio开发之app项目启动运行流程 Android Studio开发之app项目启动运行流程
  • 好久都没有写博文了,主要是现在的工作重点是前端开发了,最近在学习webpack、weex等前端知识,说起weex,一直都在填坑中,目前还没爬出来了!...所以,本文再次详细描述下,Android项目构建Apk包流程。 一. 前...
  • 在做项目开发的时候参考了欧楠老师的一套Android4.2开发手机新闻移动客户端的视频教程,对我的帮助蛮大的,在此想给正在搞android开发的朋友推荐一下。这套教程一共是20讲,就是讲如何在android4.2上开发手机新闻...
  • Android TV和Android手机开发的主要区别在于焦点的控制和焦点效果的不同。 以下是开发过程中收集到的开源项目,记录于此,与大家分享一下. 焦点放大,切换,边框处理,适配问题等。
  • 回想一下开发一款app的流程 其实对于一个程序员来说,成长最快的莫过于独立开发一款app应用,经历一下从无到有的过程,以及这个过程中需要做的,出现的问题,怎么解决的等等。 我曾独立承担过一款app的开发,这里...
  • 点击打开链接http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1127/639.html
  • 前言团队项目开发前的统一三要素:统一需求/开发文档,统一代码规范,统一环境(编译/测试/发布)。一个项目团队,要想有高效的产出,必须在团队协作上下好功夫,必须在项目开发统一进度上做好协调。只有在高效的...
1 2 3 4 5 ... 20
收藏数 151,510
精华内容 60,604
关键字:

android项目开发流程