目录:
知识点:
1.1 了解全貌——Android王国简介
Android从面试以来已经发布了二十几个版本了,在这几年的发展过程中,谷歌建立了一个完整的生态系统。手机厂商,开发者,用户之间相互依赖,共同推荐Android的蓬勃发展。
1.1.1 Android 系统架构
Android大致分为四层架构:
Linux内核层:底层驱动,如显示,音频,相机驱动等
系统运行库层:通过C/C++库为Android系统提供特性支持(虚拟器,OpenGl|ES库,WebKit等)
应用框架层:提供各种API
应用层:所有安装在手机上的应用程序都是属于这一层的,如系统自带的联系人,短信等程序。
1.1.1 Android 已发布版本
1.1.3 Android 应用开发特色
- 四大组件
- 丰富的系统控件
- Sqlite数据库
- 强大的多媒体
- 地理位置定位
1.2 手把手带你搭建开发环境
1.2.1 准备所需要的工具
1.2.2 搭建开发环境
1.3 创建你的第一个Android项目
1.3.1 创建HelloWorld项目
1.3.2 启动模拟器
1.3.3 运行HelloWorld
详细请看:https://blog.csdn.net/m0_37240709/article/details/76069176
1.3.4 分析你的第一个Android程序
项目结构
- .gradle和idea:放置的都是Android Studio 自动生成的一些文件,无需关心
- app:项目中的代码,资源等
- build:包含了一些在编译时自动生成的文件,无需关心
- gradle:包含了gradle wrapper配置文件,会自动根据缓存情况决定是否联网下载gradle。Android Studio默认没有启动gradle wrapper方式,如果需要打开,可以点击 导航栏-File-Settings-Build,Execution,Deployment-Gradle,进行配置
- .gitgnore:用来指定的目录或文件排除在版本控制之外的
- build.gradle:项目全局的gradle构建脚本
- gradle.properties:是全局的gradle配置文件
- gradlew和gradlew.bat:用来在命令行执行gradle命令的,其中gradlew是在Linux或Mac中使用的,gradlew.bat是在Window系统使用的
- HelloWorld.iml:自动生成的,用于表示这是一个IntelliJ IDEA项目
- local.propeties:指定本机的Android Sdk路径
- setting.gradle:指定项目所有的引用模块
1.3.5 详解项目中的资源
所有以drawable开头的文件用来放图片的,所有以mipmap开头的文件夹用来放应用图标的
程序运行后会根据屏幕的分辨率加载哪个文件下的内容
1.3.6 详解build.grdle文件
不同于Eclipse,Android Studio 是采用Gradle来构建项目的,它使用了一种基于Groovy的领域特定语言(DSL)来声明项目设置,摒弃了传统基于xml(如Ant和Maven)的各种烦琐设置。
最外层目录下的build.gradle文件,代码如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这些代码都是自动生成的,通常情况下不需要修改这个文件中的内容。两处repositories闭包中都声明了jcenter(),jcenter是一个代码托管仓库,从而使得我们在项目中可以引用任何jcenter上的开源项目。dependencies闭包中使用classpath声明了一个Gradle插件,因为Gradle并不是专门为构建Android项目而开发的,Java、C++等很多种项目都可以使用Gradle来构建。如果想要使用Gradle来构建Android项目,则需要声明com.android.tools.build:gradle:2.3.3这个插件,其中,后面是插件的版本号。
app目录下的build.gradle文件,代码如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "27.0.0"
defaultConfig {
applicationId "com.example.helloworld"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:26.+'
testCompile 'junit:junit:4.12'
}
首先第一行应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块;com.android.library表示是一个库模块。应用程序模块是可以直接运行的,库模块只能作为代码库附于在别的应用程序模块来运行。
android闭包:
compileSdkVersion:指定项目的编译版本。
buildToolsVersion:指定项目构建工具的版本。
defaultConfig闭包:
applicationId:指定项目的包名
minSdkVersion:指定项目最低兼容的Android系统版本
targetSdkVersion:指定项目的目标版本
versionCode:指定项目的版本号
versionName:指定项目的版本名
buildTypes闭包:
通常只会有两个子闭包:debug和release。其中debug闭包可以忽略不写。debug闭包用于指定生成测试版安装文件的配置;release闭包用于指定生成正式版安装文件的配置。
release闭包
minifyEnabled:指定是否对项目的代码进行混淆。
proguardFiles:指定混淆时使用的规则文件。proguard-android.txt是在Android SDK目录下,里面是所有项目通用的混淆规则;proguard-rules.pro是在当前项目的根目录下,里面可以编写当前项目特有的混淆规则。
dependencies闭包
指定当前项目所有的依赖关系。
compile fileTree:声明本地依赖,表示将libs目录下所有.jar后缀的文件都添加到项目的构建路径中。
compile:声明远程依赖。
testCompile:声明测试用例库。
1.4 前行必备——掌握日志工具的使用
1.4.1 使用Android的日志工具
日志工具类是Log(android.util.log)
- Log.v():打印最为琐碎、意义最小的日志信息
- Log.d():打印调试信息
- Log.i():打印比较重要的数据
- Log.w():打印警告信息
- Log.e():打印错误信息
1.4.2 为什么使用Log而不是用System.out
System.out缺点:打印不可控制,打印时间无法确定,不能添加过滤器,日志没有级别区分。。。
那么Log就把Syso的所有缺点都改掉了吗?虽然谈不上全部,但我觉得已经做得相当不错了。
同时我们也可以通过Logcat配置打印信息 过滤器等。
1.5 小结与点评
郭霖总结:
你现在一一定会觉得很充实,甚至有点沾沾自喜。确实应该如此,因为你已经成为一-名真正的Android开发者了。通过本章的学习,你首先对Android 系统有了更加充足的认识,然后成功将Android开发环境搭建了起来,接着创建了你自己的第一一个 Android项目,并对Android项目的目录结构和执行过程有了一定的认识, 在本章的最后还学习了Android日志工具的使用,这难道还不够充实吗?
不过你也别太过于满足,相信你很清楚,Android 开发者和出色的Android 开发者还是有很大的区别的,你还需要付出更多的努力才行。即使你目前在Java 领域已经有了不错的成绩,我也希望在Android的世界你可以放下身段,以一只萌级小菜鸟的身份起飞,在后面的旅途中你会不断地成长。
现在你可以非常安心地休息一段时间, 因为今天你已经做得非常不错了。储备好能量,准备进人到下一章的旅程当中。
我的总结:
因为本身就是在做Android程序,所以第一章对于我来说,又加深了一些印象。