第1章 开始启程——你的第一行Android代码
1.1 Android系统四层架构:(从底至顶)
- Linux内核层:为Android设备的各种硬件提供底层驱动,如显示驱动、音频驱动、照相机驱动等
- 系统运行库层:
- 通过一些C/C++库为Android系统提供主要的特性支持,如SQLite库提供了数据库的支持
- Android运行时库,主要提供了一些核心库,开发者可以使用Java语言编写程序
- 包含Dalvik虚拟机(5.0系统后改为ART运行环境)
- 应用框架层:提供构建应用程序时用到的各种API
- 应用层:安装在手机上的应用程序,包括系统自带的联系人、短信等,或者自己在应用商店下载的微信等
架构具体如下图:
1.2 Android应用开发特色
- 四大组件:
- 活动(Activity):应用程序的前台
- 服务(Service):应用程序的后台
- 广播接收器(Broadcast Receiver):接收广播信息,比如电话、短信等
- 内容提供器(Content Provider):使得应用程序之间可以共享数据
- 丰富的系统组件
- SQLite数据库:Android系统自带,是一种轻量级、速度快的嵌入式关系型数据库
- 强大的多媒体
- 地理位置定位
1.3 搭建开发环境
需要准备的工具:
- JDK
- Android SDK:谷歌提供的Android开发工具包
- Android Studio
1.4 Android程序部分重要目录或文件
文件名 | 作用 |
java | 放置所有java代码 |
res | 放置资源文件,比如图片、布局等 |
AndroidManifest.xml | 项目配置文件,在这里声明组件、添加权限声明等 |
build.gradle | app模块的gradle构建脚本,在这里指定项目构建相关的配置 |
libs | 放置第三方jar包 |
AndroidManifest.xml
文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworldapplication">
<application
...
<!--对MainActivity这个活动进行注册-->
<activity android:name=".MainActivity">
<intent-filter>
<!--下面两行代码表示MainActivity是这个项目的主活动-->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity
public class MainActivity extends AppCompatActivity {
//继承于AppCompatActivity,实现向下兼容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//引入activity_main布局
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
1.5 使用Android的日志工具Log
方法 | 作用 |
Log.v() | 对应级别verbose。打印一些最为琐碎、意义最小的日志信息 |
Log.d() | 对应级别debug。打印一些调试信息 |
Log.i() | 对应级别info。打印一些比较重要的数据 |
Log.w() | 对应级别warn。打印一些警告信息 |
Log.e() | 对应级别error。打印程序的错误信息 |
使用Log而不使用System.out:System.out不可控制日志打印、打印时间无法确定、不能添加过滤器、日志没有级别区分…