第一篇:Android平台个人银行账目软件-开题
需要详细请联系上传者
一、综述本课题国内外研究动态,说明选题的依据和意义
1.1国外手机银行发展现状
国外手机银行起步是比较早的,在96年捷克斯洛伐克首先推出了手机银行业务.现在手机银行在欧美、日韩发展比较成熟。从模式上比较,日本是以移动运营商为主导。而韩国则是以银行为主导,欧美的那些移动运营商在移动银行业务其实不多。韩国的手机银行业务现阶段已成熟。早在2002年,韩国已经有18家银行提供手机银行服务,全年交易超过109万次,仅在2002年9月就有9万次交易发生。目前韩困所有的零售银行都能提供手机银行业务,至2009年,韩国手机银行用户规模已达到1115.5万人。日本最先建立了手机钱包的运营模式,普及率和公众接受度比较高。现在大约有5500万日本手机用户开通了电子支付功能,这个数字几乎占到了日本总人口的一半。手机银行服务一经推出就在银行信息电子化水平最高的美国大行其道。2009年美围手机银行用户达到2540万人.较2008年增长6%,占当年手机用户的10.8%。艾瑞咨询的统计数据发现,2010年美国手机银行用户占其手机用户的比例将达到19.6%,到2013年增长至44.4%。
1.2我国手机银行发展现状
手机具备用户精准锁定、方便携带以及随时在线等优势,银行可以便捷地和客户保持沟通,比如账户金额变动情况、附近的ATM位最、利率变动、金融资讯及投资理财信息等。根据《中国电子商务研究中心发布的中国电子商务市场数据监测报告》显示,截至到2010年上半年,中国移动电子商务实物交易规模达到13亿元,用户规模已达到5531.5万。我国手机银行经过短短10年的发展,初步具备了一定的规模和效应,但是在发展过程中也存在部分的不足。手机银行快速发展,但是规模和占比与发达国家存在较大差距。手机银行短短十年来已增长了2000多万户,呈高速发展态势。但是相对于8亿移动电话用户,手机银行用户仅有2000万;而人口不到我国1/10的口本.2008年用户就超过4900万,两者有较大差距。2.手机银行业务覆盖范广,能为用户提供全方位的在线服务,实际使用率低。根据http://xmqbysj.com网站统计,这个数量还在不断增加。
在手机银行的操作过程中,用户通过SIM卡上的菜单对银行发出指令后,SIM卡根据用户指令生成规定格式的短信并加密,然后指示手机向GSM网络发出短信,GSM短信系统收到短信后,按相应的应用或地址传给相应的银行系统,银行对短信进行预处理,再把指令转换成主机系统格式,银行主机处理用户的请求,并把结果返回给银行接口系统,接口系统将处理的结果转换成短信格式,短信中心将短信发给用
户。
随着互联网络与移动通信技术发展的不断推进,传统的银行服务方式已被赋予了新的内涵,手机银行业务正是顺应这种历史潮流而产生的。手机银行又被称为移动银行.是银行和移动运营商共同推出的一个新的服务项目,它将无线通信技术的3A(任何时间、任何地点、任何方式)优势与现有金融业务相结合,为客户提供更方便、更快捷、更随心所欲的服务。
目前手机银行有多种实现方案,如SMS,STK卡,USSD.WAP等,与这几种实现方式相比,基于J2ME技术的手机银行具有用户界面友好、输入输出方便以及安全性高的优点,同时手机终端的功能类似可移动仁网的电脑.充分利用了用户固定的互联网使用习惯,提供给用户高性能、多方位的移动互联网使用体验。基于此.本系统客户端采用J2ME技术来实现,考虑到系统的兼容性以及JAVA语言的天然优势,服务器端采用Servlet组件技术。
1.3选题依据和意义
经过多年的发展,第三代数字通信(3G)技术获得了广泛的接受,它为移动终端用户带来了更快的数据传输速率。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google与包括中国移动、摩托罗拉在内的三十多家技术和无线应用的领军企业组成的开发联盟为此于2007年11月推出了一个专为移动设备设计的软件平台——Android。
Android是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。Android系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层。
Android最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且还支持各种可扩展的用户体验,Android里面具有非常丰富的图形系统,对多媒体的支持功能和非常强大的浏览器。
Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定特色化的产品,因此,它具有很大的市场发展潜力。
二、研究的基本内容,拟解决的主要问题:
研究的基本内容
Android
以Java语言为基础,结合Android移动开发平台,并利用Android提供的SDK,实现在Android平台上运行的手机银行账目管理,方便广大手机用户更加便捷地日常收入、支付、统计、查询。该手账目管理系统面向所有的Android手机用户,为他们提供更实际便捷的手机服务。该账目的数据管理功能是该软件的一个特色,可以实现账目数据的查询操作。我相信这款软件,可以好的满足Android手机用户对个人银行账目管理的需求。
在对Android手机账目管理软件进行详细的系统设计与讨论时,对功能进行详细的划分并对其功能做了详细的介绍,列出了一些主要代码和流程图。此部分为论文的核心。
Android平台个人银行账目软件是基于Android手机平台,运用Java语言,将PC上的应用在手机上来实现,开发出针对使用Android平台的理财系统。
在当今的生活中,理财已成为人们日常生活中不可或缺的一部分。本软件的开发就是为了方便手机用户能够更加简单的对自己的银行账目进行管理,能够对自己的经济有一个更好的把握。
Android 作为谷歌企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。我们发现,全球为数众多的移动电话用户从未使用过任何基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。
SQLite数据库
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月.至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
XML技术
XML是一种可扩展标记语言,其设计的宗旨是传输和存储数据[10],其焦点是数据的内容,本系统使用XML文件主要作为数据库存储数据和导航等等。
系统功能需求
本软件主要为用户提供一个数据插入、数据查询、数据删除的功能,用户可以通过android手机数据库对数据进行相应的操作,主要功能包括:
l
别。日常收入,用户可以按照日常收入日期、金额、类别、备注进行数据的增加。4 日常支出,用户可以按照日常收入日期、金额、类别、备注进行数据的增加。5 收入支出统计,按照一定的数据查询条件,用户可以对数据进行统计。计算器,用户可以对活期存款、定期存款进行相应的计算求其增长值。收入查询,用户可以输入相应的查询条件进行数据查询,同样可以进行数据查询,并且可以删除相应的数据。支出查询,支出查询类似类似于收入查询,同样可以进行查询、删除操作。9 个人信息,用户可以增加自己的个人信息,同时可以修改登录密码。
拟解决的主要问题
(1)如何使手机与用户之间界面友好。运用好java、xml提高移动客户端的可用性和安全性。
(2)在编码过程中,如何在不同布局文件之间传递参数,以及在系统中如何应用XML文件。
(3)如何应用java技术解决控件与布局文件之前访问问题,提升用户使用效率,优化移动端性能。
用户登录,进入本软件,弹出密码对话框,提示用户输入密码,登录本软件 2 类别维护,用户可以增加日常收入、日常支出类别,并且可以删除相应的类
三、研究步骤、方法及措施:
3.1 研究的步骤
1确定论文的题目研究的主要内容
2查看收集相关题材的各类文献
3收集需求信息制定详细需求说明书
4搭建系统框架完成系统所要求实现的功能的编码
5对系统进行性能测试
6完成毕业论文
3.2 研究方法及措施
1查阅个人银行账目管理系统的相关文献资料。
2完成个人银行账目管理系统的需求流程分析和详细设计。
3文档主要利用Microsoft Word 2003书写。
四、研究工作进度:
序号
6时间 2014-1-6--2014-2-1 2014-2-2--2014-2-15 2014-2-16--2014-3-1 2014-3-1--2014-4-5 2014-4-6--2014-4-30 2014-5-1--2014-5-10 2014-5-11--2014-5-31 内容 外文翻译查阅文献撰写文献综述 编写开题报告 系统需求设计完成表结构设计 个人银行账目管理系统的设计和详细设计 编码实现个人银行账目管理系统 完成系统测试和性能测试开始进行论文编写 完成毕业论文准备答辩
五、主要参考文献:
[1]顾宝兴,姬长英,王海青,田光兆,郑青根,王玲.农用开放式智能移动平台研制——农业机械学报第43卷第4期2012.04.032
[2]吴芳芳.基于移动平台的广告营销方法——新闻爱好者201 1·8(上半月)
[3]李玲.银行个人结算账户管理工作存在的问题及建议——会计园地2012/03
[4]余云.试论如何完善个人银行结算账户的管理——投资理财
[5]吴敏,刘萍.基于J2ME和J2EE的手机银行设计与实现——中文核心期刊《微计算机信息》(嵌入式与SOC)2006年第22卷第7_2期
[6]胡现玲。我国手机银行发展现状与.对策分析——《经济师》2011年第1期
[7]汪璐.3G时代手机银行的发展思路——郑州航空工业管理学院学报2013年6月第31卷第3期
[8]崔凯.基于移动平台的远程用户体验方法与工具研究 ——2010湖南师范大学:计算机应用技术
第二篇:开题报告(银行账目管理信息系统)
开题报告范文(银行帐目管理信息系统)
发布时间:2009-04-12 来源:毕业论文网
一.编写目的
《银行帐目管理信息系统》开题报告的编写目的是通过对《银行帐目管理信息系统》中各模块的分析,确定系统的体系结构,模块内容,技术方法,明确各模块的功能和数据流,为程序编写定下宏观体系框架。
二.开发背景
随着科技发展和社会进步,尤其是计算机大范围的普及,计算机应用逐渐由大规模科学计算的海量数据处理转向大规模的事务处理和对工作流的管理,这就产生了以台式计算机为核心,以数据库管理系统为开发环境的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用,特别是在银行帐目管理之中的应用日益收到人们的关注。
近年来我国信息产业发展迅速,手工管理方式在银行帐目管理等需要大量事务处理的应用中已显得不相适应,采用IT技术提高服务质量和管理水平势在必行。目前,对外开放必然趋势使银行业直面外国银行巨头的直接挑战,因此,银行必须提高其工作效率,改善其工作环境。这样,帐户管理的信息化势在必行。
在传统的银行帐户管理中,其过程往往是很复杂的,繁琐的,帐户管理以入帐和出帐两项内容为核心,在此过程中又需要经过若干道手续,因为整个过程都需要手工操作,效率十分低下,且由于他们之间关联复杂,统计和查询的方式各不相同;且会出现信息的重复传递问题,因此该过程必须实现信息化。
我们的系统开发的整体任务是实现银行帐户管理的系统化、规范化、自动化和智能化,从而达到提高企业管理效率的目的。三.可行性研究
可行性研究能使新系统达到以最小的开发成本取得最佳的经济效益。可行性研究的目的,是根据开发管理信息系统的请求,通过初步调查和系统目标分析,对要开发的银行帐户管理信息系统从技术上、经济上、资源上和管理上进行是否可行的研究。这是一项保证资源合理使用、避免失误和浪费的重要工作。
⊙ 经济上的可行性:主要分析成本与收益、投资效果等。
⊙ 技术上的可行性:要分析技术力量、计算机性能、通讯网络和系统条件等。
⊙ 资源上的可行性:主要指管理、经费能否得到保证。
⊙ 管理上的可行性:如帐户管理水平、数据收集可能性、规章制度健全程度和领导对发展系统的态度。
可行性分析已经写成可行性研究报告,并报请领导及有关专家审议,通过后进入了以下需求分析阶段。
四.系统需求分析
用户的主要需求有帐户管理、取款机管理、用户查询、查询统计等几个方面:
(1)帐户管理方面:存款、取款、开户、销户、修改信息、办卡、挂失卡;
(2)取款机信息管理方面:管理员管理查询和维护、客户查询和取款等功能;
(3)用户查询方面:用户希望便于查询自己帐户的信息。
(4)查询统计方面:VIP用户统计、ATM业务量统计、异动查询统计、持卡总量消费统计、工作量负荷统计等功能。
五.要解决的关键问题
(1)要解决的关键问题之一:数据的安全性问题
解决办法为:采用DES加密算法;(2)要解决的关键问题之二:数据的一致性问题
解决办法为:使用触发器;
(3)要解决的关键问题之三:系统查找数据的速度问题
解决办法为:采用哈希算法进行数据的快速查找。
六.系统定义
通过该银行账户管理系统,使银行的账户管理工作系统化、规范化、自动化,从而达到提高账户管理效率的目的。系统开发的任务是使办公人员可以轻松快捷的完成对账户管理的任务。
1、系统要求:
(1)系统应符合银行账户管理的规定,满足银行相关人员日常使用的需要,并达到操作过程中的直观,方便,实用,安全等要求;
(2)系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充,维护;
(3)系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作;
(4)尽量采用现有软件环境及先进的管理系统开方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。
2、系统功能:
系统主要实现了:帐户管理、取款机管理、用户查询、查询统计等功能,◆帐户管理模块:存款、取款、开户、销户、修改信息、办卡、挂失卡;
◆用户查询模块;
◆取款机信息管理模块:管理员管理查询和维护、客户查询和取款等功能; ◆查询统计模块:VIP用户统计、ATM业务量统计、异动查询统计、持卡总量消费统计、工作量负荷统计等功能。
七.系统体系结构
在系统功能分析的基础上,做系统功能模块图如下:
八.运行环境
操作系统:Window 2000 IE5.0 开发平台:Visual ForPro 6.0
第三篇:Qualcomm平台android开发总结
1、高通平台android开发总结.7 1.1 搭建高通平台环境开发环境.7 1.2 搭建高通平台环境开发环境.7 1.2.1 高通android智能平台概述.7
1.2.1.1 什么是L4,REX,BREW,AMSS以及相互之间的关系.7 1.2.2 选择合适的源代码以及工具.8
1.2.2.1 获取经过高通打补丁的android 源代码.8 1.2.2.2 获取高通针对不同处理器的vendor源代码.9 1.2.2.3 获取 modem 源代码.9
1.2.2.3.1 高通 modem 源代码编译前的修正.13 1.2.3 建立 Android 开发环境.14 1.2.4 建立 modem 开发环境.15 1.2.4.1 补充.16
1.2.4.1.1 获取 licenses 16
1.2.4.1.2 Flex 简单使用指南.16 1.2.4.1.3 启动 license 服务器.18
1.2.4.1.4 license 没有办法从服务器获取的几种情况.18 1.2.4.1.5 破解 rvds 的license 19 1.2.5 在高通开发板上烧录文件系统.19
1.3 高通平台,android和 modem 编译流程分析.21 1.3.1 android代码编译流程分析.21 1.3.1.1 编译工具检测.22 1.3.1.1.1 22
1.3.1.2 appsboot.mbn 生成过程解析.22
1.3.1.3 boot.img 生成过程解析,怎样手动生成 boog.img 28 1.3.1.4 编译过程存在的问题.32
1.3.1.4.1 prelinkmap 的时候 base 0xaff00000 out of range 32 1.3.1.4.2 LOCAL_SDK_VERSION 使应用程序不能访问hide的api 32 1.3.1.4.3 armv5te-vfp 导致一些游戏运行不了.32 1.3.2 分布式编译 android 代码.33 1.3.3 modem 代码编译流程分析.33
1.3.3.1 单独编译某个模块(如:qcsbl oemsbl).34 1.3.3.2 $(TARGETDIR)/exist 规则解析.36 1.3.3.3 setup规则解析.36
1.3.3.3.1 corebsp_create_incpaths 36 1.3.3.3.2 create_incpaths 36 1.3.3.3.3 amsssetup 36
1.3.3.3.4 amsslinkaddress 36 1.3.3.3.5 firmware 38 1.3.3.4 deps规则解析.38
1.3.3.5 corebsp_build规则解析.38 1.3.3.5.1 corebsp_build_action 38 1.3.3.5.1.1 corebsp_scons 规则.39 1.3.3.5.1.1.1 corebsp_scons_start 39 2.3.3.5.1.1.1 corebsp_scons_action 39
1.3.3.5.1.1.2.1 命令 pboot_gen_elf image_header pboot_add_hash 解析.40
1.3.3.5.1.1.2.2 env.BinBuilder 过程解析.41 1.3.3.5.1.1.2.3 env.MbnBuilder 过程解析.41
1.3.3.5.1.1.2.4 env.MbnDummyBuilder 过程解析.42 1.3.3.5.1.1.2.5 fsbl.mbn 生成过程解析.43 1.3.3.5.1.1.2.6 dbl.mbn 生成过程解析.43
1.3.3.5.1.1.2.7 AMSS_AABBQOLYM.mbn 生成过程解析.43 1.3.3.5.1.1.2.8 adsp.mbn 生成过程解析.43 1.3.3.5.1.1.2.9 osbl.mbn 生成过程解析.44
1.3.3.5.1.1.2.10 enandprg_AABBQOLYM.mbn 生成过程解析.44 1.3.3.5.1.1.2.11 nandprg_AABBQOLYM.mbn 生成过程解析.45 1.3.3.5.1.1.2.12 emmcbld.mbn 生成过程解析.45 3.3.3.5.1.1.1 corebsp_scons_done 46 1.3.3.5.1.2 corebsp 46
1.3.3.5.2 corebsp_create_incpaths 46 1.3.3.5.3 corebsp_setup 46 1.3.3.6 libs 46
1.3.3.7 copybar规则解析.47 1.3.3.8 exe规则解析.47
1.3.3.8.1 CORELIBS_AABBQOLYM.mbn生成过程解析.47 1.3.3.8.2 amss.mbn 生成过程解析.47 1.3.3.9 bldprod规则解析.48
1.3.3.10 create_mem_feat_html规则解析.48 1.3.3.10.1 50
1.3.3.11 partition规则解析.50
1.3.3.11.1 eMCC 启动和 NAND 启动的分区格式是不一样的,如果是 eMCC 启动,多了编译选项:.50
1.4 高通平台 7630 启动流程分析.52 1.4.1 启动流程概述.52 1.4.2 pbl 流程.52 1.4.3 dbl 流程.52 1.4.4 osbl 流程.54
1.4.4.1 osbl 装载 appsbl 过程分析.56
1.4.5 appsbl 流程(源代码在 android中).56
1.4.5.1 aboot_init 过程分析(需要侧重关心的部分).58 1.4.5.1.1 fastboot 模式分析.61
1.4.5.1.1.1 什么是 fastboot 模式.61
1.4.5.1.1.2 fastboot 模式与 recovery 模式的区别.61 1.4.5.1.1.3 怎样进入 fastboot 模式.62
1.4.5.1.1.4 android 系统手机刷机过程分析(补充知识)62 1.4.5.1.2 appsbl 引导 android 系统.63
1.4.5.1.2.1 Android 系统启动过程中存在的问题.67 1.4.5.1.1.1.1 linker 问题导致系统无法启动.67 1.4.6 AMSS 流程.69
1.5 android 系统重启关机流程分析.82 1.5.1 c语言中调用 reboot 函数.82 1.5.2 通过 adb 让系统重启.82
1.5.3 fastboot 模式下系统重启.83 1.5.4 系统关机.84
1.5.5 内核中的系统调用 reboot 85 1.6 软件调用流程分析.89 1.6.1 设置sim卡状态.89 1.6.2 设置背光.90 1.6.3 获取电池信息.90
1.7 python scons 语法学习.94 1.8 python 语法学习.94 1.8.1 Python中文全攻略.94
1.8.2 推荐一款Python编辑器.94
1.8.3 使用 pyExcelerator 读 Execl 文件.94 1.8.4 xlrd 解析 xls 文件.95 1.8.5 xlrd 生成 xls 文件.95
1.9 Python 语言之 scons 工具流程分析.95 1.9.1 Program 方法.100 1.9.2 Library 方法.100
2、高通常用工具使用.101 2.1 QPST 101 2.2 QXDM 101 2.3 QCAT 101
3、工程模式.101
4、Android 系统更新升级总结.104 4.1 刷机基本知识.104
4.1.1 各品牌代表手机刷机模式进入方法.104 4.1.1.1 HTC G1 104
4.1.1.2 三星 Galaxy i7500 104 4.1.1.3 Google Nexus One 105 4.1.2 fastboot 模式.105
4.1.2.1 fastboot 模式概述.105
4.1.2.2 PC端fastboot 命令分析.106 4.1.2.2.1 命令选项 –w –s-p –c 106 4.1.2.3 手机端fastboot 命令分析.107 4.1.2.3.1 boot 107 4.1.2.3.2 erase 107 4.1.2.3.3 flash 107 4.1.2.3.4 continue 107 4.1.2.3.5 reboot 107
4.1.2.3.6 reboot-bootloader 107 4.1.2.3.7 getvar 107 4.1.2.3.8 download 108 4.1.2.3.9 update 108
4.1.2.3.9.1 system/core/fastboot/fastboot.c:294: 108 4.1.2.3.9.2 fprintf(stderr, “archive does not contain '%s'n”, name);108 4.1.2.4 fastboot 模式流程分析.108 4.1.3 recovery 模式.108
4.1.3.1 recovery 模式概述.108 4.1.3.2 软件升级包.109
4.1.3.3 recovery v1跟recovery v2的区别.109 4.1.3.4 软件升级脚本语法解析.109 4.1.3.4.1.1 mount 110 4.1.3.4.1.2 getprop 111
4.1.3.4.1.3 file_getprop 111 4.1.3.4.1.4 assert 111 4.1.3.4.1.5 format 111
4.1.3.4.1.6 apply_patch_check 111 4.1.3.4.1.7 apply_patch_space 111 4.1.3.4.1.8 apply_patch 111
4.1.3.4.1.9 package_extract_file 112 4.1.3.4.1.10 ui_print 112
4.1.3.4.1.11 META-INF/com/google/android/update-script 脚本分析.1124.1.3.4.2 Recovery 模式中 install_package 函数解析.117 4.1.3.5 Recovery 流程分析.118 4.1.3.5.1 恢复出厂设置.118 4.1.3.5.2 系统更新流程.119
4.1.3.5.3 通过sd卡实现刷机.121 4.1.3.6 系统升级包案例分析.122 4.1.4 工程模式(HBoot)模式.122 4.1.4.1 HBOOT降级方法.122
4.2 如何制作升级包 update.zip 123 4.2.1 手动制作升级包.123 4.2.2 自动制作升级包.123 4.3 Android 签名机制.125
4.4 android 文件系统权限概述.125 4.4.1 获取手机root权限.127 4.4.2 adb默认权限分析.128
4.4.3 adb root命令切换到 root 权限.129 4.4.4 挂载系统分区为读写(remount)130
4.4.5 通过修改 boot.img 获取 Nexus One 权限.132 4.5 系统应用移植.132
4.5.1 Android 2.2在线升级的移植.132
4.5.2 解决donut Gtalk、Market登录不了的问题.133 4.5.3 apk反编译问题总结.133
4.5.4 系统重启.133
5、高通linux内核驱动开发.133 5.1 添加串口调试.133 5.2 Sensor 传感器.133
5.3 USB 枚举 USB Composition 134 5.4 USB 枚举 USB Composition 136
6、从 android 源代码制作 sdk 136 6.1 linux sdk 137 6.2 windows sdk 137
7、程序安装与调试.138
8、android 框架流程分析.138 8.1 屏幕显示相关.138 8.1.1 屏幕分辨率.138 8.1.2 屏幕模式.139
8.2 Android 开机充电.141 8.3 Android 开机动画.141 8.3.1 内核开机画面.141 8.3.2 文件系统开机画面.141
8.3.2.1 开机显示的 ANDROID 文字.141 8.3.2.2 ANDROID 发光动画.142
8.3.2.3 initlogo.rle 文件分析.143
8.3.2.4 bootanimation.zip 文件分析.143 8.3.3 三星I9000 开机动画.144 8.4 JNI调用流程.145
8.5 Android 开机铃声.145 8.6 GPS 导航.145
8.6.1 GPS导航原理.145 8.6.2 GPS导航软件.145
9、高通modem框架流程分析.146 9.1.1 添加自定义rpc调用.146
9.1.1.1 从AP端获取modem的系统分区信息.146 9.1.2 添加自定义 AT命令.146
10、linux 应用.146
10.1 嵌入式Linux通过帧缓存截图包括Scheduling(调度), File system(文件系统), Networking(网络), Device driver(设备驱动程序), Memory management(存储管理), Paging(存储页面管理)-都在内核中完成.一直到现在广泛应用的操作系统,如UNIX,Linux,和Windows还大都是monolithic kernel操作系统.但随着操作系统变得越来越复杂(现代操作系统的内核有一两百万行C程序是很常见的事情),把所有这些功能都放在内核中使设计难度迅 速增加.微内核是一个与Monolithic Kernel相反的设计理念.它的目的是使内核缩到最小,把所有可能的功能模块移出内核.理想情况下,内核中仅留下Address Space Support(地址空间支持),IPC(Inter-Process Communication,进程间通讯),和Scheduling(调度),其他功能模块做为用户进程运行。
REX 是在 L4 之上封装的服务,是一个抢占式,多任务的RTOS,所有的任务都以task的形式存在,REX提供包括任务创建,同步,互斥,计时器,中断控制等功能的 API,这里的task实际上就是我们的线程,每个 task对应着一个线程。REX维护一个task list(双向链表),始终运行高优先级的task。products里面所有的服务包括3g协议栈等都是以task的形式跑在rex之上的。而Brew的话是运行的环境,跟Java 有点儿类似,相当于是一个虚拟机。AMSS――高级的移动用户软件(Advanced Mobile Subscriber Software)技术,是一种新的软件架构,是对原来软件架构 DMSS 的升级。AMSS源代码实际上是QC BREW(Binary Runtime Environment For Wireless)平台的的底层部分,去掉了为应用程序提供接口的AEE(application execution environment)部分,高通在Dual Proc芯片上的其他平台基本上都是采用的这样的架构。
参考文档:
微内核操作系统及L4概述
http://wenku.baidu.com/view/90929762caaedd3383c4d311.html MSM平台上的AMSS http://blog.csdn.net/yili_xie/archive/2010/01/04/5129469.aspx
1.2.2 选择合适的源代码以及工具 要编译出可供烧写使用的镜像文件需要三部分代码: 1)获取经过高通打补丁的 android 源代码 2)获取高通针对不同处理器的 vendor 源代码 3)获取 modem 源代码
1.2.2.1 获取经过高通打补丁的android 源代码 网址:
https://www.xiexiebang.com1312 Chipset(such as QSC6270):MSM7227-1 RF chipset(such as RGR6240):RTR6285 PMIC chipset(such as PM7540):PM7540 WCMDA Supported Bands(900,1900,2100„.if support WCDMA):2100 CMDA Supported Bands(450,850,1900,2100„ if support CDMA):not suport OS(Brew,BMP,Android,WM,ThinUI(no UI)„):android froyo OS version(Android Donuts„): android froyo
1.2.2.3.1 高通 modem 源代码编译前的修正
从高通获取的源代码直接编译会存在一些问题,以下为可能的问题以及解决方法:
1)为相应的脚本加上编译选项
vim./AMSS/products/7x30/build/ms/xxxxxx.cmd 加上: BUILD_UNIX=yes
2)如果编译过程出现.pl 文件没有执行权限而退出,那么为工程下面所有的 pl 文件加上可执行属性,命令:
find./-name “*.pl” |xargs chmod 755
3)无法找到需要的 pl 脚本解析器
vim./AMSS/products/7x30/tools/build/depgen.pl 修改
#!/pkg/perl/5.6.1/bin/perl-w 为
#!/usr/bin/perl-w
4)如果出现错误:
“AMSS/products/7x30/core/bsp/build/data/incpathsaaabqmlym.py”, line 14 IndentationError: expected an indented block 修改文件:./AMSS/products/7x30/core/bsp/build/scripts/genpaths.pl 内容:
#if($line =~ /^# makefile(from/)为:
if($line =~ /^# makefile /)原因分析:
genpaths.pl 会对编译过程的中间信息 :...line=# makefile(from'incpaths.min',line 363)line=QVPCODEC_AUDIOINC = $(QVPCODEC)/audio/inc...等信息进行解析,由于我们使用的是中文系统,所以以上内容变为: line=# makefile(从'incpaths.min',行 363)line=QVPCODEC_AUDIOINC = $(QVPCODEC)/audio/inc 所以导致:
#if($line =~ /^# makefile(from/)判断条件为为 false 无法正确生成 incpathsaaabqmlym.py,python 在解析该文件的时候认为存在语法错误。
在 modem 代码 M7630AABBQMAZM2020(HY11-N2280-2.zip)中开始使用 genincpaths.py 产生
./AMSS/products/7x30/core/bsp/build/data/incpathsaaabqoazm.py 文件,所以修改文件 amend-source-code-qualcomm-modem.sh 在脚本中需要加入以下内容: incpathsxxx_py=$PRODUCT_DIR/core/bsp/build/scripts/genincpaths.py if test-f $incpathsxxx_py;then PERL=`which /usr/bin/perl` sed-i “s/(from//g” $incpathsxxx_py fi./AMSS/products/7x30/multimedia/audio/drivers/Adie/AdieCodecDb/src/DALAdieCodecDb.c #DalAdieCodecDbInternal.h 改为: #include “DALAdieCodecDbInternal.h”
5)如果出现 make: execvp:../../../../platform/cs/bin/cifc: Permission denied 错误,执行以下命令:
chmod-R 755 AMSS/platform/cs/bin/*
1.2.3 建立 Android 开发环境(略)
curl http://android.git.kernel.org/repo >~/bin/repo chmod a+x ~/bin/repo export PATH=~/bin:$PATH 1)安装基本软件
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
2)安装 sun-java5-jdk ubuntu 下通过命令: sudo apt-get install sun-java5-jdk 将会安装下面的包 sun-java5-bin sun-java5-demo sun-java5-jdk sun-java5-jre sun-java5-plugin 如果ubuntu 发布版本中没有 sun-java5-jdk 那么 sudo vim /etc/apt/source.list #for sun-java5-jdk deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse sudo apt-get update sudo apt-get sun-java5-jdk 或者,如果 ubuntu 版中不支持 apt-get,那么用手动安装: sudo mount-t nfs 172.20.127.15:/home/shared /mnt sudo dpkg-i /mnt/tools/debs/java-1.5.0-sun/sun-java5-*
3)配置usb cd /etc/udev/rules.d/ sudo vi 50-android.rules # adb single interface device SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“18d1”, SYSFS{idProduct}==“d00d”, MODE=“0664”, GROUP=“plugdev” # adb composite interface device SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“18d1”, SYSFS{idProduct}==“deed”, MODE=“0664”, GROUP=“plugdev” # Sooner low-level bootloader BUS==“usb”, SYSFS{idVendor}==“0bb4”, SYSFS{idProduct}==“0a51”, MODE=“0664”,GROUP=“plugdev” sudo /etc/init.d/udev restart
1.2.4 建立 modem 开发环境
与android 源代码不同,modem 编译工具使用的是 RVDS ,实际上只用到其中的 RVCT 编译器,高通不提供该工具,我们必须从arm公司获取相应的授权,RVDS 是 ADS 的升级版本,从 ADS 1.2 开始到 RVDS 3.1 我们公司都有其授权,按照高通的要求我们目前必须使用 RVDS 2.2 并且使用他的 349 patch。RVDS 2.2 安装以及使用步骤如下:
1).RVDS 2.2 共享在 172.20.127.15:/home/shared/ 目录 sudo mount-t nfs 172.20.127.15:/home/shared/ /mnt cd /mnt/qualcommon/RVDS-2.2/ linux下rvds2.2的安装程序为:
./rvds2.2_linux-pentium/setuplinux.bin 执行以上命令,按照默认步骤安装,安装路径为:~/ARM 注意事项:
安装过程如果出现错误:
..................java.lang.UnsatisfiedLinkError: /tmp/ismp001/6073753.tmp: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory 从网上下载 libstdc++-libc6.2-2.so.3 拷贝到 /usr/lib 目录 ,或者从下面地址获取:
http://172.20.127.15/repositories/DocsAndTools/Tools/Qualcomm/RVDS-2.2-patch/patch/libstdc++-libc6.2-2.so.3 工具的安装通过脚本进行了简化,具体过程请参考文档: 80-N0216-2_A_M7630AABBQMAZM1170.pdf 80-VR881-7_B_M7630AABBQMLZA1200.pdf 80-VR192-1_C_AMSS_Linux_Software_Users_Guide.pdf 80-VR192-1_D_AMSS_Linux_Software_Users_Guide.pdf
2)安装高通指定的 593 patch cd /mnt/qualcommon/RVDS2.2/下执行命令:./setup-patch-rvct2.2-bin593-lib349.sh
目前版本只支持 32 位的系统 1.2.4.1 补充
vim./AMSS/products/7x30/core/bsp/build/scripts/defaults.py 定义了工作线程
#num_jobs = num_cpu * 2 modified by mhf num_jobs = 2 if num_jobs < 4: num_jobs = 2 if num_jobs > 8: num_jobs = 8 env.SetOption('num_jobs', num_jobs)――――――― 获取 RVDS 官方网站下载评估版本
https://silver.arm.com/browse http://www.xiexiebang.com/wiki/QAEP#Branch_Releases https://www.xiexiebang.com/wiki/QLBEP 下载 M7630AABBQMLZA1150 分支:
February 1, 2010 M7630AABBQMLZA1150 msm7630 eclair M7630AABBQMLZA1150.xml 命令如下:
mkdir-pv ~/workspace/gphone/eclair-M7630AABBQMLZA1150-20100201 cd ~/workspace/gphone/eclair-M7630AABBQMLZA1150-20100201 repo init-u git://codeaurora.org/platform/manifest.git-b eclair-m M7630AABBQMLZA1150.xml nohup repo sync 代码下的 vendor/qcom-proprietary 来自包 HY11-VR881-5.zip 以上两部分代码已经下载并且合并,共享在:
http://172.20.127.15/repositories/TD1002/trunk/eclair-M7630AABBQMLZA1150---------------编译 eclair 代码
svn co http://172.20.127.15/repositories/TD1002/trunk/eclair-M7630AABBQMLZA1150 cd eclair-M7630AABBQMLZA1150 cd eclair-M7630AABBQMLZA1150$../setenv.sh../make-image.sh ======= modem代码从高通网站:https://support.cdmatech.com/login/ 上获取 我们目前使用的是: 共享在:
http://172.20.127.15/repositories/TD1002/trunk/modem-M7630AABBQMAZM1220-------编译 modem 代码
svn co http://172.20.127.15/repositories/TD1002/trunk/modem-M7630AABBQMAZM1220 cd modem-M7630AABBQMAZM1220../setenv-qualcomm.sh../make ======== 编译结果分别如下:------------其中 adsp.mbn,amss.mbn,dbl.mbn,osbl.mbn,partition.mbn 位于以下目录:./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/adsp.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/amss.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/dbl.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/osbl.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/partition.mbn------------appsboot.mbn,boot.img,system.img,userdata.img 位于以下目录:./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/appsboot.mbn./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/boot.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img.ext3./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img.ext3------------eMMC 启动使用的是 ext3 文件系统,需要使用镜像 system.img.ext3 userdata.img.ext3 补充说明:
partition.mbn 文件的原始数据来自配置文件:
./AMSS/products/7x30/tools/jsdcc/partition_load_pt/partition.xml
1.3 高通平台,android和 modem 编译流程分析 android 代码编译流程分析 modem 代码编译流程分析 1.3.1 android代码编译流程分析
1.从服务器下载 android 源码到当前目录
http://smartphone/repositories/TD1014/branch/froyo_almond-M76XXTSNCJNLYA6050-drivers/ svn co http://172.20.127.15/repositories/TD1014/trunk/froyo_almond-M76XXTSNCJNLYA6050/ cd froyo_almond-M76XXTSNCJNLYA6050/../setenv.sh 设置环境变量 Setting Environment...通常情况下 generic 用于编译模拟器版本 Options are: 1.generic 2.msm7627_surf 3.msm7627_ffa 4.tiny-system ====从以上列表中选择==== Which would you like? [1]
烧录的镜像文件appsboothd.mbn appsboot.mbn boot.img system.img userdata.img persist.img 来自 android 源码 appsboot.mbn 的主要功能是装载 linux 内核,通过 linux 的引导来完成 android 系统的加载,appsboot.mbn 被烧写在相应的分区,它的加载由 osbl.mbn 来完成,osbl.mbn 程序来自 modem。
7x30 7x27 系列 appsboot 不一样,7x30 的 appsboot.mbn 是 7x27 appsboothd.mbn appsboot.mbn 两个文件的合并
1)appsboot.mbn 生成过程解析
2)boot.img 生成过程解析,怎样手动生成 boog.img
1.3.1.1 编译工具检测
make out/target/product/msm7630_surf/appsboot.mbn 1.3.1.1.1
1.3.1.2 appsboot.mbn 生成过程解析
make out/target/product/msm7630_surf/appsboot.mbn make out/target/product/msm7630_surf/nandwrite make out/target/product/msm7630_surf/emmc_appsboot.mbn 分别执行:
make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ msm7630_surf make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_EMMC_OBJ msm7630_surf EMMC_BOOT=1 生成 nandwrite =============== #build nandwrite as a part of Android Build TARGET_NANDWRITE := $(PRODUCT_OUT)/obj/nandwrite/build-$(TARGET_PRODUCT)_nandwrite/lk NANDWRITE_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/nandwrite
nandwrite_clean: $(hide)rm-f $(TARGET_NANDWRITE)$(hide)rm-rf $(NANDWRITE_OUT)
$(NANDWRITE_OUT): mkdir-p $(NANDWRITE_OUT)
$(TARGET_NANDWRITE): nandwrite_clean $(NANDWRITE_OUT)@echo $(TARGET_PRODUCT)_nandwrite $(MAKE)-C bootable/bootloader/lk BOOTLOADER_OUT=../../../$(NANDWRITE_OUT)$(TARGET_PRODUCT)_nandwrite BUILD_NANDWRITE=1 ================
vim./bootable/bootloader/lk/makefile:98: TARGET := msm7630_surf #./bootable/bootloader/lk/project/msm7630_surf.mk PLATFORM := msm7x30 #./bootable/bootloader/lk/target/msm7630_surf/rules.mk msm7x30 msm7630_surf.mk msm7630_surf_nandwrite ============================= include project/$(PROJECT).mk include target/$(TARGET)/rules.mk include target/$(TARGET)/tools/makefile include platform/$(PLATFORM)/rules.mk include arch/$(ARCH)/rules.mk include platform/rules.mk include target/rules.mk include kernel/rules.mk include dev/rules.mk include app/rules.mk...include make/module.mk...include make/build.mk ======================== vim bootable/bootloader/lk/make/module.mk INCMODULES := $(MODULES)$(info including $(INCMODULES))include $(addsuffix /rules.mk,$(INCMODULES))展开为:./bootable/bootloader/lk/app/nandwrite/rules.mk./bootable/bootloader/lk/dev/fbcon/rules.mk./bootable/bootloader/lk/dev/keys/rules.mk./bootable/bootloader/lk/lib/debug/rules.mk./bootable/bootloader/lk/lib/heap/rules.mk./bootable/bootloader/lk/lib/libc/rules.mk./bootable/bootloader/lk/lib/ptable/rules.mk ======================== bootable/bootloader/lk/make/build.mk:29: include arch/$(ARCH)/compile.mk
./bootable/bootloader/lk/project/msm7630_surf_nandwrite.mk 中有: MODULES += app/nandwrite./bootable/bootloader/lk/platform/msm7x30/rules.mk中有: MODULES += dev/fbcon./bootable/bootloader/lk/kernel/rules.mk 中有: MODULES += lib/libc lib/debug lib/heap./bootable/bootloader/lk/target/msm7630_surf/rules.mk 中有: MODULES += dev/keys lib/ptable 所以:
MODULES= app/nandwrite dev/fbcon dev/keys lib/debug lib/heap lib/libc lib/ptable 因为
ifeq($(BUILD_NANDWRITE), 1)APPSBOOTHDR_FILES := else out/host/linux-x86/bin/acp-fpt out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk out/target/product/msm7630_surf/nandwrite
25780 184 34000 59964 ea3c../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk arm-eabi-objcopy-O binary../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.bin generating listing:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.lst generating listing:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.debug.lst generating symbols:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.sym generating size map:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.size make[2]:正在离开目录
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk make[1]:正在离开目录
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk target Prebuilt:(out/target/product/msm7630_surf/nandwrite)
make-C bootable/bootloader/lk BOOTLOADER_OUT=./out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 make[2]: 正在进入目录
`/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk` msm7630_surf_nandwrite make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 ==》生成 mkheader 工具
gcc target/msm7630_surf/tools/mkheader.c-o target/msm7630_surf/tools/mkheader
$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld @echo generating $@ @$(MKDIR)$(NOECHO)sed “s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/” < $< > $@
generating../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/system-onesegment.ld compiling arch/arm/crt0.S compiling arch/arm/crt0.S。。compiling lib/ptable/ptable.c compiling lib/ptable/ptable.c
vim bootable/bootloader/lk/platform/msm7x30/rules.mk-----LINKER_SCRIPT += $(BUILDDIR)/system-onesegment.ld include platform/msm_shared/rules.mk-----
./build/core/product_config.mk:177:TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)./build/core/envsetup.mk:152:OUT_DIR := $(TOPDIR)out./build/core/envsetup.mk:159:TARGET_OUT_ROOT_release := $(OUT_DIR)/target./build/core/envsetup.mk:161:TARGET_OUT_ROOT := $(TARGET_OUT_ROOT_$(TARGET_BUILD_TYPE))./build/core/envsetup.mk:178: TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product./build/core/envsetup.mk:184:PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)build/core/envsetup.mk:200:TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj bootable/bootloader/lk/AndroidBoot.mk:4:BOOTLOADER_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/BOOTLOADER_OBJ bootable/bootloader/lk/makefile:32:BUILDDIR := $(BOOTLOADER_OUT)/build-$(PROJECT)bootable/bootloader/lk/makefile:34:OUTELF := $(BUILDDIR)/lk 所以:
TARGET_PRODUCT_OUT_ROOT=out/target/product/ PRODUCT_OUT=out/target/product/msm7630_surf/ TARGET_OUT_INTERMEDIATES=out/target/product/msm7630_surf/obj/ BOOTLOADER_OUT=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/ 所以:
BUILDDIR=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf 所以:
OUTELF=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk
make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ msm7630_surf
bootable/bootloader/lk/makefile OUTELF := $(BUILDDIR)/lk./bootable/bootloader/lk/make/build.mk $(OUTELF): $(ALLOBJS)$(LINKER_SCRIPT)@echo linking $@ $(NOECHO)$(LD)$(LDFLAGS)-T $(LINKER_SCRIPT)$(ALLOBJS)$(LIBGCC)-o $@
vim./bootable/bootloader/lk/AndroidBoot.mk TARGET_NANDWRITE := $(PRODUCT_OUT)/obj/nandwrite/build-$(TARGET_PRODUCT)_nandwrite/lk $(TARGET_NANDWRITE): nandwrite_clean $(NANDWRITE_OUT)@echo $(TARGET_PRODUCT)_nandwrite $(MAKE)-C bootable/bootloader/lk BOOTLOADER_OUT=../../../$(NANDWRITE_OUT)$(TARGET_PRODUCT)_nandwrite BUILD_NANDWRITE=1
BOOTLOADER_EMMC_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/BOOTLOADER_EMMC_OBJ
vim./bootable/bootloader/lk/make/build.mk $(OUTELF): $(ALLOBJS)$(LINKER_SCRIPT)@echo linking $@ $(NOECHO)$(LD)$(LDFLAGS)-T $(LINKER_SCRIPT)$(ALLOBJS)$(LIBGCC)-o $@
bootable/bootloader/lk/makefile:33:OUTBIN := $(BUILDDIR)/lk.bin bootable/bootloader/lk/makefile:34:OUTELF := $(BUILDDIR)/lk
./lk/platform/msm7x30/rules.mk:23:LINKER_SCRIPT += $(BUILDDIR)/system-onesegment.ld
==》链接 lk linking../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk linking../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk generating image:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.bin generating image:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin text data bss dec hex filename 29592 7388 42720 79700 13754../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk text data bss dec hex filename 25780 184 34000 59964 ea3c../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk
==》以 binary 格式,把文件
out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk 输出到:
out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin arm-eabi-objcopy-O binary out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin ==》
生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.lst 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.debug.lst 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.sym 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.size make[1]:正在离开目录 /opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk ==》
make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=arm-eabi-msm7630-perf_defconfig make[1]: 正在进入目录
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/kernel generating symbols:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.sym generating size map:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.size
mkheader 从 lk.bin 生成 appsboothd.mbn 语法: mkheader
out/target/product/msm7630_surf/appsboot.mbn cat out/target/product/msm7630_surf/appsboothd.mbn out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin > out/target/product/msm7630_surf/appsboot.mbn 删除:out/target/product/msm7630_surf/appsboothd.mbn ==== 1.3.1.3 boot.img 生成过程解析,怎样手动生成 boog.img boot.img 包括两个部分: kernel 和 ramdisk,通过命令: make out/target/product/msm7630_surf/boot.img showcommands 会自动生成 kernel 和 ramdisk,然后把两者合并制作成烧写的镜像文件:boot.img kernel 为
out/target/product/$TARGET_PRODUCT/obj/KERNEL_OBJ/arch/arm/boot/zImage 或者 out/target/product/$TARGET_PRODUCT/kernel , kernel 是 zImage 的拷贝
编译内核之前必须获取一个默认的配置文件.config ,此配置文件可以生成,或者来自默认配置,高通中 msm7630_surf 的
默认配置文件名为: msm7630-perf_defconfig 在文件: vendor/qcom/msm7630_surf/AndroidBoard.mk:45 中通过: KERNEL_DEFCONFIG := msm7630-perf_defconfig 进行了指定。我们可以通过命令:
make-j3 ARCH=arm CROSS_COMPILE=arm-eabi-kernel showcommands 或者通过如下命令一步步完成:
1.获取默认的内核配置并生成.config 的命令如下: make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=arm-eabi-msm7630-perf_defconfig-C kernel 告诉 make 进入 kernel 工作目录,到其下面寻找 makefile 文件
O 内核编译的中间文件以及编译结果等都存储在该目录下,此做法的好处是不会在kernel源代码目录下生成垃圾文件
ARCH=arm 告诉系统到./kernel/arch/$ARCH/configs/ 目录下找文件 msm7630-perf_defconfig,生成的.config 保存在:
out/target/product/msm7630_surf/obj/KERNEL_OBJ/.config 2.手动编译内核
make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ/ 3.如果需要配置内核,使用下面的命令 make kernelconfig 他首先会进入 menuconfig 界面,用户配置完成以后,会把修改后的配置文件$(KERNEL_OUT)/.config 更新为默认的配置文件
cp out/target/product/msm7627_ffa/obj/KERNEL_OBJ/.config kernel/arch/arm/configs/msm7627-perf_defconfig kernel/arch/arm/configs/$(KERNEL_DEFCONFIG)
4.手动生成 ramdisk 执行命令
make out/target/product/msm7630_surf/ramdisk.img showcommands 会用到命令:
out/host/linux-x86/bin/mkbootfs out/target/product/msm7630_surf/root | out/host/linux-x86/bin/minigzip > out/target/product/msm7630_surf/ramdisk.img 5.手动生成 boot.img 需要使用命令 mkbootimg ,语法如下: mkbootimg--kernel 内核--ramdisk ramdisk镜像--cmdline 命令行--base 基地址--pagesize 大小--output 输出的boot.img ========== KERNEL=out/target/product/$TARGET_PRODUCT/kernel KERNEL=out/target/product/$TARGET_PRODUCT/obj/KERNEL_OBJ/arch/arm/boot/zImage RAMDISK=out/target/product/$TARGET_PRODUCT/ramdisk.img CMDLINE=“console=ttyDCC0 androidboot.hardware=qcom” BASE=0x00200000 PAGESIZE=4096 OUTPUT=out/target/product/$TARGET_PRODUCT/boot.img out/host/linux-x86/bin/mkbootimg--kernel $KERNEL--ramdisk $RAMDISK--cmdline “$CMDLINE”--base $BASE--pagesize $PAGESIZE--output $OUTPUT =========================================
编译 bootloader(appsboot.mbn),nandwrite 生成过程解析./vendor/qcom/msm7630_surf/AndroidBoard.mk:25: include bootable/bootloader/lk/AndroidBoot.mk =================== 因为有:
bootable/bootloader/lk/AndroidBoot.mk:3: TARGET_BOOTLOADER := $(PRODUCT_OUT)/appsboot.mbn INSTALLED_BOOTLOADER_TARGET := $(PRODUCT_OUT)/bootloader file := $(INSTALLED_BOOTLOADER_TARGET)
第四篇:Android平台QQ空间概念视觉稿
一、前期的准备
制作这次风格稿的时候,问了身边的一些使用QQ空间的朋友,问他们是如何理解QQ空间的?希望的QQ空间是什么样子?得到了N多的答案,其中的一些关键字我摘录了出来:“好玩些、读写方便、速度快操作流畅、酷一点、可以看到更多和PC用户的内容、让我们来选择自己喜欢操作方式、精致漂亮、要有QQ空间自身的特点„”
在看完这些朋友们给的这些信息之后就到了揣摩消化分析理解体现阶段,同时希望可以在风格上尝试一个和以往的版本不同的地方,既可以体现出QQ空间自身的特点又可以让用户耳目一新,接下来就是草图和素材收集阶段,下面就是我对QQ空间的一些认识通过图片表现一下吧:
你能在下面的视觉稿中发现这些图片的影子。
二、设计展现阶段:
用户进入登录界面后,在未输入账号的情况下界面中logo置灰显示,用户点击账号输入框后logo变亮(在视觉上是从不可操作变化为可操作即可点击状态),当用户输入密码后,点击logo进行登录。
进入个人中心大家可以看到这里界面的tab栏是做成隐藏状态的,只露出一个可以点击的向上按钮,而且界面中的title和tab都设计成了半透明效果,这样设计第一为了让用户在视觉上拥有更大的阅读空间,第二也是为了让用户有一个愉快的操作体验,其实用户在进入个人中心后,他的观注点会是个人中心里的各种操作,包括写心情、拍照片、查看留言评论、回复等等,只有当观注点改变的时候(目的性改变变强)比如需要进入我的主页查看自己相关的内容、去玩一些应用这个时候用户才会去切换相应界面,这也是把tab栏设计成隐藏状态的一个原因。
在界面中为了让用户很轻易的识别出每条FEED的属性设计了一些对应心情、日志、评论、相片、赞等一些图标。
用户进行频道切换时点击或向上拖动下面的向上按钮,在触觉上会有震动反馈,向上的按钮变大,从视觉上看像是被手指压住拖动。
这时转盘形的tab栏从下方被唤出,当前为个人中心界面,所以对应在tab栏上的个人中心的图标是被激活的,在对tab栏图标设计处理的时候,均采用了拟物化的设计。
对tab栏操作的时候,用户可以用2种方式进行频道间的切换,点击相应的图标或拖动环形转盘便可切换到对应的频道中,这样在保证快速切换的同时也增加操作的趣味性,每个频道对应的icon移动中间位置被激活(效果为淡入淡出效果),同时频道进行切换,下面2张图分别代表手指触控圆盘进行左右滑动时tab栏的变化:
下面是个人主页、好友、应用界面
个人主页界面
好友界面
应用界面 三、一些细节和扩展性
1、考虑到用户的使用习惯和操作方式的不同,在这里把主动权交还给用户,提供3种操作方式让用户自己定义,默认情况下的频道切换为从下方唤出,用户可以在设置界面中调整tab栏的操作方式。
2、目前的tab栏上有5个频道图标,考虑Qzone的强大整合性不能排除以后继续增加频道的可能,所以采用转盘式的设计方式,也就是这个风格稿的主题之一——玩转Qzone。
3、在输入账号密码验证的时候,系统会自动判定男女用户,如果是女性用户登录后系统会自动选择适合女性的皮肤样式,对应的图标也会发生改变,比如个人中心的图标就会变成一个女孩的ICON。
在产品设计中用户需求和具体的情景使用感受,也是一个设计师要去全面考虑的。(本文出自Tencent WSD Blog,转载时请注明出处)
第五篇:Android 个人总结
Android 个人总结
通过本学期的的学习,我知道了android是由google开发的一款手机平台,android的基本架构是基于linux内核,由内核向外的反别为库和应用架构,然后就是我们手机上的可视化应用了,android是一个系统,但是并非是操作系统。
在开发之前,我们首先要搭建一个开发环境,用的是java编程的eclipse,我们从网上下载sdk包,里面包含了android开发常用的工具,android既是手机操作系统,也是跨平台(windows,mac,linux)的开发工具,虽然是使用linux为核心的平台,但是你可以在很多地方感觉到类似做网页开发的感觉。具有本身独特的进程管理方式,完整的上网功能,搭配了google地图,Gmail等服务,即使像我们这些尚未入门的开发者也能开发出自己理想的应用程序来。
刚开始的时候,得知android开发需要使用java语言心里了小小的畏惧,但随着学习的渐渐深入就会发现android平台只是使用了java的语法而已,所以,即使我们不具备java语言开发的基础,也可以放心地加入到android开发当中来。
第一节课,老师向我们详细介绍了开发界面右边窗口的内容,首先是src目录,里面包含了我们开发界面的java文件以及各种我们创建的类组成的开发包。然后是gen目录,里面涵盖的是系统的类文件(如R.java,Buidconfig.java)与android系统的依赖文件(Android Dependencies)。再下来是assets(用户资源文件),里面文件的访问是通过文件路径的形式调用。Bin文件里面包括了res资源文件,android项目配置文件androidmanifest以及我们开发之后产生的后缀为.apk的应用程序文件。Res是系统资源目录,我们要用到得图片资源,颜色资源,字符串资源都在里面。一般的开发都要用到界面文件也包含在里面。
Eclipse具有史上超豪华的手机控件,包括常用的文本文件,文本框,按钮,进度条等,还有特殊形式的email,gmail文本框,在开发过程当中,很多控件都是以拖拉的形式拖拽到开发界面上,大大地减少了我们开发时候的工作量,在配置文件中,我们可以添加各种各样的系统动作,以及系统服务,还可以建立用户自己的文件库。
当我们开发完成的时候,就可以运行手机模拟器,在上面,我们可以像操作当今市场上最流行的android手机一样操作我们的模拟器,可视化的界面可以我们随心所欲地下载我们开发的应用程序到模拟器上,就可以实现步步跟进,想要修改哪里就一目了然了,模拟器上人性化的设计界面大大方便了用户与机器之间的交流。如果我们拥有一部android系统的手机的话,就可以把自己开发的应用程序下到手机上,看到自己的成果,顿生成就感,真的很有乐趣。也加大了我对学习android的信心。
总体来说,学习android就要不怕困难,迎难而上。Android不久可以满足自己的成就感,还可以在未来的生活中找到自己理想的工作。用别人准备好的各种类,包来开发出自己独特风格的应用程序,既省时又省力,何乐而不为呢。在这里,要感谢曾老师对我的栽培和关怀,他教给了我知识,使我在学习的时候少走了很多的弯路,也增加了我对未来工作的信心。