Android项目开发报告

目 录

1项目简介... 2

2开发环境... 2

2.1Android平台结构介绍... 2

2.2 MVC框架... 3

3功能介绍... 3

3.1登录... 3

3.2注册... 3

3.3添加... 4

3.4查询... 5

3.5主页面... 6

4数据库结构... 7

4.1数据表设计... 7

5项目结构... 7

5.1 src文件夹... 7

52 gen文件夹... 7

5.3 libs文件夹... 8

5.4 bin文件夹... 8

5.5 res文件夹... 8

5.6 AndroidManifest.xml 8

6项目总结... 8


Android项目开发报告

1项目简介

本次中软培训主要是关于android的基本应用开发,培训的任务主要是开发一个与日常生活花费有关的现金日记账软件,由于时间紧张此软件只实现了登录、注册、添加、查询等功能,未涉及细节处理。此次项目开发主要是帮助大家培养理财观念,清楚直白的了解每笔前是怎么消费,何时消费掉的,利于节约一部分开支。

2开发环境

2.1Android平台结构介绍

Android系统架构和其操作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

开发人员可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用。任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。

 应用程序。Android会同一些核心程序包一起发布,包括日历、地图、浏览器等。所有的应用程序均是用Java语言编写。

 应用程序框架。这种框架可以使开发人员可以完全的访问核心程序所使用的API框架,简化了组件的使用。同时也使用户可以方便的替换程序组件。

 系统运行库。Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。一般情况下如果要将Android移植到其他硬件去运行,只需要实现这部分代码即可。Android也包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。

 Linux内核。Android的核心系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。

2.2 MVC框架

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。

3功能介绍

3.1登录

功能描述

用户登陆系统的窗口,如果信息有误,系统提示用户名或密码错误。

功能实现

用户填写登陆信息,信息无误,登陆成功,进入用户主页面。

登陆界面截图:

3.2注册

功能描述

用户注册的窗口,如果用户已存在,系统提示用户注册失败,请重新注册。

功能实现

用户填写注册信息,点击提交,完成注册,进入登陆页面。

注册界面截图:

3.3添加

功能描述

用户添加信息的窗口,输入相关信息,添加成功。

功能实现

用户登陆成功进入主页面,点击添加按钮,输入信息,完成添加。

添加界面截图:

3.4查询

功能描述

用户查询信息的窗口,选择查询的日期,显示查询到的信息。

功能实现

    用户进入主页面以后,点击查询按钮,选择查询日期,点击Done完成查询工作,显示查询信息。

查询界面截图:

3.5主页面

功能描述

对系统的主题进行介绍,让用户对本系统有初步的了解。

功能实现

    用户进入系统的窗口

主页面截图:

4数据库结构

4.1数据表设计

表1:用户表

表2:账目明细表

5项目结构

将通过cash项目来介绍Android项目的目录结构。如下:

5.1 src文件夹

该文件夹存放.java的源代码。

52 gen文件夹

public class HelloWorld extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

}

该文件夹存放资源类,自动生成。下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。

5.3 libs文件夹

存放jar包

5.4 bin文件夹

编译生成的可执行文件  apk

5.5 res文件夹

存放资源文件,用于前台表现。资源目录,包含你项目中的资源文件并将编译进应用程序。向此目录添加资源时,会被R.java自动记录。新建一个项目,res目录下会有三个子目录:drawabel、layout、values。

5.6 AndroidManifest.xml

项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。AndroidManifest.xml将包含如下设置:application permissions、Activities、intent filters等。

6项目总结

通过为期一周的项目培训,学到了很多在学校里学不到的知识,了解了公司的运作、工作流程、项目分工,加深了对团队合作的深刻理解。由于此次实训时间紧张,项目最终实现的功能很少,却让我了解了即使开发一个很简单的项目,也是需要很多人分工完成的,可见团队合作的重要性,中软培训让我成长了很多。

 

第二篇:Android app项目开发步骤总结

做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。 
一 应用规划: 
    ※确定功能。 
    ※必须的界面及界面跳转的流程。 
    ※需要的数据及数据的来源及格式。 
    ※是否需要服务端支持。 
    ※是否需要本地数据库支持。 
    ※是否需要特殊权限。 
    ※是否需要后台服务。 
二 架构设计: 
    ※分层。 
    ※网络连接。 
    ※数据处理-xml、domain。 
    ※封装Activity。 
三 界面设计: 
    ※主界面确定。 
    ※模块界面、列表、查看、编辑界面。 
    ※菜单、按钮、对话框、提示信息。 
    ※界面总体颜色。 
四 数据操作和存储: 
    ※数据来源。 
    ※数据类型。 
    ※存储方式。 
五 业务实现: 
    ※客户端业务解析。 
六 页面跳转: 
    ※每个页面间的跳转。 
    ※菜单、按钮、事件等。 

关键字: android app, android develop, android summary

     从2010.04启动该项目到现在完成主要功能模块,分享一下开发历程和注意事项。 
     开发环境: ubuntu7.10 + eclipse 3.5 + sdk
     下面是开发总结: 

1.     基于源码级的SDK以及SDK升级注意事项

