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 

用adb shell 操作emulator 
 http://www.javaeye.com/topic/260042 

push / pull file in emulator 
 
Eclipse->window->Show View->File Explorer-> pull a file from the device(or 
push a file onto the device) 

用 real mobile连接usb来直接测试(mobile 必须设置为develop/debug mode) 
 
http://dimitar.me/how-to-connect-your-android-phone-to-ubuntu-to-do-devel
opmenttestinginstallations-or-tethering/ 
o emulator更能用于性能测试,功能测试。而mobile更适合触摸操作测试和一些View的真
实展现测试 
o 屏幕大小适应测试(枚举大,中,小),屏幕方向(枚举横,竖屏),任务切换测试 o 
内存适应只能在mobile上做测试 
3. 
系统配置项 

SharedPreferences存储位置及如何在emulator上手动修改 
 找到存储位置: \data\data\your package dir\shared_prefs\your xml files  按照上面的pull/push the file 

SQLite(sqlite3) 
 默认存储位置:\data\data\your package dir\databases\your database name  
按照上面的用adb shell 操作emulator做部分database的设计和数据更新 



 设计版本更新和升级 

Other File I/O 
 assert下文件读取  文件权限以及读写 

解读AndroidManifest.xml 
 application/process标识  最开始启动的activity 
 
activity栈的形式(指定taskAffinity&launchMode="singleTask"),而且转向一个
新的activity是用intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)的形式 
 需要的权限部分  
支持的最低版本 
4. 
基于View,Context,Manager的开发 


系统View & Layout(Layout也是View) 
 用View本身来做其他Layout间的一个分隔 
 常用的View&Layout: ListView,ScrollView,RelativeLayout,TableLayout  
设计常用的style/theme用到的
Drawable: http://idunnolol.com/android/drawables.html 
 
常用的图片操作 
 指定颜色的渲染(setColorFilter) 
 
剪裁 
自定义View & Layout 
 
Java代码  
 
public class TouchListView extends ListView { 
public TouchListView(Context context, AttributeSet attrs, int defStyle) {   
 
} }    
 
Java代码
  public class Toolbar extends LinearLayout {  
      public Toolbar(final Context context) {   
         super(context);   
     }   
        
 
    public Toolbar(final Context con, AttributeSet attrs) {   
   }   
    
 }   
  


Application,Activity,Service,View,Intent 
 Application,Activity,Service与Context的关系  View与Context的关系 
 
用Application来做Activity,Service,View间的全局变量(这比自己用Singleton
实现好) 
 
用工厂模式使用Intent 
 做activity跳转 
 
sendBroadcast(实时数据交换可借助Thread+ BroadcastReceiver) 

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. 绘图部分 

在View上绘图 
 
只在原来View上加边框等 
 
Java代码  
1. @Override   
2. 
    protected void dispatchDraw(Canvas canva
s) {}   
  
 
自定义View 
 
Java代码  
1. @Override   
2.     protected void onDraw(Canvas canvas) {   
  

在Bitmap上绘图 
 
Java代码 


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


















2.          Canvas canvas =  new   Canvas(result);     3. ...   
4. canvas.drawBitmap(result, rect, rect, paint);   
  
2. 
动画 

帧动画 
 控制侦速率在25FPS以让其更流畅 

 渐变动画 
 平移  缩放  旋转  
透明 
3. 
ANR 
o 构建消息以及消息循环处理Handler o 
使用AsyncTask 
4. 
Exception & UncaughtException 

使用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权限作此项) 

GC分析 
 
使用Allocation Tracker 


你可能感兴趣的:(android)