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

一 应用规划: 

    ※确定功能。 

    ※必须的界面及界面跳转的流程。 

    ※须要的数据及数据的来源及格式。 

    ※是否须要服务端支持。 

    ※是否须要本地数据库支持。 

    ※是否须要特殊权限。 

    ※是否须要后台服务。 

二 架构设计: 

    ※分层。 

    ※网络连接。 

    ※数据处理-xml、domain。 

    ※封装Activity。

三 界面设计: 

    ※主界面确定。 

    ※模块界面、列表、查看、编辑界面。

※菜单、button、对话框、提示信息。

※界面整体颜色。

四 数据操作和存储: 

    ※数据来源。

※数据类型。 

    ※存储方式。

五 业务实现: 

    ※client业务解析。 

六 页面跳转: 

    ※每一个页面间的跳转。 

    ※菜单、button、事件等。

keyword: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代码 

,, 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

 

 源文档下载

Android_app项目开发步骤总结的更多相关文章

  1. EJB3.0高速入门项目开发步骤

    EJB3.0开发步骤 1.   开发环境 IDE开发工具:Eclipse Java EE IDE for Web Developers EJB容器:jboss-4.2.3.GA 后台数据库:MysQL ...

  2. 总结android项目的基本开发步骤(转帖)

    总结android项目的基本开发步骤(转帖)   做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流.一 应用规划:    ※确定功能.    ※必须的界面及界面跳转的流程. ...

  3. Struts2入门项目开发小步骤

    Step1: Struts2的获取和添加到项目中: 在官方网站:http://struts.apache.org 获取Struts的其中一个版本. 在开发项目之前,需要添加struts2的类库支持,也 ...

  4. 如何使用Worktile进行敏捷项目开发管理

    Worktile在任务管理上采用了看板视图,非常适合进行敏捷项目开发管理.事实上,在开发Worktile的过程中,我们也是自产自销,使用Worktile管理Worktile本身的开发过程,在本文中跟大 ...

  5. [转]基于Starling移动项目开发准备工作

    最近自己趁业余时间做的flash小游戏已经开发得差不多了,准备再完善下ui及数值后,投放到国外flash游戏站.期间也萌生想法,想把游戏拓展到手机平台.这两天尝试了下,除去要接入ane接口的工作,小游 ...

  6. (转)一个JavaWeb项目开发总结

    原文地址:http://www.cnblogs.com/lzb1096101803/p/4907775.html 一.学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml-&g ...

  7. iOS应用内付费(IAP)开发步骤列表

    iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...

  8. 第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合

    说明:本系列文章主要是对自己在一家大型互联网公司实习的过程中对所学知识的总结!参与的是实际中使用的上线项目. 代码的github地址:https://github.com/zhaojigang/ssm ...

  9. Django实际站点项目开发经验谈

    开发了两个月的Django站点正式上线了,看着网站从无到有,从前端到后台,从本地开发到环境部署,一点一滴的堆砌成型,着实带给我不小的乐趣. Django站点介绍: 开发环境:阿里云服务器centos6 ...

随机推荐

  1. 08-使用for循环输出杨辉三角(循环)

    /** * 使用循环输出杨辉三角 * * */ public class Test6 { public static void main(String[] args) { // 创建二维数组 int ...

  2. PHP学习之-面向对象

    PHP学习之-面向对象 1.什么是对象 "世界万物皆对象",一切可以被抽象出来的东西都是对象.像花,草.看不到的"概念"都是对象. 2.对象的基本组成 a.属性 ...

  3. Visual Studio 必备神器---转

    会使用工具是人类文明的一大进步,今天敏捷大行其道,好的工具可以大大的提高生产力,这里说的工具都是VS平台上的扩展工具,一些机械的部分可以交给工具去处理,自己多关注其他部分.下面分享下我觉得不错的工具, ...

  4. Windows8 Metro快捷键 | Win8迷

    Windows8 Metro快捷键 | Win8迷   Win + Q : 打开 搜索面板 Win + C : 打开屏幕右侧的Charms简化菜单 Win + 空格 : 切换输入语言和键盘布局  

  5. Re-installation failed due to different application signatures.

    出现此问题是由于apk的签名不同所致(假设不知道签名是什么  请看上一篇Android应用程序签名 debug签名).假设你是使用的自己的签名,那就是你新版本号的apk使用的签名文件与上一版本号(也就 ...

  6. Linear Regression(线性回归)(二)—正规方程(normal equations)

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 在上篇博客中,我们提出了线性回归的概念,给出了一种使代价函数最小的 ...

  7. 类CL_ABAP_TYPEDESCR,动态取得运行时类型

    有时候我们要在程序运行的时候取得某个内表或者某个结构它的属性或者它的字段的属性,可能通过类CL_ABAP_TYPEDESCR和它的子类取得指定内表的属性.类CL_ABAP_TYPEDESCR和它的子类 ...

  8. [Ext JS 4]性能优化

    一般的优化技巧 1. 检查你定义的时间监听器 正确的设置事件监听器对性能会有很大的影响. 举例来说, 在定义一个store的时候,设置一个load 的事件去触发从后台读取数据,如果设置single 的 ...

  9. Eclipse shift + ctrl + F 不好用

    出现 shift + Ctrl + F  整理代码没有反应的情况,先检查下输入法是否是英文的,切换英文后再尝试.

  10. perl 异步超时 打印错误

    #!/usr/bin/perl use AnyEvent; use AnyEvent::HTTP; my $cv = AnyEvent->condvar; sub doit{ my $url = ...