zoukankan      html  css  js  c++  java
  • Android学习一(入门)

    一、Android 系统简介

    1.1、1G-4G

    1G:模拟制式手机,1995年问世的第一代模拟制式手机,只能进行语音通话,

    2G:手机使用GSM,CDMA(9K/s),增加了接收数据的功能

    2.5G:EDGE (172k/s)

    3G:第三代数字通讯技术(3rd, Generation),

         电国电信:CDMA2000,(日,韩和北美)

         中国联通:WCDMA(世界上大部分3G网络都采用)

         中国移动:TD-SCDMA(中国)

    4G:LTE,长期演进.该技术包括 TD-LTE 和 FDD-LTE 两种制式。4G 是集 3G 与 WLAN 于一体,并能够传输高质
    量视频图像

    GSM->GPRS->EDGE->WCDMA->HSDPA-FDD-LTE长期演进

    9k           42k       172k     364k          7.2M    300M    

    1.2、Adnroid由来

    Android 系统最初由安迪·鲁宾等人开发制作,最初开发这个系统的目的是创建一个数码相机的先进操作系统;后来发现市场需求不够大,加上智能手机市场快速成长,于是 Android 被改造为一款面向智能手机的操作系统,

    2005 年由 Google 收购注资,并组建开放手机联盟。2007 年 11 月 12 日,Android Beta
    操作系统 SDK 正式发布。

    1.3、进化史

    1.4、Android 系统架构

    android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

    1.Applications:提供了一些系统级的应用程序如:浏览器,电话本,email,拔号器等

    2.Application Framwork:应用程序框架

    • 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。
    • 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据
    • 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。
    • 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
    • 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

    3.库系统运行库

    •  libc:系统 C 库,基于 embedded linux 的设备定制的
    • Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。界面管理
    • Media Framework:媒体框架库
    • SQLite:个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎
    • OpenGL|ES:3D效果渲染,可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速
    •  FreeType -位图(bitmap)和矢量(vector)字体显示
    • WebKit- 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图
    • SSL:关于安全的部分
    • SGL - 底层的2D图形引擎

    Android 运行库

    Core Library:Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能

    Dalvik虚拟机:依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

    每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。

    4.Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。

    1.4、JVM与Dalvik虚拟机的区别

    • Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短
    • VM字节码由.class文件组成,每个文件一个class。JVM在运行的时候为每一个类装载字节码。相反的,Dalvik程序只包含一个.dex文件,这个文件包含了程序中所有的类。Java编译器创建了JVM字节码之后,Dalvik的dx编译器删除.class文件,重新把它们编译成Dalvik字节码,然后把它们写进一个.dex文件中

    二、SDK的下载与安装

    2.1、开发环境

    目前主流的开发工具有两个,一个是 Eclipse 另外一个是 Android Studio。 Eclipse 需要和 ADT(Android
    Develop Tool)插件整合后才能使用,不过 Google 官方已经直接提供了 Eclipse 和 ADT 集成好的开发工具,
    叫 ADT-Bundle。
    Android Studio 是 Google 基于 IntelliJ IDEA 开发的 Android 集成开发工具,目前国内使用该开发工具
    的企业也越来越多。Android 基础阶段我们依然使用 Eclipse 作为开发工具,在后面的课程中才会使用到
    Android Studio。

    2.2、ADT-Bundle 的下载和安装

    第一步:JDK 的安装:
    官方下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.htmle
    下载好以后安装,并配置系统环境变量,这里就不再赘述。
    第二步:下载 ADT-Bundle for Windows
    官方下载地址:http://developer.android.com/sdk/index.html
    由于该网址在国内已经被屏蔽掉了,因此本人提供了一个百度网盘的下载地址。
    网盘下载地址:http://pan.baidu.com/s/1gdwIAER
    第三步:安装 ADT-Bundle
    直接把下载下来的 adt-bundle-windows-xxx-xxx.zip 解压到需要安装的位置

    2.3、SDK 目录结构

    将下载好的 ADT-Bundle 解压后根目录结构如图 1-2 所示,总共包括 3 个部分,eclipse、sdk、SDK
    Manager.exe。

    1、add-ons 这里面保存着附加库,比如 GoogleMaps,当然你如果安装了 OphoneSDK,这里也会有一
    些类库在里面;
    2、build-tools 这里保存着与编译相关的重要工具,比如 aapt、aidl、逆向调试工具 dexdump 和编译脚
    本 dx,

    3、docs 这里面是 Android SDKAPI 参考文档,所有的 API 都可以在这里查到;
    4、extras 拓展开发包,这里面包括下向下兼容开发包以及 Intel 硬件加速程序等;
    5、 platforms是每个平台的 SDK 真正的文件, 里面会根据 API Level 划分 SDK 版本, 这里就以 Android2.3
    来说,进入后有 一个 android-10 的文件夹,android-10 进入后是 Android2.3 SDK 的主要文件,其中 data
    保存着一些系统资源,images 是模拟器映像文件,skins 则是 Android 模拟器的皮肤,templates 是工程创建
    的默认模板,android.jar 则是该版本的主要 framework 文件;

    6、platform-tools 保存着一些通用工具,比如 adb.exe;
    7、sources Android 系统源码目录,文件夹里可以包含多份源码,根据 API Level 划分为不同的文件夹;
    8、system-images Android 系统镜像文件;
    9、 tools 这里包含了重要的工具,比如 ddms 用于启动 Android 调试工具,draw9patch 则是绘制 android
    平台的可缩放 png 图片的工具,sqlite3 可以在 PC 上操作 SQLite 数据库,emulator 是 Android SDK 模拟器
    主程序,traceview 作为 android 平台上重要的调试工具;

    2.4、SDK Manager

    SDK Manager.exe 是 ADT 根目录下的一个 SDK 管理程序,该程序负责下载、更新、删除与 sdk 相关
    的文件

    该管理器主要分为以下几部分:
    1、Tools 又分为 Android SDK Tools、Android SDK Platform-tools、Android SDK Build-tools。分别对
    应 sdk 目录中的 tools、platform-tools、build-tools 三个目录。其中的 Rev. 代表版本号,Status 代表状态。
    2、 Android x.x.x(API xx) 一般会有多个,一个 API 就有一个条目。该条目下分为 SDK Platform、 System
    Image、Sources for Android SDK。分别对应 sdk 目录中的 platforms、system-images、sources 目录。
    3、Extras 主要分为 Android Support Library 和 HAXM(Inter x86 模拟器加速器),对应 sdk 目录中的tools 文件。
    由于 SDK Manager 需要通过连接国外互联网才可以对 sdk 进行升级管理,但是国内是被屏蔽了的,因
    此大家可以直击从网站上下载现成的 sdk 文件,然后放到相应的目录下,这样就不需要 SDK Manager 进行
    额外的管理工作。

    2.5、AVD的创建与使用

     

    上面的各个选项介绍如下:
    1、AVD name 自定义的模拟器名称,建议见名知意的命名原则;
    2、Device 选择设备屏幕分辨率;
    3、Target 选择 Android 操作系统版本;
    4、CPU/ABI 选择 CPU 架构。只有 x86 的才支持硬件加速。
    5、Keyboard 勾选上后可以使用自己电脑键盘作为模拟器的键盘,不勾选的话默认使用模拟器键盘;
    6、Skin 勾选上后显示模拟器实体按键,不勾选没有实体按键,建议勾选上;
    7、Front Camera 选择前置摄像头设备,不用选;
    8、Back Camera 选择后置摄像头设备,不用选;
    9、Memory Options RAM 代表模拟器运行内存,VM Heap Dalvik 虚拟机堆内存大小,不建议改动;
    10、Internal Storage 模拟器内置存储大小;
    11、SD Card Size 设置 SDCard 的大小;
    12、Emulation Options 模拟器选项,Snapshot 如果被勾选了,模拟器被关闭时相当于是使用了休眠的形式;
    下次开启时会重新恢复到关机前状态,不建议勾选。User Host GPU,勾选上代表使用电脑提供图形处理;
    一般如果我们的应用不涉及 3D 图像处理不需要勾选,甚至在有些电脑上勾选后反而导致模拟器无法运行。
    当我们创建好模拟器之后,如果需要修改那么可以在图 1-7 中选中要修改的虚拟机,然后点击 Edit...,
    如果需要删除,点击 Delete...,如果需要启动点击 Start...

    在上图界面中有两个比较重要的选项。Scale display to real size 和 Wipe user data。后者很好理解,如果
    勾选上了,那么启动时相当于恢复出厂设置。前者用的比较多,是用来缩放我们的模拟器界面的,如果不
    勾选的话屏幕会显示模拟器的真实大小,肯能会占据我们的整个屏幕,因此可以选择勾选,然后将 Screen
    Size 改为 6

    点击 Launch,就开始启动模拟器,如果没有硬件加速可能需要 3 到 5 分钟的时间。

    2.6、DDMS 简介

    DDMS 是 Dalvik Debug Monitor Service 的简称。DDMS 为 IDE 和 emulator 以及 Android 真机架起来
    了一座桥梁。开发人员可以通过 DDMS 看到目标机器上运行的进程/线程状态,可以看进程的 heap 信息,
    可以查看 logcat 信息,可以查看进程分配内存情况,可以向目标机发送短信以及打电话,可以向 Android
    发送地理位置信息。下面以 Eclipse 的 DDMS perspective 为例简单介绍 DDMS 的功能

    左上部分为 Devices 窗口,列出了所有已经跟 adb 成功连接的模拟器(包括真机)以及各个模拟器中
    所有运行的进程。如图 1-12 所示,最上面一排从左到右一共有 9 个可用按钮,分别为: 调试某个进程,
    更新进程堆栈信息, 下载进程堆栈数据到本地, 调用垃圾回收器, 更新线程, 开启方法性
    能分析数据收集, 停止某个进程, 抓取 Android 目前的屏幕, 查看当前界面视图树结构。

     

    三、Android 程序入门

    3.1、创建Helloworld

    点击 ADT 左上角的 File 按钮,然后选择 New,然后点击 Android Application Project开
    始 Android 工程的创建。(或者鼠标右击,在弹出的快捷菜单中创建也可以)。

    该界面展示了是否创建图标,是否创建 activity,是否将该工程作为库工程,是否将
    该工程添加到当前工作空间,是否将该工程添加到指定工作集等信息,通常情况下不需要我们修改默认的
    配置,直接 Next 就行。

    该界面提供了配置图标选项, 我们通过点击 Browser 按钮可以选择我们个性化的图标。
    在学习阶段不需要使用,然后点击 Next...。

    该向导界面可以让我们选择创建一个什么样式的 Activity,一般使用系统默认的 Blank
    Activity 即可,然后点击 Next...。

    这是最后一个向导界面了。 Activity Name 和 Layout Name 分别是让我们设置主 Activity
    和其布局的名字,通常情况下使用默认名字即可。Navigation Type 是主界面 Activity 切换类型,使用 None
    即可。然后点击 Finish 完成 Android 工程的创建。

    四、Android 工程目录结构

    4.1、结构

    4.2、目录简述

    1、src java 源代码存放目录。
    2、gen 自动生成的目录
    gen 目录中存放所有由 Android 开发工具自动生成的文件。目录中最重要的就是 R.java 文件。 这
    个文件由 Android 开发工具自动产生的。Android 开发工具会自动根据你放入 res 目录的资源,同步更
    新修改 R.java 文件。正因为 R.java 文件是由开发工具自动生成的,所以我们应避免手工修改 R.java。
    另外编绎器也会检查 R.java 列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这
    样可以减少应用在手机占用的空间。
    3、bin 用于存放 ADT 编译时产生的临时文件, Android 工程最终会被打包成一个 xxx.apk
    4、res 资源(Resource)目录
    在这个目录中我们可以存放各种各样的资源,如 xml 界面文件,图片或数据,该目录下包含多个
    子目录。
    4.1、res/drawable
    存放 png、jpg 等图标文件。在代码中使用 getResources().getDrawable(resourceId)获取该目录下的
    资源。
    4.2、res/layout
    存放 xml 界面文件,xml 界面文件和 HTML 文件一样,主要用于显示用户操作界面。

    4.3、res/values
    存放应用使用到的各种类型数据。不同类型的数据存放在不同的文件中。比如:
    4.3.1 strings.xml 定义字符串和数值
    4.3.2 colors.xml 定义颜色和颜色字串数值
    4.3.3 dimens.xml 定义尺寸数据
    4.3.4 styles.xml 定义样式
    4.4、res/anim/
    存放自定义动画的 XML 文件。
    4.5 res/xml/
    在 Activity 中使用 getResources().getXML()读取该目录下的 XML 资源文件。
    4.6 res/raw/
    该目录用于存放应用使用到的原始文件,如音效文件等。编译软件时,这些数据不会被编译,它
    们被直接加入到程序安装包里。
    5、libs 支持库目录
    程序开发时需要的一些三方的 jar 包可以放在这个目录,通常系统会自动把里面的 jar 包,添加到环境
    变量,如果自动添加不了那么就需要手动添加。

    6、assets 资源目录
    Android 除了提供 res 资源文件外,在 assets 目录中可以存放资源文件,而且 assets 目录下的资源文件
    不会在 R.java 中自动生成 id。
    7、AndroidManifest.xml 项目清单文件
    该文件用于配置四大组件、声明权限、配置应用版本等参数。
    8、project.properties 项目环境信息,一般是不需要修改此文件。
    9、proguard-project.txt 用于配置代码混淆参数。

    4.3、运行

    4.4、打包过程

    ADT 将 Android 工程编译成 APK 中间经历了一系列过程,
     Android 打包过程


    ADT 将 Java 源文件编译成.class,然后调用 dx 工具将所有的.class 抽取到一个叫 classes.dex 的文件中。
    然后调用 aapt 工具将 Android 中所有的资源,包括 res 和 assets 资源以及清单文件一起打包成 apk 文件,
    然后在部署的时候给 apk 进行签名操作,最后通过 ADB 工具将签名后的 APK 部署到模拟器上。
    上面的过程完全是 ADT 自动帮我们完成的。签名是用于区分同一包名的时候应用身份的,也就是如
    果应用的包名相同签名不一样是不可以安装到同一个手机上的,如果包名相同签名也相同则可以覆盖安
    装。

    五、ADB 简介

    5.1、ADB 介绍

    adb 是 Android Debug Bridge 的简称,通过 adb 可以在 Eclipse 中通过 DDMS 来调试 Android 程序, adb
    启动时会占用 5554 端口,因此要避免其他应用跟该端口冲突。默认情况下所以当我们运行 Eclipse 时 adb
    进程就会自动运行。
    adb 还可以通过命令行使用,前提是将 adb.exe 所在路径已经配置到了系统环境变量。adb.exe 位于sdk/platform-tools 目录下。环境变量的配置跟 JDK 相似,

    5.2、ADB 常用命令

    1、adb devices 列出当前连接上所有设备


    2、adb install xxx.apk 将 xxx.apk 安装到模拟器上

    多个设备连接时,选择设备安装


    3、adb uninstall 包名 卸载应用

    多个设备连接卸载


    4、adb push <本地路径><远程路径> 将本地文件上传到模拟器上


    5、adb pull <远程路径><本地路径> 将模拟器上文件下载到本地


    6、adb kill-server 杀死 adb 进程


    7、adb start-server 启动 adb 进程


    8、adb shell 进入 Linux shell 命令行

     

  • 相关阅读:
    time 时间模块的函数调用
    str 文本函数的调用
    批量分发公钥
    K8s集群部署(四)------ Flannel网络部署
    kuberbetes基础概念
    K8s集群部署(三)------ Node节点部署
    K8s集群部署(二)------ Master节点部署
    K8s集群部署(一)------ETCD集群部署
    日常更新脚本
    CentOS7系统安装
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4968409.html
Copyright © 2011-2022 走看看