第1章 开始启程——你的第一行Android代码

1.1 Android系统四层架构:(从底至顶)

  • Linux内核层:为Android设备的各种硬件提供底层驱动,如显示驱动、音频驱动、照相机驱动等
  • 系统运行库层
  • 通过一些C/C++库为Android系统提供主要的特性支持,如SQLite库提供了数据库的支持
  • Android运行时库,主要提供了一些核心库,开发者可以使用Java语言编写程序
  • 包含Dalvik虚拟机(5.0系统后改为ART运行环境)
  • 应用框架层:提供构建应用程序时用到的各种API
  • 应用层:安装在手机上的应用程序,包括系统自带的联系人、短信等,或者自己在应用商店下载的微信等

架构具体如下图:

第一行代码 Androidpdf 第一行代码android第4版_android

1.2 Android应用开发特色

  1. 四大组件
  • 活动(Activity):应用程序的前台
  • 服务(Service):应用程序的后台
  • 广播接收器(Broadcast Receiver):接收广播信息,比如电话、短信等
  • 内容提供器(Content Provider):使得应用程序之间可以共享数据
  1. 丰富的系统组件
  2. SQLite数据库:Android系统自带,是一种轻量级、速度快的嵌入式关系型数据库
  3. 强大的多媒体
  4. 地理位置定位

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不可控制日志打印、打印时间无法确定、不能添加过滤器、日志没有级别区分…