Android
简介:
手机或者平板电脑的操作系统
常用手机操作系统:
Ios 苹果
Android 小米,华为,三星等
塞班(曾经) 黑莓
Android系统架构
1. 应用程序层(Application)
后期所有安装在此设备中的应用都会被存储在此层中
2. 应用框架层 (FrameWork)
给开发应用时,即给应用程序层提供一些常用的系统类
如:
TelephonyManager 通过此系统类,可以 到当前设备的某些信息(可以监控该手机时通过还是响铃等状态)
PackageManager 通过此系统类可获取当前设备上安装的所用程序的包名信息
注意:
对于安装到手机上的应用程序来说,判断多个程序之间是否是同一程序,依赖于程序包名进行判断,而不是靠程序名称判断
如:要安装2个程序,微信,微辣,这两个程序包名一致了,此时只能有1个程序被安装到手机上
3. 类库和运行时 (Libraries,Runtime)
此层被分为了2部分:
1) 类库
用于提供系统类,
如: WebKit 负责浏览器中相关功能的实现
SQLite 负责提供数据库的相关功能
2) 运行时
负责提供应用程序运行的虚拟机
4. Linux 核心层 (Linux kernel)
提供支持系统运行的各种驱动程序
常见的面试题:
1. 各层的名字(尽量写英文)
2. Android 系统是基于Linux开发的,因此如果所做的工作是写底层代码工作,那么电脑系统需要使用Linux系统
开发个Android的应用程序或者游戏程序,开发完成后均是安装在应用程序层中,因此开发者的电脑系统不需要使用Linux系统,可选用的电脑系统:
1. Windows
2. Mac os
环境搭建:
相关工具的下载网站:
官网:www.developer.android.com (连不上)
http://www.androiddevtools.cn/
开发工具的安装
1. 下载:
打开http://www.androiddevtools.cn/ ,选择ADT Bundle 部分进行下载
2.安装
将压缩包解压即可
注意:解压后文件夹所在的路径中绝对不能有中文和空格
解压后目录如下:
sdk 提供各个版本的安卓系统以及安卓系统类
作用类似于java中的jdk
SDK Manager 管理sdk的工具 ,提供sdk的更新和下载功能
Ecplise 开发工具
注意:此ecplise中自带adt 插件
Adt (Android develop tools)插件的作用:没有此插件无法进行android开发
即提供android程序的创建功能以及运行环境
如果想要使用原有的ecplise进行android开发,可考虑手动安装adt插件:
1. 打开http://www.androiddevtools.cn/,下载adt插件
2. 打开原有的ecplise,选择Help----- Install New Software,弹出窗口如下:
3. 在窗口中选择add按钮,选择local ,选中下载好的adt 插件压缩包,点击ok确认即可
创建Android工程:
1. New---Android Application Project
2. 在弹出的窗口中填写信息:
a. Application Name 应用名称
b. Project Name 工程名称
通常情况下两个名称相同,两者的区别在于:
应用名称控制的是程序安装到设备上之后,在设备上显示的名字
工程名称 控制的是该Android工程在开发工具中显示的名字
c. Package Name 程序包名
在起名字时要尽可能的保持包名的唯一性
常见的命名规则:
com.公司名.应用名.具体分包的功能名
注意:包名中决定不能中文,空格等
只能选取:a到z,0到9,_和. 并且,决定不能数字开头
d. Minimum Required SDK 指定所需最小sdk
如:指定的是4.0(14)版本,那么此程序开发完成后无法被安装在4.0以下的手机上
e. Target SDK 目标sdk ,即指定改程序最好是安装在哪个版本的手机上
f. Complie With 当前工程绑定的sdk版本
g. Theme 指定应用的主题,主要负责设置页面背景色等、
h. 一直Next ,最后Finish即可
模拟器的安装,真机的连接
1. 模拟器
a. 官方原生模拟器
优点: 稳定
缺点:有些卡(电脑配置高无此缺陷)
创建方式:
1. 点击Android Vitrul Device Manager图标
2. 选择Device Definitions 标签,挑选任意模拟器后选择Create AVD 按钮,添加相应数据后,确认即可。
AVD Name 给创建的模拟器起一个任意的名字
Device: 设置创建的模拟器的屏幕尺寸和分辨率是多少
Target : 指定模拟器中运行的Android系统版本(如,4.0,7.0等)
CPU/ABI: 设置模拟器cpu硬件类型
Keyboard:控制在输入内容时是否要显示虚拟键盘
Skin: 通常选择前两项中的任意一项,用于控制模拟器上是否要显示Home键,音量上下键等物理按键
Memory options: 设置运行内存的大小
Internal Storage: 设置模拟器机身内存的大小
SD card: 设置外置存储卡的大小
3. 相应配置设置后,选择ok即可
启动方式:
选中相应模拟器后,选择Start—Launch 即可。启动后自动连接ecplise的
B和c优点:
速度比较快,夜神还可以实现定位功能
缺点:不够稳定,容易与ecplise断开连接
b. 夜神模拟器(逍遥模拟器)
1)运行安装,一直下一步,最后Finish即可
2)安装完成后启动即可,自动完成与ecplise的连接工作
c. Genymotion
国外产的模拟器,服务器也在国外
1. 下载模拟器安装包:
打开官网下载安装包 ,https://www.genymotion.com/
选择Buy Now
选择BASIC中的Get started按钮
选择Download 按钮
选择With VirtualBox中的Download按钮进行下载即可
2. 安装模拟器
a. 运行下载过后的安装包
安装过程中注意: 如果弹出warning警告窗口,选择Yes,继续安装
Genymotion和VirtualBox都需要安装模拟器才能够运行
b. 安装完成后打开VirtualBox ,选择管理---导入虚拟电脑----选择本地的模拟器导入
(如没有本地模拟器,则可省略此步骤)
c. 打开Genymotion,选择已导入的模拟器,选择start即可启动模拟器
d. 如果需要下载更多的模拟器,那么可以点击Add按钮,登录后即可看到n多版本的模拟器,选择想要的版本后点击Download按钮下载即可
3. 运行模拟器
双击运行Genymotion,选择要启动的模拟器后,选择start按钮即可
2. 真机的连接
解决方式:
1. 找个手机助手软件(如腾讯手机助手)在电脑上安装一下
2. 通过数据线将手机和电脑连接
3. 手机—设置---开发者选项--- 将Usb调试功能打开
4. 手机助手软件会自动将手机和ecplise连接起来
判断是否连接成功:
通过Window—Show View—Other—Android---Devices选项显示Devices标签,
此标签中可显示所有已连接到ecplise的设备
易发生的问题:
模拟器和ecplise断开连接,即Devices标签中没有显示已打开的模拟器,
解决方式如下:
1. 在Devices标签右上角位置,点击三角形图标,选择Reset adb选项
2. 打开cmd窗口,执行命令:
通过 cd 路径,进入sdk\platform-tools文件夹
adb kill-server 关闭adb连接服务
adb start-server启动adb连接服务
adb connect 127.0.0.1:62001 直接连接夜神模拟器
如果需要通过命令连接Genymotion模拟器:
adb connect 192.168.56.101:5555
3. 关闭ecplise,模拟器,任务管理器中的所有adb.exe进程,然后重新启动ecplise以及模拟器
4. 重启电脑
Sdk文件夹内常用子文件的功能
Sdk文件夹整体功能: 提供各种版本android系统,以及系统类等
常见子文件夹:
Platforms 用于存储android系统,
即,当新建工程指定Complie With,以及创建原生模拟器指定Target时,能够提供的选择版本有哪些
Platform-tools 只要用于存储管理模拟器和ecplise连接的adb命令
System-images 系统镜像,用于存储提供原生创建时所选择的cpu\ABI的类型
Sources 用于存储各版本的系统源码
extras 用于存储一些额外系统类(如v4包中系统类)的源码以及使用样例
docs 用于提供本地版的官方文档
build-tools 用于存储提供编译功能的相关工具
tools 提供一些工具,
如draw9patch.bat, 用于绘制9patch图片工具
Android Application Project 工程结构:
Src 用于存储开发者编写的.java文件
Android 4.4.2 压缩文件 提供系统类
Android Private Libraries 压缩文件 ,提供一些额外的系统类
ic_launcher-web.png 系统提供的默认图标
project.properties 用于描述当前工程 Complie With 绑定的android系统版本
proguard-project.txt 用于配置混淆文件
AndroidManifest.xml 清单文件,主配置文件,用于注册一些程序的需要信息
如:程序启动时,要运行哪个类中的方法
bin 此文件夹中的内容由系统自动生成,存储编译后的文件
libs 添加一些第三方的jar包
assets 资产文件夹,用于存储一些图片,mp3,html等文件
res 资源文件夹,用于存储一些图片,文字等数据
注意:后期在向res中添加资源文件时,千万要注意文件命名
命名原则: 必须是a-z,0-9,_和. 其余均不行,并且不能以数字开头
gen 此文件夹中的所有内容也是由系统自动生成,无法手动改变
此文件夹中有一个比较重要的文件----R.java ,称为R文件
在R文件中,给res中的每一个资源文件配置一个16进制的唯一id
Assets文件夹中的文件与res中的文件有什么区别?? 或者说,有一张图片,放在res中好还是放在assets中比较好??
区别:
1. res中的所有资源都会在R文件中有一个对应的16进制的数字id值,而assets中的文件是没有的
2. res中的资源在会被编译,而assets中的文件,则生成安装包后会保持原样
3. 大部分情况下, 工程中所需使用的所有数据均是放置在res中
AndroidManifest.xml文件功能:
res文件夹作用:用于存储当前工程所需要使用的所有图片,文字等资源文件
其中子文件夹的具体作用:
以上所有所有文件夹都是用于存储图片的
values 此文件中存储xml文件,这些xml文件的作用:用于存储各种文字,颜色,等数据
menu 存储xml文件,这些xml文件的作用:用于设置后期菜单的显示内容
layout 存储xml文件,此xml文件的作用:用于存储布局文件
补充:
Sdk更新问题:
解决方式一:
下载相应内容后,放置到相应位置
如: 需要启动一个5.0的模拟器,为确保能够创建此模拟器,
那么需要下载5.0的sdk 以及5.0 System images
下载完成后分别将内容放入platforms文件夹以及system-images文件夹即可
解决方式二:
直接运行SDK Manager 或者点击SDK Manager图标,选中要下载内容后,点击Install按钮即可
公司的组成:
写服务器的
美工 做图片的
项目经理 解决技术难点,整体统筹的
产品经理 跟客户打交道
程序员 1到3个人
测试人员 1个
编写工程时:
1. 创建工程
2. 创建(区分)文件夹 (初学时可省略此步骤)
3. 确认整个工程有几个页面
4. 依次完成相应页面
完成时:需要实现两大方面的作用:
1) 处理页面的显示,如:设置每个按钮,图片,文字等的显示位置
2) 处理页面与用户的交互 。 如:处理当用户手指点击按钮后,应该做出什么样的反馈
res---layout文件中布局文件的作用:控制页面的显示
程序的启动流程:
1. 安装此程序对应的apk文件
2. 在apk文件中找到AndroidManifest.xml文件,读取该文件中的代码
主要要读取的是:
含有以上4行代码的activity标签,读取该标签name属性的值,用于确认启动类的路径,即要去运行哪个类中的代码
3. 运行此类中的onCreate方法
附送内容:
推荐网站:
来源:oschina
链接:https://my.oschina.net/u/4312361/blog/4555814