Android 学习记录_系统结构, res 目录, App 目录下的 build.gradle 文件
Android 系统架构
Android 大致分为四层架构: Linux 内核层, 系统运行库层, 应用框架层, 应用层
1.Linux 内核层
Android 系统是基于 Linux 内核的, 这一层为 Android 设备的各种硬件提供了底层的驱动.
2. 系统运行库层
这一层通过一些 C/C++ 库来为 Android 系统提供了主要的特性支持.
在这一层还有 Android 运行时库:
它主要提供了一些核心库, 能够允许使用 Java 语言来编写 Android 应用.
Android 运行时库中还包含 Dalvik 虚拟机 (5.0 系统之后改为 ART 运行环境), 它使得每一个 Android 应用都能运行在独立的进程当中, 并且拥有一个自己的 Dalvik 虚拟机实例.
3. 应用框架层
这一层主要提供了构建应用程序时可能用到的各种 API.
4. 应用层
所有安装在手机上的应用程序都是属于这一层的.
Android 系统是通过包名来区分不同应用程序的, 因此包名一定要具有唯一性.
这段代码表示对 MainActivity 这个活动进行注册, 没有在 AndroidManifest.xml 里注册的活动是不能使用的.
intent-filter 里面的两行代码表示 MainAcitvity 是这个项目的主活动, 在手机上点击应用图标, 首先启动就是这个活动.
AppCompatActivity 是一种向下兼容的 Activity, 可以将 Activity 在各个系统版本中增加的特性和功能最低兼容到 Android 2.1 系统.
Activity 是 Android 系统提供的一个活动基类, 项目中所有的活动都必须继承它或者它的子类才能拥有活动的特性 (AppCompatActivity 是 Activity 的子类)
res 目录
res.PNG
1.drawable
用来存放图片
2.mipmap
用来存放应用图标
3.values
用来存放字符串, 样式, 颜色等配置
4.layout
用来存放布局文件
使用这些资源, 两种方式来引用
1. 在代码中通过 R.string.app_name 可以获得该字符串的引用
2. 在 xml 中通过 @string/app_name 可以获得该字符串的引用
注释: 其中 string 部分是可以替换的 (drawable,mipmap,layout)
App 目录下的 build.gradle 文件
App 目录下的 build.gradle 文件. PNG
1.apply plugin: 'xxx'
com.Android.application 表示这是一个应用程序模块
com.Android.library 表示这是一个库模块
区别:
应用程序模块是可以直接运行的
库模块只能作为代码库依附于别的应用程序模块来运行
2. Android 闭包
1.compileSdkVersion 指定项目的编译版本
2.buildToolsVersion 指定项目构建工具的版本
3.defaultConfig
applicationId 指定项目的包名
minSdkVersion 指定项目最低兼容的 Android 系统版本
targetSdkVersion 指定的值表示在该目标版本上已经做过了充分的测试, 系统将会为应用启用一些最新的功能和特性
versionCode 指定项目的版本号
versionName 指定项目的版本名
buildTypes 闭包: 用于指定生成安装文件的相关配置
debug 用于指定生成测试版安装文件的配置
release 用于指定生成正式版安装文件的配置
minifyEnabled 指定是否对项目的代码进行混淆 (true 表示混淆, false 表示不混淆)
proguardFiles 指定混淆时使用的规则文件, 这里指定了两个文件
proguard-Android.txt 是在 Android SDK 目录下的, 里面是所有项目通用的混淆规则
proguard-rules.pro 是在当前项目的根目录下的, 里面可以编写当前项目特有的混淆规则
3.dependencies 闭包: 指定当前项目所有的依赖关系
有 3 种依赖方式:
本地依赖: 可以对本地的 Jar 包或目录添加依赖关系
本地依赖声明:
implementation fileTree(dir: 'libs', include: ['*.jar'])
表示将 libs 目录下所有. jar 后缀的文件都添加到项目的构建路径当中
库依赖: 可以对项目中的库模块添加依赖关系
库依赖声明:
Implementation project(':helper')
远程依赖: 可以对 jcenter 库上的开源项目添加依赖关系
远程依赖声明:
implementation 'androidx.appcompat:appcompat:1.1.0'
声明:《第一行代码 (第 2 版)》
来源: http://www.jianshu.com/p/4a3e2f3257d4