郭霖第一行代码第三版学习笔记(一)
一、简介
作者:Andy Rubin
官网:https://developer.android.google.cn/studio
1、Android系统架构
- Linux内核层。Android系统基于Linux内核,这一层提供各种硬件支持,底层的驱动,如显示驱动、音频驱动等
- 系统运行库层。一些C/C++库,包括SQLite,WebKit等,还有ART运行环境
- 应用框架层。为构建应用程序提供各种API
- 应用层。应用程序

2、四大组件
Activity界面,Service服务,BroadCast广播,ContentProvider共享数据
3、开发环境
- JDK
- SDK
- AndroidStudio
4、项目配置
- Name:项目名称
- Package Name:包名
- Minimum API level:最小适配版本
5、项目结构

- .gradle和.idea。AndroidStudio自动生成,不用管
- app。项目中的代码资源
- build。编译时生成的文件,不用管
- gradle。gradle wrapper的配置文件,默认gradle wrapper。改离线方式,File》Settings》Build,Execution》Gradle
- .gitIgnore。排除文件设置
- build.gradle。全局gradle构建脚本
- gradle.properties。全局Gradle配置文件
- gradlew和gradlew.bat:命令行执行Gradle命令的,gradlew是Linux或Mac
- HelloWorld.iml:Idea自动生成,不用管
- local.properties:指定本机SDK路径
- settings.gradle:指定项目引入的模块
app目录结构

- build:编译文件,不管
- libs:引入的jar包
- androidTest:编写android测试用例的
- java:放代码
- res:放资源文件。drawable图片,layout布局,values字符串
- AndroidManifest.xml。配置文件。四大组件在这注册,添加权限也在这
- test:编写UnitTest测试用例的
- .gitIgnore。排除在版本控制外
- app.iml。Idea自动生成的
- build.gradle。app模块的gradle构建脚本配置
- proguard-rules.pro。设置代码混淆规则的地方,防止代码被破解
MainActivity是主Activity,Launcher首先启动的。
AppCompatActivity是 AndroidX中提供的一种向下兼容的Activity
美工只会提供给我们一份图片时把所有图片都放在drawable-xxhdpi目 录下,这是最主流的设备分辨率目录
String.xml
HelloWorld
- 在代码中通过R.string.app_name可以获得该字符串的引用。
- 在XML中通过@string/app_name可以获得该字符串的引用。
- 引用的图片资源替换成drawable,引用的应用图标替换成mipmap,引用的布局文件替换成layout
AndroidManifest.xml
最外层目录下的build.gradle
repositories { 代码仓库google()jcenter()mavenCentral()}dependencies {依赖
app目录下的build.gradle
#应用插件。application表示这是一个应用程序模块,com.android.library表示这是一个库模块。库模块只能作为代码库依附于别的应用程序模块来运行
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' #kotlin开发必须插件
apply plugin: 'kotlin-android-extensions' #kotlin扩展插件
android {compileSdkVersion 29 #指定项目的编译版本。29表示使用Android 10.0系统的SDK编译buildToolsVersion "29.0.2" #指定项目构建工具的版本defaultConfig {applicationId "com.example.helloworld" #每一个应用的唯一标识符,不能重复,默认创建项目时的包名minSdkVersion 21 #指定项目最低兼容的Android系统版本,这里指定成21表示Android 5.0targetSdkVersion 29 #值表示你在该目标版本上已经
做过了充分的测试,系统将会为你的应用程序启用一些最新的功能和特性versionCode 1 #指定项目的版本号versionName "1.0" #指定项目的版本名testInstrumentationRunner #r用于在当前项
目中启用JUnit测试
"androidx.test.runner.AndroidJUnitRunner"}buildtypes通常只有两个子闭包:debug和release。
debug指定生成测试版安装文件的配置,release指定生成正式版安装文件配置buildTypes {release {minifyEnabled false #指定是否对项目的代码进行混淆,true混淆proguardFiles 指定混淆时使用的规则文件,这里指定了两个文件:第一个proguard-android-optimize.txt是在
/tools/proguard目录下的,里面是所有项目通用的混淆规则;第二个proguard-rules.pro是在当前项目的根目录下的,里面可以编写当前项目特有的混淆规则getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'}}
}
dependencies {implementation fileTree(dir: 'libs', include: ['*.jar']) #implementation fileTree就是一个本地依赖声明implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" #implementation则是远程依赖声明implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.core:core-ktx:1.1.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12' #声明测试用例库androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' #
库依赖声明,基本格式是implementation project后面加上要 依赖的库的名称,比如库模块的名字叫helper,那么添加这个库的依赖关系只需要加入 implementation project(‘:helper’)
6、日志工具使用
-
Log.v()。对应级别verbose,用于打印那些最为琐碎的日志信息。级别最低。
-
Log.d()。对应级别debug。用于打印一些调试分析信息的。比verbose高一级。
-
Log.i()。对应级别info。打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分 析用户行为的数据。,比debug高一级。
-
Log.w()。对应级别warn。用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好修复。,比info高一级。
-
Log.e()。对应级别error。用于打印程序中的错误信息,比如程序进入了catch语句中。当有错误信息打 印出来的时候,一般代表你的程序出现严重问题了,必须尽快修复。比 warn高一级。

Show only selected application表示只显示当前选中程序的日志; Firebase是Google提供的一个开发者工具和基础架构平台,我们可以不用管它;No Filters相 www.blogss.cn 当于没有过滤器,会把所有的日志都显示出来。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