o    熟悉其如何做资源国际化

o    熟悉其如何支持不同屏幕大小,不同density介质

o    熟悉其主要的API以及支持的最低版本和不被再支持的API

o    了解其分层架构

o    升级SDK

§  确保该平台支持相关的cglib版本(否则要升级ubuntu)

§  简单容行的方式是remove ~/.android下的相关东西,remove先前的相关版本,再升级

§  部分Resources(如strings中有%s的)可能需要修改才能适应新的版本

§  新的sdk里可能不包括老的如2.01版本

2.     Emulator & Mobile

o    用adb shell 操作emulator

§  http://www.javaeye.com/topic/260042

o    push / pull file in emulator

§  Eclipse->window->Show View->File Explorer-> pull a file from the device(or push a file onto the device)

o    用 real mobile连接usb来直接测试(mobile 必须设置为develop/debug mode)

§  http://dimitar.me/how-to-connect-your-android-phone-to-ubuntu-to-do-developmenttestinginstallations-or-tethering/

o    emulator更能用于性能测试,功能测试。而mobile更适合触摸操作测试和一些View的真实展现测试

o    屏幕大小适应测试(枚举大,中,小),屏幕方向(枚举横,竖屏),任务切换测试

o    内存适应只能在mobile上做测试

3.     系统配置项

o    SharedPreferences存储位置及如何在emulator上手动修改

§  找到存储位置: \data\data\your package dir\shared_prefs\your xml files

§  按照上面的pull/push the file

o    SQLite(sqlite3)

§  默认存储位置:\data\data\your package dir\databases\your database name

§  按照上面的用adb shell 操作emulator做部分database的设计和数据更新

§  设计版本更新和升级

o    Other File I/O

§  assert下文件读取

§  文件权限以及读写

o    解读AndroidManifest.xml

§  application/process标识

§  最开始启动的activity

§  activity栈的形式(指定taskAffinity&launchMode="singleTask"),而且转向一个新的activity是用intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)的形式

§  需要的权限部分

§  支持的最低版本

4.     基于View,Context,Manager的开发

o    系统View & Layout(Layout也是View)

§  用View本身来做其他Layout间的一个分隔

§  常用的View&Layout: ListView,ScrollView,RelativeLayout,TableLayout

§  设计常用的style/theme用到的Drawable: http://idunnolol.com/android/drawables.html

§  常用的图片操作

§  指定颜色的渲染(setColorFilter)

§  剪裁

o    自定义View & Layout

§  Java代码 

1.  public class TouchListView extends ListView {  public TouchListView(Context context, AttributeSet attrs, int defStyle) {  

2.  } }   

§  Java代码 

1.  public class Toolbar extends LinearLayout {  

2.      public Toolbar(final Context context) {  

3.          super(context);  

4.      }  

5.        

6.      public Toolbar(final Context con, AttributeSet attrs) {  

7.    }  

8.    

9.  }  

o    Application,Activity,Service,View,Intent

§  Application,Activity,Service与Context的关系

§  View与Context的关系

§  用Application来做Activity,Service,View间的全局变量(这比自己用Singleton实现好)

§  用工厂模式使用Intent

§  做activity跳转

§  sendBroadcast(实时数据交换可借助Thread+ BroadcastReceiver)

o    WindowManager 、PackageManager 等的使用

2.     网络IO

o    java.net

o    android.net

o    org.apache.http

§  如果没有让他在AsyncTask中操作,则他的TimeOut设置必须少于5秒(为ANR等待时间)

§  java.net.UnknownHostException

§  如果发生在emulator,可参考: http://www.javaeye.com/topic/521023

§  如果发生在mobile,则一般是DNS解析问题,要么允许用户再重试操作,要么把Host的域名改为public ip address

3.     绘图部分

o    在View上绘图

§  只在原来View上加边框等

§  Java代码 

1.  @Override  

2.      protected void dispatchDraw(Canvas canvas) {}  

§  自定义View

§  Java代码 

1.  @Override  

2.      protected void onDraw(Canvas canvas) {  

o    在Bitmap上绘图

§  Java代码 

1.  Bitmap result = Bitmap.createBitmap(48,48, Config.ARGB_8888);    

2.           Canvas canvas =  new   Canvas(result);    

3.  ...  

4.  canvas.drawBitmap(result, rect, rect, paint);  

2.     动画

o    帧动画

§  控制侦速率在25FPS以让其更流畅

o     渐变动画

§  平移

§  缩放

§  旋转

§  透明

3.     ANR

o    构建消息以及消息循环处理Handler

o    使用AsyncTask

4.     Exception & UncaughtException

o    使用UncaughtExceptionHandler

5.     引入第三方jar以及与其他app共享数据

o    通过add user library方式添加第三方jar

o    Content Provider的使用 

6.     性能优化/调优 

o    基于View的优化http://dl.javaeye.com/topics/download/774b3e9e-1c48-33bd-bc9d-5c27da998181

o    代码级的规范

o    Method级的调优

§  Method Profiling(如果直接usb连接mobile,需要root权限作此项)

o    GC分析

§  使用Allocation Tracker

相关推荐