最近在学习 Android 方面的知识,刚好趁着这个机会整理一下 Android 开发方面的一些知识点。从标题中可以看到,今天只是给大家简单介绍一下 Android 的基本内容以及 Android的项目目录结构。

1. Android 前世今生

1.1 Android 介绍

Android 原为机器人的意思,现在指的是基于Linux系统的开源的操作系统。目前 Android SDK已经更新到31了,也就是Android 12,我们可以在 Android官网或者维基百科 中进行查看,每一个Android SDK版本对应一个Android版本,当别人问你,你现在用的SDK版本是多少啊,这个问题不能不知道哈。下图展示的是 Android的 logo,头上插两个天线的机器人。
在这里插入图片描述

1.2 Android 发展历程

在2003年10月,Andy Rubin 和他的三个小伙伴一起创办了 Android 公司;2005年8月份谷歌收购了这家仅仅成立了22个月的公司,并让 Andy Rubin继续负责 Android项目。经过数年研究,谷歌在2008年推出了 Android系统的第一个版本。当然一个产品的发展肯定会受到各方质疑的,下面就有几个小故事。第一个小故事:乔布斯认为 Android是一个抄袭iPhone的产品,里面剽窃了很多iPhone的创意,并声称要毁掉 Android,但结果可想而知啊。。。第二个小故事:Android是基于 Linux 开发的操作系统,在2021年被Linux团队从 Linux 内核主线中除名。。。第三个故事:Android中的应用程序都是使用java开发的,甲骨文则针对 Android侵犯 java知识产权一事对谷歌提起了诉讼。。。即使这样也没有阻碍 Android的发展。再加上Android操作系统是开源的,所以Android很快就成功的打入市场。

2. Android 架构

Android 包含四大组件,如下图所示
在这里插入图片描述
从底向上依次为大家介绍

2.1 Linux内核层

Android的核心系统服务基于Linux2.6内核,如安全管理器,进程管理器、网络协议栈和一些驱动都依赖于Linux2.6内核。Android更多的是需要一些与移动设备相关的驱动程序,主要的驱动有:Display Driver(显示驱动)、Camera Driver(照相机驱动)、Bluetooth Driver(蓝牙驱动)、Keypad Driver(键盘驱动)、Power Driver(能源驱动)等

2.2 Libraries 系统运行库

这一层包含两个部分:Libraries 函数库和 Android RunTime 运行时。
(1)Libraries函数库
主要是使用C/C++编写的,Android应用程序开发人员并非直接使用此函数库,而是通过更上层的应用程序框架来使用此函数功能,所以该函数库被称为原生函数库(Native Libraries)。此函数库依照功能又细分为各种类型的函数库,如媒体函数库,界面管理函数库、SQlite等
(2)Android Runtime
主要包含两个内容,一个Android核心函数库、一个是Dalvik 虚拟机。
Android核心函数库:所提供的功能大部分与java核心函数库相同。
Dalvik 虚拟机:每个Java程序都运行在Dalvik虚拟机之上。与PC一样,每个Android应用程序都有自己的进程,Dalvik虚拟机只执行".dex"的可执行文件。当Java程序通过编译,最后还需要通过SDK中的 “dx"工具转化成”.dex"格式才能正常地在虚拟机上执行。

2.3 应用框架层

就是 Android 的 API,程序员使用此 API 可以快速开发出 Android 应用程序,比如,用户接口、活动管理、内容提供者、资源管理器等。

2.4 应用层

是用java语言编写的运行在虚拟机上的程序,这些应用程序在设备上都是以一个小图标表示,用户通过点击图标来运行程序。Android系统一般内建有Email、短信收发程序、浏览器、联系人等功能的应用程序。

3. Android 四大组件

Android系统的四大组件:
活动(Activity):Activity 是Android应用程序的门面,凡是在应用中能够看到的东西,都是放在活动中的。
服务(Service):Service在后台运行
广播接收器(Broadcast Receiver):允许应用接收来自各处的广播消息,比如电话、短信等,当然也可以向外发出广播消息。
内容提供器(Content Provider):为应用程序之间共享数据提供了可能,比如想要读取系统通讯录中的联系人,就需要用过内容提供器来实现。
具体的代码我在后面的Blog中给大家展示。

