美文网首页Android开发Android开发经验谈Android技术知识
《第一行代码第三版》—— 我的第一行Android代码(一)

《第一行代码第三版》—— 我的第一行Android代码(一)

作者: jett老师 | 来源:发表于2020-09-19 20:29 被阅读0次

一、前言

今年4月郭霖大佬出版了新书《第一行代码》第三版,与前几版不同的是以下几点:

(1)编程语言基于Kotlin;
(2)基于Android10.0开发;
(3)提到JetPack、Retrofit、MVVM等全新的知识点。

一方面学校因为疫情原因迟迟不开学,另一方面大论文已经提交。有幸拿到签名版的书后,开始利用这段时间尽快学习、总结。

二、思维导图

Android的思维导图如下:

Kotlin的思维导图如下:

内容学习笔记

我的第一行Android代码(一)

1.1.Android简介

  • 1.1.1.Android系统架构

    自下而上:Linux内核层(为硬件提供底层驱动。eg:显示驱动、音频驱动等)、系统运行时层(C/C++库和android运行时库,前者有Sqlite和OpenGL等,后者有ART虚拟机和核心库等)、应用框架层(系统API,譬如ActivityManager、WindowManager、ContentProvider)、应用层(应用程序,譬如联系人、短信、自己开发的app等)。

2020.3月逐渐推出Android 11版本。5.0使用ART虚拟机代替DVM虚拟机,提出Material Design来优化界面设计,5.0以上占比超过85%。

  • 1.1.2.Android应用开发特色

    (1)四大组件 :Activity、Service、BroadcastReceiver、ContentProvider。Activity是应用程序显示的界面;Service后台默默运行,即使用户退出app;BroadcastReceiver使得app接受各处广播消息,也可以向外发出消息;ContentProvider可以使得app之间的数据共享。譬如:读取联系人;
    (2)丰富系统控件: Android界面系统控件和自定义控件。
    (3)SQLite数据库: 轻量级、运算速度极快的嵌入式关系型数据库。支持SQL语法和系统API。
    (4)强大多媒体: 音乐、视频、录音、拍照等。

1.2.搭建开发环境

JDK(java运行环境、工具集合、基础类库)+SDK(android开发工具包)+Android studio

1.3.创建Android项目

  • 1.3.1.文件结构解析
image

1.build:编译自动生成的文件
2.gradle:gradle wrapper配置文件
3..gitignore:哪些文件排除在版本控制之外
4.Build.gradle:项目全局gradle脚本
5.Grale.properties:全局gradle配置文件,配置相关属性
6.gradlew和gradlew.bat:命令行界面执行gradle命令
7.Local.properties:本机SDK路径
8.Setting.gradle:制定项目所有引入的模块,目前只有app模块
9.app目录:项目代码、资源
9.1.build:系统自动生成文件
9.2.libs:第三方jar包
9.3.androiTest:Android test自动化测试用例
9.4.Java:所有java代码放置地方,MainActivity.java
9.5.res:图片、布局、字符串等
9.6.AndroidManifest.xml:项目配置文件,譬如四大组件的定义
9.7.Test:unit test自动化测试用例
9.8.Build.gradle:app模块的gradle构建样本,项目构建相关配置
9.9.Progurad-reles.pro:执行项目混淆规则
10.res目录:图片、布局、字符串等

10.1.drawable:图片
10.2.Mipmap:图标(不同后缀更好兼容设备)
10.3.Vaules:字符串、样式、颜色等。以下为values的内容

通过R.string.app_name或者@string/app_name获得该字符串的引用。

  • 1.3.2.详解build.gradle文件
    最外层目录的build.gradle
//Gradle是基于Groovy领域特定语言(DSL)来进行项目设置的。
buildscript {
    ext.kotlin_version = '1.3.71'
    //闭包声明了两个代码仓库
    repositories {
        google() //google扩展依赖库
        jcenter()//第三方开源库
 
    }
    //使用classpath声明了两个插件
    dependencies {
        //Gradle插件的目的是构建android项目,与AS版本一致
        classpath 'com.android.tools.build:gradle:3.6.3'
        //Kotlin插件
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
 
allprojects {
    repositories {
        google()
        jcenter()
    }
}

app目录的build.gradle

apply plugin: 'com.android.application'//应用程序模块,也可以设置为库模块
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'//kotlin模块和扩展功能
//项目构建的各个属性
android {
    compileSdkVersion 28  //指定项目编译版本
    buildToolsVersion "29.0.3"  //Android10.0SDK编译
    //项目更多细节配置
    defaultConfig {
        applicationId "com.example.myapplication"//应用唯一标识符
        minSdkVersion 21///项目最低兼容版本,最低兼容5.0
        targetSdkVersion 28//目标版本,在该版本充分测试,启用新特性,9.0
        versionCode 1 //项目版本号
        versionName "1.0"//项目版本名
        //启用Junit测试用例
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    //生成安装文件的相关配置
    buildTypes {
    //一般一个release包(正式版安装文件配置),一个debug包(测试版安装文件配置)。
        release {
            minifyEnabled false//是否对项目混淆
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            //选择混淆规则
        }
    }
 
}
//指定项目所有依赖关系。本地依赖(jar包或者目录)、库依赖(项目中的库模块)和远程依赖(jcenter仓库开源项目)。
dependencies {
    //implementation fileTree本地依赖,libs目录底下的所有jar包  
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //implementation远程依赖声明,标准远程库格式,androidx.appcompat:为域名部分,appcompat为工程名,1.0.2是版本号
    //Gradle构建时会检查本地是否有库缓存,没有会自动联网下载并添加到项目构建路径
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    //implementation project是库依赖,譬如一个库名叫help,可以声明为(implementation project('help'))
    //声明测试用例库的
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

1.4.日志工具
Android中日志工具类是log。五个级别:log.v(verbose,琐碎的、意义最小的信息)、log.d(debug,调试信息)、log.i(info,重要信息,譬如分析用户数据行为信息)、log.w(warn,警告信息,潜在风险需要修复)、log.e(error,错误信息)。譬如:Log.d("MainActivity1","onCreate Create")。一个tag是传入当前类名,一个msg是打印具体内容。打印内容包括时间、进程号、类名和内容等。Logv可以看所有log信息。Logd可以看debug及以上级别的信息,依次类推。
System.out.println相较于log,日志开关不可控、没有级别划分、不能添加日志标签。有四个过滤器。Show only selected applications显示当前选中程序的日志;firebase是开发者工具和基础架构平台,不用管。No filter没有过滤器,所有日志都会显示;edit fileter config自定义过滤器。

结尾福利

Android进阶书籍学习资料免费分享。



Android进阶+学习笔记》(跨平台开发(Flutter)、java基础与原理,自定义view、NDK、架构设计、性能优化、完整商业项目开发等)
《第一行代码》(第二版)
《Android编程权威指南》(第2版)
《App研发录》
《深入理解Android》(卷1)
《Android开发艺术探索》
《Android Studio实战 快速、高效地构建Android应用》
《设计模式:可复用面向对象软件的基础》
《Effective Java》
《GitHub入门与实践》
所有资料获取方式:评论666+关注然后私信“视频”即可咨询资料免费领取方式!
直达领取链接:【Android高级架构师】文件夹下载!
  • 或者查看我的【GItHub

相关文章

网友评论

    本文标题:《第一行代码第三版》—— 我的第一行Android代码(一)

    本文链接:https://www.haomeiwen.com/subject/hasjyktx.html