Android基础
今天学习Android基本环境及基础知识,正确来说是重新温习Android知识,因为初次接触Android开发已经是两年前的事,如今又回到Android开发依然那么熟悉,依然可以让人很兴奋,Android选择了以java为基础让众多java平台的开发者偷笑了……
很多书本在开端长篇大论Android的起源,像讲故事一样,但我们只需知道几点知识即可,剩下的后面再回来看故事也不迟,毕竟Android是拿来开发不是拿来讲故事。Android是由Google领导的OHA(开发手持设备联盟)公开发布的,并且开放源代码,Google在里面发挥了挑大旗的责任,现在都还是,Android的爷爷是Andy Rubin,后来任职于Google,再后来又离职了。现在大家担心的是Android系统愈加碎片化,但不知道这是好事还是坏事,以后再说。
Android是由Linux为核心的移动设备操作系统,主要架构分为四层:最低层就是linux kernel,提供硬件驱动、内存、进程、网络等等底层管理;接着的一层就是链接库和Android Runtime,链接库包含C链接库、SQLite函数库、WebKit函数库等等,Android Runtime主要包含核心库以及DVM(非常类似JVM的一种东东);再上来一层就是应用程序框架,也就是Android应用的各种框架规则;最顶层就是Android应用程序,直接面对用户,没话可说了。由此可见,我们绝大多数的应用开发者是在第三层玩,少数底层开发、架构设计研究者会到第二层玩(估计是要模拟出另一个Android系统了,就像 阿里云),第四层就没话可说了,只要考虑用户体验、用户操作。
好像讲了听到,像是讲故事了。但此故事非彼故事,这个过程是引导学习Android的基本架构,先从宏观方面一览众山小,而后在微观学习的时候举一反三,事半功倍,当然,这只是我的个人学习思路。下面还要继续啰嗦。
Android的1.X和2.X版本都是为手机准备的,3.X版本是专为平板准备的,而4.X版本是集大成者,大家都懂,而且还加入了未来的功能,可能应用到网络电视、其他家电设备等等,API Level更要分清楚,以便后面选择模拟器,以及应用的发布最低系统版本要求。Level 10以下是1.X和2.X的,属于低版本Android系统应用,可以兼容绝大多手持设备,但有一些高级功能就不能用,Level11~13是3.X的,开发平板应用的时候选择,Level14以上是4.X的属于高版本,可以使用高级功能,但可能有些旧的手机系统不支持。具体选择哪一个要看自身的产品定位喽,事实上智能机的更新换代速度也是惊人的。
搭建开发环境包括五样东西:OS、JDK、Eclipse、ADT、Android SDK,具体的安装教程网上一大堆,而且前三项也是java程序员最熟悉的了,只需在Eclipse中安装插件ADT再将Eclipse和SDK关联起来就OK了,以前这个方法很顺畅,但Google回家了以后就没那么容易了,这会让一些新手苦逼地折腾不少时间,所以我建议直接去下载整套环境,直接开发了,推荐地址http://pan.baidu.com/share/link?shareid=249563&uk=3358019106
搭建好开发环境后就直接开发吧,少年。新建一个项目的流程在网上一堆,没什么障碍。下面分析项目的文件目录架构。/src目录放的是程序的源代码,/bin目录放的是编译后的文件,这对java程序员太熟了,/gen文件夹放一个R.java文件,打开就知道它是个专门提供很多静态属性的类,记录各部分资源的地址位置,以便调用,不能修改,因此这个调用都是底层完成的,知道就好。/assets存放在这个目录下的文件,无论是 mp3 还是图片,都会被打包到发布包中。/res目录放置各种资源,如果/res 下存放的资源在应用中没有使用到,那么在 gen 下的 R.java 的文件中就不会显示,那么打包的时候就不会将这部分资源打包,减少了应用的发布文件大小,/drawable存放图片文件,注意图片名称必须是[a-z0-9_.]组成,drawable 目录下不能分子级目录,只能通过命名方法来加以区分,/raw 直接复制到设备中的任意文件,不会被编译,可以放数据库文件,/values存放字符串,颜色,数组等常量数据。可以任意命名,但是通常命名:color.xml、strings.xml、array.xml、styles.xml、dimens.xml(定义尺寸值:dimension value )。。。还有一些就是设置文件了。
然后?然后就是去背诵各种基本组件、属性、方法、调用细节……
参考http://www.inandroid.cn/bbs/thread-1401-1-1.html
Android基础的更多相关文章
- Android基础测试题(四)
		
