第1章 Android基础入门

课后题:

1.简述Android源代码的编译过程

每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行:Java源文件经过JDK编译器编译成class文件后,Dalvik虚拟机中的Dx工具会将部分的class文件转换成dex文件(dex文件中包含多个类),dex文件相比jar更加紧凑,但是为了在运行过程中进一步提升性能,dex文件还会进一步优化成odex文件。
下图为Dalvik虚拟机编译文件过程:
在这里插入图片描述

2.简述Android系统架构包含的层次以及各层的特点

Android系统采用分层架构,从高到低分为4层,分别为依次是应用程序层(Applications)、应用程序框架层(Application Framework)、核心类库(Libraries)和Linux内核(Linux Kernel),各层的特点具体如下:
①应用程序层:是一个核心应用程序的集合,安装在手机上的应用程序都属于这一层,例如系统自带的联系人程序、短信程序、下载的小游戏
②应用程序框架层:Android自带的一些核心应用就是使用这些API完成的,主要提供了构建应用程序时用到的各种API。例如活动管理器、通知管理器、内容提供者等,开发者也可以通过这些API开发应用程序
③核心类库:主要包含了系统库和Android运行环境
*(了解)
1)系统库主要通过C/C++库来为Android系统提供主要的特性支持,如OpenGL/EL库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持
2)Android运行时库主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用程序,还包括了Dalvik虚拟机
④Linux内核:为Android设备的各种硬件提供了底层的驱动,如:显示驱动、音频驱动、照相机驱动、蓝牙驱动、电源管理驱动等等

1.1Android简介

1.1.1通信技术

1G:仅限语音的蜂窝煤电话标准/只能进行通话,并且通话是锁定在一定频率上的
2G:以数字语音传输技术为核心/接收数据19.6kbit/s
3G:处理媒体形式/在传输声音和速度上有很大提升/2Mbit/s、384kbit/s、144kbit/s
4G:100Mbit/s/无线服务
5G:10Gbit/s

1.1.3Android体系结构

1.应用程序层

是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,例如系统自带的联系人程序、短信程序等等

2.应用程序框架层

主要提供了构建应用程序时用到的各种API。Android自带的一些核心应用就是使用这些API完成的,例如活动管理器(Activity Manager)、通知管理器(Notification Manager)、内容提供者(ContentProvider)等,开发者也可以通过这些API开发应用程序

3.核心类库

核心类库中包含了系统库及Android运行环境,其中:
①系统库主要是通过C/C++库来为Android系统提供主要的特性支持
②Android运行时库主要提供了一些核心库,能欧允许开发者使用Java语言来编写Android应用程序,另外,Android运行时库中还包括了Dalvik虚拟机,它使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例

4.Linux内核

为Android设备的各种硬件提供了底层的驱动

1.1.4Dalvik虚拟机

Dalvik的指令集基于寄存器架构,执行其特有的dex文件来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能
每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行:
在这里插入图片描述
Java源文件经过JDK编译器变异成class文件之后,Dalvik虚拟机中的Dx工具会将部分class文件转换成dex文件,dex文件包含多个类,dex文件相比jar更加紧凑,但是为了在运行过程中进一步提高性能,dex文件还会进一步优化成odex文件
每个Android程序都运行在一个Dalvik虚拟机实例中,而每一个Dalvik虚拟机实例都是一个独立的进程空间,每个进程之间可以通信

1.4Android程序结构

1.4.1 app

用于存放程序的代码和资源等内容,它包含了很多子目录:
在这里插入图片描述

1.4.2 build.gradle

是程序的gradle构建脚本

1.4.3 local.properties

用于指定项目中所使用的的SDK路径

1.4.4 setting.gradle

用于配置Android程序中使用到的子项目

1.5资源的管理与使用

Android程序中资源指的是可以在代码中使用的外部文件,这些文件作为应用程序的一部分,被编译到App中,在Android程序中,资源文件都保存在res目录下

1.5.1图片资源

扩展名:.png、.jpg、.gif、.9.png等

根据用途分为:
①应用图标资源,存放在以mipmap开头的文件夹中
②界面中使用的图片资源,存放在drawable开头的文件夹中
根据设备屏幕密度的不同,Android系统会自动匹配不同文件夹中的图片资源

调用:
①通过Java代码调用图片资源

getResourses().getDrawable(R.mipmap.ic_launcher);
getResourses().getDrawable(R.drawable.icon);

②在XML布局文件中调用图片资源

@mipmap/ic_launcher
@drawable/icon

1.5.2主题与样式资源

