《Android第一行代码》笔记 第一章:开始启程—你的第一行Android代码
1.1 了解全貌——Android王国简介
1.1.1 Android系统框架
系统架构大致分为四层:Linux内核层、系统运行库层、应用框架层和应用层。
- Linux内核层
Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动。 - 系统运行库层
这一层通过一些C/C++库来为Android系统提供了主要的特性支持。还有Android运行时库,允许开发者使用Java来编写应用。 Dalvik虚拟机: Android4.4及其以下平台使用的虚拟机,使得每一个应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。 ART(Android Runtime)运行环境: 4.4以上(5.0)平台使用的虚拟机技术,能够把应用程序的字节码转换为机器码,引入AOT预编译技术。 - 应用框架层
主要提供了构建应用程序时可能用到的各种API。 - 应用层
所有安装在手机上的应用程序。
1.1.2 Android以发布的版本
1.1.3 Android应用开发特色
- 四大组件:
- 活动(Activity):应用程序的门面,所有看得到的东西。
- 服务(Service):一直在后台运行,即使用户退出应用,服务仍然可以继续运行。
- 广播接收器(Broadcast Receiver):允许应用接受来自各处的广播信息,如电话、短信等。
- 内容提供器(Content Provid):应用程序之间共享数据。
- 丰富的系统控件
控件是什么?按钮、输入框等 - SQLite数据库
- 强大的多媒体
- 地理位置定位
1.2 手把手带你搭建开发环境
1.2.1 准备所需要工具
- JDK
- Android SDK:安卓开发工具包
- Android Studio
- #lsb_release -a //查看ubuntu版本
- #sudo snap install android-studio --classic //安装android-studio
- avd运行有错——#sudo chmod 777 /dev/kev
1.2.2 搭建开发环境
1.3创建你的第一个Andriod项目
1.3.1 创建HelloWorld项目
- Application name:应用名称,安装到手机之后,会在手机上显示该名称。
- Wear:用于开发可穿戴设备。
- TV:用于开发汽车。
- Android Auto:用于开发汽车程序。
- Activity Name:活动名字(每个单词首字母大写,中间没有空格,书中的示例:应用名+Activity)。
- Layout Name:布局命名(全部小写,单词之间用_隔开)。??没有这个选项
1.3.2 启动模拟器
1.3.3 运行HelloWord
1.3.4 分析你的第一个Android程序
目录结构:
- .gradle和.idea:放置AS自动生成的一些文件
- app:项目中的代码、资源
- build:与外层build类似,主要包含了一些在编译时自动生成的文件
- libs:第三方的jar包都放在libs目录下,放在这里的包会被自动添加到构建路径中
- androidTest:用来编写Android Test测试用例,可以对项目进行一些自动化测试
- java:ava代码
- res:在项目中使用到的所有图片(/drawable)、布局(/layout)、字符串(/values)等资源都要存放在这个目录下
- AndroidManifest.xml:整个项目的配置文件,在程序中定义的四大组件都需要在这个文件中注册
- test:用来编写Unit Test测试用例的,对项目进行自动化测试的另一种方式
- .gitignore:作用和外层的.gitinore文件类似,用于将app模块内的指定的目录或文件排除在版本控制外
- app.iml:自动生成的文件
- build.gradle:app模块的gradle构建脚本,这个文件会指定很多项目构建相关的配置
- proguard-rule.pro:用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被人破解,通常会将代码进行混淆,从而让破解者难以阅读
- .build:包含在编译时自动生成的文件
- gradle:包含gradle wrapper的配置文件
- .gitignore:这个文件是用来将指定的目录或文件排除在版本控制外
- build.gradle:项目全局的gradle构建脚本A
- gradlew和gradlew.bat:用来在命令行界面中执行gradle命令的,gradlew在Linux和MAC系统中使用,gradlew.bat在Windows系统中使用
- local.properties:用于指定本机中的Android SDK路径
- settings.gradle:用于指定项目中所有引入的模块
配置文件(AndroidManifest.xml):
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- AppCompatActivity是Activity的子类,项目中所有的活动都必须继承Actvity或者他的子类。
onCreate() :活动被创建时必定执行的方法 。- 逻辑与视图分离,布局文件中编写界面,然后在活动中引用。
1.3.5 详解项目中的资源
- drawable开头的文件都是用来放图片的
- mipmap开头的文件用来放应用图标
- values开头的文件用来放字符串、颜色、样式等配置
- layout文件用来放布局文件
在代码中通过R.string.xxx获得引用 在xml中通过@string/xxx获得引用 string用上面的文件名替换
1.3.6 详解build.gradle文件
Gradle:项目构建工具 安卓项目的三种依赖:1.本地依赖 2.库依赖 3.远程依赖
1.4 前行必备—掌握日志工具的使用
1.4.1 使用Android的日志工具Log
- Log方法:
- Log.v() 打印琐碎的、意义最小的日志信息,级别最低,对应级别verbose
- Log.d([tag],[msg]) 打印调试信息,调试程序和分析问题,对应级别debug,tag传入当前类名就可以,msg则是要打印的具体内容
- Log.i() 打印一些比较重要的信息,分析用户行为和数据,对应级别info
- Log.w() 打印一些警告信息,对应级别warn
- Log.e() 打印错误信息,对应级别error
1.4.2 为什么使用Log而不使用System.out
在onCreate()外面输入logt,按下tab键,会自动生成以当前类名作为值的TAG常亮。
- 过滤器:
- Show only selected qpplication 表示只显示当前选中程序的日志
- Edit Filter Congifuration自定义过滤器。
- 级别:打印大于等于当前选中级别的日志
- 关键字搜索:支持正则表达式
|