系列文章目录

第一章 第一行代码-第二版(郭霖著)笔记(初识Android)


目录

一、Android简介

1.android系统架构

2.Android应用开发特色

二、工具准备

Tips:新建项目的时候是否勾选use legacy android.support libraries

三、分析第一个Android程序

1.app目录详解

2.分析HelloWorld项目

3.详解项目中的资源

4.详解build.gradle文件

四、Android中的日志工具类Log

1.Logcat中的过滤器


一、Android简介

1.android系统架构

linux kernel(Linux内核层):提供硬件底层驱动

libraries(系统运行库层):提供了主要的特性支持,如SQLite库、Webkit库;还包含android runtime(android运行时库)

application framework(应用框架层):提供了构建应用程序时可能用到的各种API

applications(应用层):手机上的应用程序

2.Android应用开发特色

1.四大组件

活动(Activity):看得到的

服务(Service):看不到的

广播接收器(Broadcast Receiver):接受其他应用的广播消息

内容提供器(Content Provider):应用程序间共享数据

2.丰富的系统控件

3.SQLite数据库(嵌入式关系型数据库,支持标准的SQL语法,还可以通过Android API进行操作)

4.强大的多媒体

5.地理位置定位

二、工具准备

JDK

Android SDK

Android Studio

Tips:新建项目的时候是否勾选use legacy android.support libraries

不要勾选,因为已经使用androidx类库替代了

三、分析第一个Android程序

1. .gradle和.idea

自动生成,无需关心

2.app

放置项目的代码、资源等内容

3.build

包含编译时自动生成的文件,无需关心

4.gradle

包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle

5. .gitignore

将指定的目录或文件排除在版本控制之外

6.build.gradle

项目全局的gradle构建脚本

7.gradle.properties

全局的gradle配置文件

8.gradlew和gradlew.bat

在命令行页面中执行gradle命令

9.HelloWorld.iml

IDEA自动生成,标识这是一个IDEA项目

10.local.properties

指定本机中Android SDK路径

11.setting.gradle

指定项目中所有引入的模块

1.app目录详解

1.build

编译时自动生成

2.libs

第三方jar包

3.androidTest

编写测试用例,自动化测试

4.java

Java代码或Kotlin代码

5.res

资源目录:图片放到drawable目录录下,布局放到layout目录下,字符串放到values目录下

6.AndroidManifest.xml

整个项目的配置文件,四大组件都需要在这个文件注册

7.test

自动化测试的另一种方式

8. .gitignore

app模块内指定的目录和文件排除在版本控制之外

9.app.iml

IDEA项目自动生成,无需关心

10.build.gradle

app模块的gradle构建脚本

11.proguard-rules.pro

指定项目代码的混淆规则,防止打成的安装包文件被破解

2.分析HelloWorld项目

<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

表示MainActivity是这个项目的主活动,点击应用首先出现的就是这个活动


创建的活动继承了AppCompatActivity,这是一种向下兼容的Activity(兼容到Android2.1)

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}

为当前的活动引入activity_main这个布局


3.详解项目中的资源

drawable开头:放图片

mipmap开头:放应用图标

values开头:放字符串、样式、颜色等配置

layout:放布局文件


<resources><string name="app_name">HelloWorld</string>
</resources>

在代码中通过R.string.app_name可以获得该字符串的引用;在XML中通过@string/app_name可以获得该字符串的引用。


4.详解build.gradle文件

最外层目录下的build.gradle文件:

buildscript {repositories {google()jcenter()
}dependencies {classpath "com.android.tools.build:gradle:4.1.2"// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {google()jcenter()
}
}

google()是Google自家的扩展依赖库

jcenter()是第三方代码托管库,现在已经废弃,迁移至mavenCentral()

classpath "com.android.tools.build:gradle:4.1.2"   表明Gradle构建的是Android项目


app目录下的build.gradle文件:

plugins {id 'com.android.application'
}android {compileSdkVersion 30buildToolsVersion "30.0.3"defaultConfig {applicationId "com.jack.helloworld"minSdkVersion 21targetSdkVersion 30versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles 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'
}

com.android.application表示这是一个应用程序模块, com.android.library表示这是一个库模块。二者最大的区别在于,应用程序模块是可以直 接运行的,库模块只能作为代码库依附于别的应用程序模块来运行。

applicationId "com.jack.helloworld"   是每一个应用的唯一标识符,绝对不能重复,默认会使用我们在创建项目时指定的包名


四、Android中的日志工具类Log

Log(android.util.Log)

Log.v()对应级别verbose,日志信息

Log.d()对应级别debug,调试信息

Log.i()对应级别info,数据信息

Log.w()对应级别warn,警告信息

Log.e()对应级别error,错误信息


Log.d("HelloWorldActivity","onCreate excute");

第一个参数是tag,一般传入当前类名,用于对打印信息过滤;第二个参数是msg,打印的具体内容


1.Logcat中的过滤器

Firebase是Google提供的一个开发者工具和基础架构平台,我们可以不用管它

data这个过滤器只会显示tag名称为data的日志

第一行代码-第二版(郭霖著)笔记(初识Android)相关推荐

  1. 第一行代码-第二版(郭霖著)笔记五(Broadcast Receiver)

    目录 一.广播机制简介 二.接收系统广播 1.动态注册监听网络变化 2.静态注册实现开机启动 三.发送自定义广播 1.发送标准广播 2.发送有序广播 五.广播的最佳实践---实现强制下线功能 一.广播 ...

  2. 图灵直播|《第一行代码》作者郭霖在线Coding,今晚八点,给你留位!

    图源来自Pexels "我们为什么需要 Kotlin?答:消失的 Getter 和 Setter.又见空指针.Smart Cast.打日志.再见Utils.晚安ButterKnife--&q ...

  3. 第一行代码-第二版(郭霖著)笔记六(持久化技术)

    目录 一.持久化技术简介 二.文件存储 1.将数据存储到文件中 2.从文件中读取数据 三.SharedPreference存储 1.将数据存储到SharedPreferences中 2.从Shared ...

  4. 第一行代码-第二版(郭霖著)笔记十一(高级技巧)

    目录 一.全局获取Context的技巧 二.使用Intent传递对象 1.Serializable方式 2.Parcelable方式 三.定制自己的日志工具 四.调试Android程序 五.深色主题 ...

  5. 第一行代码-第二版(郭霖著)笔记四(Fragment)

    目录 一.碎片是什么 二.碎片的使用方式 1.碎片的简单用法 2.动态添加碎片 3.在碎片中模拟返回栈 4.碎片和活动之间的通信 三.碎片的生命周期 1.碎片的状态和回调方法 四.动态加载布局的技巧 ...

  6. Android第一行代码第二版简要总结

    进入安卓的第一本书(简要概括) 第一章 了解大体Android 1.Android系统架构 Linux内核层:为Android设备的各种硬件提供了底层的驱动. 系统运行库层:通过c/c++库来提供主要 ...

  7. 《第一行代码》作者郭霖大神安卓问题解答

    列举了几个郭大神解答的有关Android的问题,虽然只有几个问题,但是基本涵盖了各个安卓开发阶段的困惑,郭大神的回答简洁深刻,收获颇丰. 1.工作有点吃力怎么办? 首先你要自信,公司都信任你了,你又何 ...

  8. 第一行代码第二版6.4.1小节创建数据库中遇到adb shell出错的问题

    该小节中我们照着作者说的一步步写完相应的代码,并运行程序,最后需要使用adb shell来对数据库和表的创建情况进行检查. 可是当配置好环境变量之后,在命令行终端输入adb shell结果如下所示: ...

  9. 第一行代码(第二版)全书代码下载

    Github地址: https://github.com/newcaoguo/booksource

  10. 第一行代码-ListViewDemo(2)-读书笔记

    对应第一行代码的114页 activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

最新文章

  1. 基础认证伪造工具phishery
  2. 经典C语言程序100例之一
  3. 荒野乱斗角色设计浅谈
  4. 测试开发面试准备之python selenium API
  5. P8实战(二):分布式锁前置技能 etcd 集群搭建
  6. 在php中构造函数的作用,php构造函数的作用
  7. jzoj6316-djq的朋友圈【状压dp】
  8. gdb 收到SIGPIPE信号
  9. struts2校验框架之Visitor校验器
  10. columns列:Rows 工作表上所有的行
  11. 少走弯路,给3~5年java程序员的唯一一条建议
  12. hua图软件 mac_sai mac中文版|sai绘画软件 For Mac下载 v3.0 官方版 - 121苹果网
  13. 单片机 c语言 可控硅,以单片机控制为核心的晶闸管触发装置简单设计方案
  14. Charles抓包基本应用
  15. jvm之java类加载机制和类加载器(ClassLoader)的详解
  16. 虚拟机VM安装win7遇到的问题及解决方法
  17. 苹果3年提起215起商标异议申请,对菠萝也要争,被指“霸凌”
  18. Gson解析空字符串异常的处理
  19. java过滤器python是啥_过滤器如何在python中使用softlayer API
  20. 关于针式打印机格式设置

热门文章

  1. Cisco2960交换机端口安全Port-Security
  2. CentOS7中怎样设置静态IP
  3. 如何解决移动端300ms延迟的问题
  4. Mysql如何保证原子性,一致性,持久性
  5. cpan mysql dbd_安装PERL cpan DBD::mysql错误笔记
  6. ipa文件反编译_苹果ipa文件中信息的提取与加密文件的反编译
  7. vs无法打开源文件_南美预选:乌拉圭vs巴西,双方核心都无法上场,谁来打开胜利之门?...
  8. C语言算法题:一只小蜜蜂...
  9. 一分钟让你知道Hadoop是什么
  10. 查看eclipse是多少位