用于为界面元素定义显示风格

1.主题

一种或多种的格式化属性集合
调用主题资源可改变窗体的样式,对整个应用或某个Activity存在全局性影响
主题资源定义在res/values目录下的style.xml文件中

<resources>
	<!-- Base application theme. -->
	<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"
		<!--Customize your theme here. -->
		<item name="colorPrimary">@color/colorPrimary</item>
		......
	</style>
</resources>

根元素resources中可以包含多个style标签,每个style标签中也可以包含多个item标签

调用主题:
①AndroidManifest.xml:

<application
	...
	android.theme="@style/AppTheme">
</application>

②在java代码中

setTheme(R.style.AppTheme);

2.样式

用来美化View控件,改变主题可以改变整个窗体样式,但是不能设置View控件的具体样式
存放res/values目录下的style.xml文件中

<resources>
	<style name="textViewStyle">
		<item name="android:layout_width">20dp</item>
		<item name="android:layout_height">20dp</item>
		<item name="android:background">#f54e39</item>
	</style>
</resources>

调用:

<TextView
	......
	style="@style/textViewStyle"/>

1.5.3布局资源

创建一个Android程序时,默认会在res/layout文件夹中生成一个布局资源文件activity_main.xml,也可在res/layout文件夹中穿件新的布局资源文件
调用:
①java代码
在Activity中,找到onCreate()方法,在该方法中通过调用setContentView()方法来加载Activity对应的布局资源文件

setContentView(R.layout.activity_main);

②在XML布局中调用

<include layout="@layout/activity_main"/>

1.5.4字符串资源

存放在res/values目录中的strings.xml文件夹中

<resources>
	<string name="app_name">字符串</string>
</resources>

调用:
①通过Java代码

getResources().getString(R.string.app_name)

②在XML布局文件中

@string/app_name

1.5.5颜色资源

定义在res/values/colors.xml文件中

<?xml version="1.0" encoding="utf-8"?>
	<resources>
		<color name="colorPrimary">#3F51B5</color>
		<color name="colorPrimaryDark">#303F9F</color>
		<color name="colorPrimary">#FF4081</color>
	</resources>		

调用:
①Java代码

getResources().getColor(R.color.colorPrimary);

②XML布局

@color/colorPrimary

定义颜色值:
RGB(红,蓝,绿)三原色和一个透明度(Alpha)
颜色值必须以#开头,#后面显示Alpha-Red-Green-Blue形式,Alpha值可以省略
四种形式:
①#RGB
②#ARGB
③#RRGGBB
④#AARRGGBB

1.5.6尺寸资源

在Android界面中View的宽高和View之间的间距值是通过尺寸资源设置的,资源通常定义在res/values/dimens.xml文件中

<resources>
	<dimen name="activity_horizontal_margin">16dp</dimen>
	<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

调用:
①Java

getResources().getDimension(R.dimen.activity_horizontal_margin);

②XML

@dimen/activity_horizontal_margin

Android支持的尺寸单位:
px:像素,每个px对应屏幕上的一个点
dp:设备独立像素,与屏幕密度无关/自动适配
sp:比例像素,主要处理字体大小,会在不同像素密度的设备上自动适配
in:英寸,标准长度单位1,英寸=2.54厘米,尺寸是指屏幕对角线的长度
pt:磅,屏幕物理长度单位,1磅为1/72英寸
mm:毫米,屏幕物理长度单位

1.6程序调试

1.6.1单元测试

Android程序开发过程中对最小功能模块进行测试,单元测试包括Android单元测试和Junit测试

1.Android单元测试

需连接Android设备,速度表较慢,适合需要调用Android API的单元测试
使用@RunWith(AndroidJUnit4.class)注解ExampleInstrumentedTest类,@Test注解该类中的方法

2.Junit测试

不需要连接Android涉笔,在本地即可运行,速度快
适合只对Java代码功能进行的单元测试
ExampleUnitTest.java文件中使用@Test注解该类中的方法

1.6.2LogCat的使用

LogCat是Android中的命令行工具,用于获取程序从启动到关闭的日志信息
Android程序运行在设备中时,程序的调试信息就会输出到该设备单独的日志缓冲区中
Android使用android.util.Log类的静态方法实现输出程序的调试信息,Log类所输出的日志内容分为六个级别:
①Log.v() Verbose级别
②Log.d() Debug级别
③Log.i() Info级别
④Log.w() Warning级别
⑤Log.e() Error级别
⑥Log.wtf() Assert级别
由低到高

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

so.far_away

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值