看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...
 - Android基础测试题(二)
		
今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...
 - Mono.Android 基础
		
Mono.Android 基础 (地址) Mono.Android项目结构是 — Project + Assets + Resources + drawable + layout + values R ...
 - 深入理解gradle编译-Android基础篇
		
深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...
 - android基础---->JSON数据的解析
		
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
 - 基础4 Android基础
		
基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...
 - Android基础总结(8)——服务
		
服务(Service)是Android中实现程序后台运行的解决方案,它非常适合用于去执行哪些不需要和用户交互而且还要长期运行的任务.服务的运行不依赖任何用户界面,即使当程序被切换到后台,或者用户打开了 ...
 - 【Xamarin开发 Android 系列 4】 Android 基础知识
		
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
 - Android基础_web通信3
		
在Android基础_web通信2中,我运用的JSONObject是Android原生的json类,通过import org.json.JSONObject来导入. 还有另外一种更简单的方法,就是用G ...
 - Android 基础:常用布局 介绍 & 使用(附 属性查询)
		
Android 基础:常用布局 介绍 & 使用(附 属性查询) 前言 在 Android开发中,绘制UI时常需各种布局 今天,我将全面介绍Android开发中最常用的五大布局 含 Andr ...
 
随机推荐
- spring注解 aop
			
@Resource(name="as") 为空按类型装配 @autowired 按类型 @quafiler (name="xx") 按名称 spring继承关 ...
 - Objective-C关键字和概念
			
Objective-C关键字和概念 @ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX. @interface 声明类 @implementati ...
 - less和sass
			
sass 总体来说应用是和less差不多的,但是也有所不同 sass是用“$”符号来命名 然后加值来先引入后使用的方式. 同时也应该注意到的是sass有两种后缀名文件:一种后缀名为sa ...
 - online_jf.lua --累计在线时间领取物品(积分)的lua脚本
			
原作者: ayase 8-27修正 修复首次使用后的红字不需要额外进数据库导入计分表,这lua全自动生成 ----------------------------------------------- ...
 - 堆排序(c++第一次尝试)
			
对排序的实现思路有两种 第一种:1.构建最小堆.2.将最小堆的堆顶元素取出放到辅助数组的0号下标.3.重新调整成最小堆(向上调整) 4.重复2-3 第二种:1.构建最大堆.2.将堆顶元素(0号)与最后 ...
 - JSBinding+Bridge.NET限制
			
限制: 框架代码不可以访问逻辑代码.这是最基本的. 框架里的函数 f 带数组参数时,逻辑代码调用 f 的话,数组只能做为输入,也就是说,如果在框架函数 f 里修改了数组的内容,那么逻辑代码是无法取得新 ...
 - linux下利用GPRS模块发短信、打电话
			
一.开发环境 内核版本:linux-3.0 开发板:FL2440(nandflash:K9F1G08 128M) GPRS模块:SIM900 二.与发短信和拨号相关的 AT 指 ...
 - Python核心编程练习题笔记: type(a)==type(b) 和 type(a) is type(b)的差别
			
前式需要找到类型的ID(相当于门牌号),然后“敲门”取得类型值 后式只需要找到类型的ID,而不需要再去“敲门”获得类型具体值.在一个“门牌号”内只可能有一个值,因此就不用明知故问了.因此后式比前式少了 ...
 - jsr133
			
1:介绍 java虚拟机支持多线程运行.线程代表的就是Thread class.对用户来说创建线程的唯一办法就是创建一个Thread对象:每一个线程都和一个Thread对象关联.Thread对象调用s ...
 - Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义
			
一.Java中什么叫做引用类型变量?引用:就是按内存地址查询 比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里new了一个Stri ...