Android系统采用分层架构,自下而上分别是:Linux内核层与可信执行环境(TEE)、硬件抽象层(HAL)、原生C/C++库与Android运行时环境(ART)、应用程序框架层(Framework)和应用层(Apps)
安卓架构
- Linux 内核层
- 系统运行库层
- 应用框架层
- 应用层

四大组件
Android 系统到底提供了哪些东西,供我们可以开发出优秀的应用程序。
活动是所有 Android 应用程序的门面, 凡是在应用中你看得到的东西,都是放在活动中的 。而服务就比较低调了,你无法看到 它,但它会一直在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的。 广播接收器可以允许你的应用接收来自各处的广播消息,比如电话、短信等,当然你的 应用同样也可以向外发出广播消息。 内容提供器则为应用程序之间共享数据提供了可 能,比如你想要读取系统电话簿中的联系人,就需要通过内容提供器来实现。
项目结构
开发准备
- Android SDK
- AndroidStudio Version4.1.4
- JDK Version1.8

- .gradle .idea
放置自动生成的一些文件。无需关心,都是AndroidStudio自动生成的一些文件。
- app
主要的工作目录,项目代码,资源都在这里。
- build 编译自动生成的文件。
- src
- main
- AndroidMainifest.xml
- main
程序注册的组件都要在这个文件里注册。
libs 如果你的项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目 录下的jar包都会被自动添加到构建路径里去。
proguard-rules.pro
指定项目的混淆规则。代码开发完打包文件,不希望别人破解,对代码进行混淆。
- gradle
包含了gradle wrapper的配置文件。
这个目录下包含了 gradle wrapper的配置文件,使用 gradle wrapper I的方式不需要提前将 gradle 下载好,而是会自动根据本地的缓存情况决定是否需要联网下载 gradle。
- .gitignore
版本控制忽略文件
- build.gradle
gradle构建脚本
- gradle.properties
全局gradle的配置文件。
- gradlew gradlew.bat
windows和mac系统使用gradle命令
- local.properties
放置本机SDK 安卓
- settings.gradle
第一个安卓应用
创建应用
Name参数就是装好APP的名称。Package name表示项目的包名。安卓是通过不同的包名来区分不同应用程序的。

<activity android:name=".MainActivity"><intent-filter><!--非常重要表示这个是程序的主活动,手机点击图标,首先启动的就是这个活动。--><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
引用资源
res/values/strings.xml
<resources><string name="app_name">HelloWorld</string></resources>
引用方式
// 方式1 代码R.string.hello_world// 方式2 XML@string/hello_world
比如
build.gradle
可以看到有两个这个文件,一个是最外层,一个是app目录下的。
最外层
buildscript {repositories {google()jcenter()}dependencies {classpath "com.android.tools.build:gradle:4.1.1" // 使用这个插件构建安卓应用classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"}}allprojects {repositories {google()jcenter()}}task clean(type: Delete) {delete rootProject.buildDir}
内层
plugins {id 'com.android.application' // 表示这是一个应用程序模块 com.android.library表示库模块id 'kotlin-android' // Kotlin 语言}// 大闭包android {compileSdkVersion 30 // 编译SDK版本buildToolsVersion "30.0.2" // 指定项目构建工具版本defaultConfig {applicationId "com.example.helloworld" // 项目包名minSdkVersion 26 // 项目最低兼容系统版本targetSdkVersion 30 // 在该目标版本桑做过充分测试versionCode 1 // 项目的版本号。versionName "1.0" // 版本名testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}// 生成安装文件的相关配置。 通常两个子包 debug/releasebuildTypes {release {minifyEnabled false // 指定是否对项目的代码进行混淆proguardfiles表示混淆文件。proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}}// 依赖关系 本地依赖/库依赖/远程依赖dependencies {implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'com.google.android.material:material:1.1.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.+' // 测试用例库androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'}
日志工具
Android日志工具类。Log (android.util.Log)
技巧
方法内: 快速补全
方法外:快速补全 logt
**
D/MainActivity: onCreate: Yes
过滤器