4. Android 开发准备

到这里对于Android 我们已经有了一个初步的认识,那接下来我们就要开始进入 Android 开始实战了。在开始实战之前,我们要有一些准备操作。

  1. 安装JDK:对于JDK的安装,网上教程一大堆,当然也可以参考小编的BlogJDK1.8安装
  2. Android Studio
  3. Android SDK :这个插件可以在 Android Studio中安装

我们已经初步认识了Android。本篇文章主要给大家分享 Android 的项目目录结构。我的IDE是Android Studio。

5. 创建 Android 项目

每一个编程语言写出的第一个程序无疑是 Hello World。按照传统我们也写一个Hello World。
第一步:创建一个Android 项目。名为 My Application
打开 Android Studio——Create new Project——Empty Activity ——Next——Finish。
在这里插入图片描述在这里插入图片描述
其中,name: My Application ,这也是应用名称,应用安装在手机上之后显示的名字就是My Application。
Package name :包名,至少两个部分组成,否则会显示错误信息。
Minimum SDK :也就是Android SDK的最小支持的版本,选择API 16的话,表示我们的应用可以运行在A PI 16或以上版本中。

6. Android项目结构详解

任何一个新建的项目都会使用默认的 Android 模式的项目结构,为了接近真实的项目结构,我们切换成 Project 模式
在这里插入图片描述
在这里插入图片描述

  1. .gradle 和 .idea
    这两个目录放置的是 Android Studio 自动生成的一些文件,无须关心,也不用去编辑。
  2. app
    项目中的代码、资源等内容基本上是放在这个目录下的。
    比如逻辑代码:app/src/main/java
    资源文件:app/src/main/res
  3. gradle
    这个目录下包含了 gradle wrapper 的配置文件,使用 gradle wrapper的方式是不需要提前讲gradle下载好,系统会自动根据本地的缓存情况决定是否需要联网下载 gradle。
  4. .gitignore
    这个文件是用来将指定的目录或文件排除在版本控制之外的。
  5. build.gradle
    这是项目全局的gradle构建脚本,通常这个文件中的内容不需要修改的。
  6. gradle.properties
    是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。
  7. gradlew 和 gradlew.bat
    这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在linux 或者Mac系统中使用的,gradlew.bat 是在Windows 系统中使用的。
  8. local.properties
    这个文件用于指定本机中的Android SDK路径,通常是自动生成,我们不需要修改,如果本机中的Android SDK位置发生了变化,那么就需要改这个文件。
  9. settings.gradle
    这个文件用于指定项目中所有引入的模块,由于项目中目前只有一个app模块,因为该文件中也就只引入了这一个模块。通常情况下模块的引入都是自动完成的,手动修改的场景比较少。

下面我们着重讲解 App目录下的文件
在这里插入图片描述

  • build
    这个目录和外层的build目录类似,主要包含一些在编译时自动生成的文件,不过它里面的内容更加复杂,不需要过多关心。(当运行程序之后才会显示build文件)

  • libs
    如果项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径中。

  • androidTest
    用来编写Android Test测试用例的,可以对项目进行一些自动化测试。

  • java
    java目录是放置我们所有java代码的地方

  • res
    项目中使用的所有图片、布局,字符串等资源都要存放在这个目录下。
    图片放在drawable目录下、布局放在layout目录下、字符串放在values目录下。

  • AndroidManifest.xml
    这是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

    打开AndroidManifest.xml 文件,活动一般在application标签下注册

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/Theme.MyApplication">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
  • test
    用来编写Unit Test 测试用例的,是对项目进行自动化测试的另一种方式。

  • .gitignore
    这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore 文件类似。

  • app.iml
    项目自动生成的文件,我们不需要关心或修改这个文件中的内容。

  • build.gradle
    这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。

  • proguard-rules.pro
    这个文件用于指定项目代码的混淆规则,当代码开发完成之后打包安装包文件,如果不希望代码被被人破解,通常会将代码进行混淆,从而让破解者难以阅读。

好了,到目前为止对于Android 相信你已经有个大致的认识,那就休息一下吧。

Logo

更多推荐