GuoXin Li's Blog

Android Learning

字数统计: 687阅读时长: 3 min
2022/04/19 Share

Android Learning

Android系统架构

  • Linux 内核层

    为Android设备多种硬件提供底层的驱动及电源等管理。

  • 系统运行库

    通过C/C++库为Android系统提供主要的特性支持。如 OpenGL ES库和 Webkit浏览器内核。

  • 应用框架层

    提供构建应用程序时可能用到各种API。

  • 应用层

    安装使用的软件。

项目目录资源

res下

  • drawable :存放图片
  • mipmap:存放应用图标
  • values:存放字符串、样式、颜色配置
  • layout:存放布局文件

image-20220419163647118

build.gradle

最外层的为项目配置:

1
2
3
4
5
6
7
8
9
10
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
//gradle 的版本
id 'com.android.application' version '7.1.2' apply false
id 'com.android.library' version '7.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.5.30' apply false
}

task clean(type: Delete) {
delete rootProject.buildDir
}

项目中的部分配置能够在 setting.gradle 中找到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "My Application"
include ':app'

其中repositories 闭包中声明了 google() 和 jcenter() 配置,为Google拓展依赖库和第三方开源库。

app下的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}

android {
compileSdk 32 //根据Android系统适配的sdk

defaultConfig {
applicationId "com.example.myapplication"
minSdk 25
targetSdk 32
versionCode 1
versionName "1.0"

//当前项目中启用 JUnit 测试。
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

/*
buildTypes闭包中用于指定生成安装文件的相关配置,通常只会有两个子闭包:一个是debug,一个是release。debug闭包用于指定生成测试版安装文件的配置,release闭包用于指定生成正式版安装文件的配置。另外,debug闭包是可以忽略不写的,因此我们看到上面的代码中就只有一个release闭包。下面来看一下release闭包中的具体内容吧,minifyEnabled用于指定是否对项目的代码进行混淆true表示混淆,false表示不混淆。proguardFiles用于指定混淆时使用的规则文件,这里指定了两个文件:第一个proguard-android-optimize.txt是在<Android SDK>/tools/proguard目录下的,里面是所有项目通用的混淆规则;第二个proguard-rules.pro是在当前项目的根目录下的,里面可以编写当前项目特有的混淆规则。
*/
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}

dependencies {

//远程依赖声明:implementation
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
testImplementation 'junit:junit:4.13.2'
//声明测试用例
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
CATALOG
  1. 1. Android Learning
    1. 1.1. Android系统架构
    2. 1.2. 项目目录资源
    3. 1.3. build.gradle