摘录自
书名:第一行代码——Android(第2版)
作者:郭霖
E:\AndroidProject
0 前瞻
Android的四大组件是Activity(活动)、Service(服务)、Broadcast Receiver(广播接收器)、Content Provider(内容提供器)。
Activity是Android应用程序的门面,凡是在应用中看到的东西,都是放在活动中的。
Service是一直在后台运行,即使用户退出了应用,服务依旧可以运行。
Broadcast Receiver是应用接收来自各处的广播消息,比如电话、短信等,也可以起到向外发送广播消息的作用。
Content Provider是为应用之间提供数据共享功能。
1 Day 01
1.1 文件结构
- 外层目录
.app
项目的代码、资源等内容几乎都存放在这个目录下的,后面的开发工作也基本在这个目录下进行的
.gradle
包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle提前下载好,而是自动根据本地的缓存情况决定是否需要进行联网下载gradle。Android Studio并未默认开启(Android Studio导航栏->File->Settings->Build,Executing,Deployment->Gradle)
.gitignore
用来将指定的目录或文件排除在版本之外(git)
.gradle.properties
全局的gradle配置文件,这里配置的属性将会影响到项目中所有的gradle编译脚本
- .app目录
.androidTest
用来编写Android Test测试用例的,可以对项目进行一些自动化测试
.java
存放所用java代码的地方
.res
所有的图片(drawable目录)、布局(layout目录)、字符串(values目录)存放的地方
.AndroidManifest.xml
是整个Android项目的配置文件,程序中定义的四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明
.test
用于编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式
.build.gradle
app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置
1.2 资源的调用
- 调用字符串资源方法
- src\main\res\values\strings.xml
<resources>
<string name="app_name">My Application</string>
</resources>
<!--这里定义了一个应用名称的字符串-->
R.sring.app_name//在代码中调用
@string/app_name<!--在XML中调用-->
这里string部分是可以替换的,如果是引用图片资源可以替换成为drawable,引用应用图标就可以换成mipmap,布局文件则换成layout
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication">
通过以上方法可以修改应用的名称、图标等信息
1.3 build.gradle
- .app.build.gradle
- 只对截取部分代码进行注释
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.example.myapplication"//用于指定项目包名
minSdkVersion 24//项目最低兼容Android系统版本
targetSdkVersion 30//你在这个版本进行了充分测试
versionCode 1//指定项目的版本号,
versionName "1.0"//指定版本名
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {//用于指定生成安装文件的相关配置,通常包括debug(可以忽略不写)以及release
release {
minifyEnabled false//是否对代码进行混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
//proguardFiles用于指定混淆规则文件
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
1.4 日志工具
-
日志工具(android.util.Log)
Log.v()//用于打印最为繁琐、意义最小的日志,对应级别verbose,级别最低 Log.d()//用于打印调试信息,对应debug级别,比verbose高一级 Log.i()//用于打印比较重要的数据,可以帮助分析用户行为数据,对应info级别,比debug高一级 Log.w()//用于打印一些警告信息,提示程序可能存在潜在风险,最好去修复出现警告的地方,对应级别warn,比info高级 Log.e()//用于打印错误信息,需要尽快修复,对应级别error,比warn高级