安卓开发从0到1(基础知识1)

本文介绍了从零开始学习Android开发的原因、Android的发展历程、工程目录结构、Gradle概念、AndroidManifest.xml的解析以及Activity的基础知识。涵盖了Android项目的构建、组件、权限管理和日志系统等方面,适合初学者入门。
摘要由CSDN通过智能技术生成

安卓开发从0到1~基础讲解

1.为什么开始学习android开发

​ 我本是一名java后端开发人员,因为换了一份工作,找到了一份android开发工程师的工作,并且自己也想在移动端有所建树,时间原因,不说废话,直接干货从0走起。

2. android发展历程

  • 2003年:Android Inc. 成立,由安迪·鲁宾、里奇·马兰尼等人创建。他们着手开发一种基于Linux内核的移动设备操作系统。

  • 2005年:Google 收购了 Android Inc.,并将其作为未来移动设备操作系统的基础。

  • 2007年:首款搭载 Android 操作系统的智能手机 HTC Dream(也称为 T-Mobile G1)发布,标志着 Android 手机的诞生。

  • 2008年:Google 发布了首个 Android 版本——Android 1.0。这个版本包含了许多现在被视为经典的功能和设计元素。

  • 2009年:随着 Android 2.0 的发布,Google 推出了名为 Nexus One 的旗舰级 Android 手机。

  • 2010年:Android 应用程序商店 Google Play(当时称为 Android Market)开始运营,为开发者提供了一个广泛分发和销售他们应用程序的平台。

  • 2011年:随着 Android 4.0(冰淇淋三明治)的发布,Google 引入了全新的用户界面设计语言——Material Design,并改进了操作系统的稳定性和性能。

  • 2014年:随着 Android 5.0(棒棒糖)的发布,Google 推出了 Android 开发者预览计划,使开发者能够在新发布之前提前体验和测试最新版本。

  • 2016年:Android Studio 成为官方的集成开发环境(IDE),取代了 Eclipse,并为开发者提供更强大、高效的开发工具。

  • 2017年:随着 Android 8.0(奥利奥)的发布,Google 引入了 Project Treble,旨在简化 Android 设备制造商对操作系统升级的过程,加快设备广泛采用新版本的速度。

3. android的工程目录结构

在这里插入图片描述

1. app/:该目录下包含应用程序的源代码和资源文件。
  • src/:Java 或 Kotlin 源代码文件所在的目录。
  • res/:包含应用程序使用到的各种资源文件,如布局文件、图像、字符串等。
  • manifests/:AndroidManifest.xml 文件所在的目录,其中声明了应用程序的配置信息、权限等。
  • assets/:可选目录,可以存放应用程序需要用到的一些原始数据文件。
2. gradle/:包含 Gradle 构建脚本文件。
  • build.gradle:项目级别的配置文件,用于指定项目的依赖和构建配置。
  • settings.gradle:设置项目模块的信息。
3. Gradle Wrapper/:包含 Gradle Wrapper 的相关文件,用于自动下载并使用指定版本的 Gradle。
  • gradlew:UNIX 系统下的 Gradle Wrapper 脚本。
  • gradlew.bat:Windows 系统下的 Gradle Wrapper 脚本。
  • gradle/wrapper/gradle-wrapper.jar:Gradle Wrapper 的 JAR 文件。
  • gradle/wrapper/gradle-wrapper.properties:Gradle Wrapper 配置文件,指定下载的 Gradle 版本。
4. build/:构建过程中生成的输出文件和临时文件。
  • generated/:包含在编译期间生成的代码和资源。
  • outputs/:包含构建结果的文件,如 APK 文件、AAR 文件等。
5. libs/:用于存放第三方库(JAR 文件)的目录。
6. tests/:包含单元测试和仪器化测试的相关代码。
  • 此外,根目录下还有一些其他的文件,如:

  • build.gradle:项目的根级别 Gradle 构建脚本文件。
    gradlew:UNIX 系统下的用于执行 Gradle 命令的脚本。
    settings.gradle:指定项目模块的信息。

4.其他一些概念

1.什么是gradle

​ Gradle 是一种构建工具,用于自动化构建、测试和部署软件项目。它是一个开源的构建工具,旨在提供一种灵活、效率高且易于使用的方式来构建各种类型的项目。

​ Gradle 使用 Groovy 或 Kotlin 作为构建脚本的DSL(领域特定语言),允许开发者通过编写脚本来定义项目的构建过程,包括依赖管理、编译、打包等操作步骤。

​ 相比于传统的构建工具如 Ant 或 Maven,Gradle 提供了更强大和灵活的功能。它支持基于约定的配置,同时也支持自定义任务和插件,可以方便地集成第三方库和工具,以满足不同项目的需求。

Gradle 具有以下特点和优势:

  • 声明式构建:通过声明依赖关系、任务和插件,使构建过程更清晰、可维护。
  • 灵活性:可以根据项目的需要自定义构建过程,适应各种复杂的构建场景。
  • 高性能:采用增量构建和缓存策略,只重新构建必要的部分,提高构建速度。
  • 多语言支持:支持多种编程语言和技术栈,如 Java、Kotlin、Android、C/C++等。
  • 插件生态系统:丰富的插件仓库和社区支持,提供了大量可重用的构建任务和功能扩展。

​ Gradle 在 Android 开发中得到广泛应用,作为 Android Studio 的默认构建系统,它能够帮助开发者管理依赖、编译代码、生成 APK 文件等。此外,Gradle 还可以用于其他类型的项目,如 Java 应用程序、Web 应用程序等。

2.对项目中的两个build.gradle的解释

​ 在 Android 项目中,存在两个 build.gradle 文件,分别位于项目级别和模块级别。

1. 项目级别的 build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '8.0.2' apply false
    id 'com.android.library' version '8.0.2' apply false
}

​ 在 Android 项目的根目录下,有一个名为 build.gradle 的文件。这个文件定义了整个项目的全局配置,包括构建脚本的版本、项目的仓库依赖等。主要包含以下内容:

  • buildscript:用于配置构建脚本的相关信息,如依赖项和插件。

  • repositories:指定构建所需的仓库地址,从中下载依赖库。

  • dependencies:定义构建脚本自身所需要的依赖项。

​ 通过修改项目级别的 build.gradle 文件,可以添加或修改构建工具的版本、引入全局依赖项等。

2. 模块级别的 build.gradle:
plugins {
    id 'com.android.application'
}

android {
    namespace 'com.example.myapplication'
    compileSdk 33

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

在 Android 项目中的每个模块(如 app 模块)都有一个对应的 build.gradle 文件。该文件位于模块目录下,通常是 app/build.gradle。这个文件指定了特定模块的构建配置,包括编译选项、依赖项、签名配置等。主要包含以下内容:

  • android:指定与 Android 相关的构建选项,如编译版本、最小 SDK 版本、目标 SDK 版本等。

  • dependencies:定义模块所依赖的其他模块或第三方库。

  • buildTypes:定义不同编译类型的配置,如 Debug、Release 等。

  • signingConfigs:指定应用程序签名配置的信息。

​ 通过修改模块级别的 build.gradle 文件,可以针对特定模块进行不同的构建配置,添加所需的依赖项和自定义编译选项。

​ 这两个 build.gradle 文件是 Android 项目中重要的构建配置文件,用于控制整个项目的构建过程,包括各种编译选项、依赖管理等。

3. Android的SDK对应版本号

在这里插入图片描述

4.对清单文件AndroidManifest.xml的解析

​ AndroidManifest.xml是Android应用程序的清单文件,它承载了应用程序的基本信息、设置和配置。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"//是否容许备份
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
1.包名(Package Name):

​ AndroidManifest.xml文件的第一行指定了应用程序的包名,它必须是全局唯一的标识符,用于区分不同的应用程序。

2.应用程序图标(Application Icon):

​ 通过在application标签内部设置android:icon属性,可以指定应用程序在应用列表和桌面上显示的图标。

3.应用程序名称(Application Name):

​ 通过在application标签内部设置android:label属性,可以指定应用程序的名称,在应用列表和标题栏显示。

4.权限声明(Permissions Declaration):

​ 通过在manifest标签内部声明uses-permission子标签,可以列出应用程序所需的各种权限,如访问网络、读写存储等。

5.应用程序组件(Application Components):

-通过在application标签内部声明activity、service、receiver和provider子标签,可以定义应用程序的四个核心组件。

-Activity:表示用户界面的独立屏幕,通过声明activity标签来定义。
-Service:后台运行的组件,通过声明service标签来定义。
-BroadcastReceiver:接收系统广播或自定义广播的组件,通过声明receiver标签来定义。
-Content Provider:提供数据给其他应用程序访问的组件,通过声明provider标签来定义。

6.应用程序启动器(Launcher):

​ 通过在activity标签内部设置intent-filter和category属性,可以指定应用程序的启动界面(入口点),即点击应用图标后打开的第一个界面。

7.其他配置项:

​ AndroidManifest.xml还可以包含其他各种配置项,如版本号、最低SDK版本要求、屏幕方向、多语言支持等。

5.Android中的log日志

​ 在Android中,日志系统提供了不同的日志等级(Log Level)来区分和指示日志的重要程度和详细程度。常见的五个日志等级(从低到高)如下:

  • VERBOSE:

    ​ 最低的日志等级,用于输出详细的调试信息。通常在调试阶段使用,用于记录程序执行过程中的详细信息。

  • DEBUG:

    ​ 调试日志等级,用于输出调试信息,辅助应用程序的开发和调试工作。一般情况下,DEBUG级别的日志信息在发布应用程序时会被禁用或移除掉。

  • INFO:

    ​ 信息日志等级,用于输出一般的信息性消息。这些消息可以用来追踪应用程序的运行状态,但不是那么具体或详细。

  • WARN:

    ​ 警告日志等级,表示潜在的异常情况,可能会导致应用程序出现问题。这些警告信息表明应用程序在某些方面存在潜在的风险或错误,但并不会导致应用程序崩溃。

  • ERROR:

​ 最高的日志等级,用于输出错误消息。当应用程序遇到严重的错误或异常情况时,会使用ERROR级别记录相应的错误信息,这些错误可能导致应用程序终止或无法正常运行。

开发者可以使用不同日志等级的打印方法(如Log.v()、Log.d()、Log.i()、Log.w()、Log.e()),根据实际需求和场景输出相应等级的日志信息。在正式发布应用程序时,应该避免过多地输出低级别的日志,以提高应用性能和减少不必要的日志信息。

在这里插入图片描述

6.什么是Activity?

​ 在Android中,Activity(活动)是一种表示用户界面的组件,它通常代表应用程序中的一个屏幕或一个交互页面。每个Activity都提供了与用户交互的界面,并且可以包含用户输入、数据展示、响应事件等功能。

​ Activity在Android应用程序中扮演着重要角色,它负责处理以下任务:

  • 用户界面:

    ​ Activity定义了应用程序的用户界面,通过在屏幕上显示视图元素(如按钮、文本框、图像等)来与用户进行交互。每个Activity都会占据整个屏幕或位于其他Activity之上的一个窗口。

  • 生命周期管理:

    ​ Android系统按照一定的生命周期管理Activity的创建、启动、暂停、恢复、停止和销毁等过程。开发者可以根据需要重写不同生命周期方法(如onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等),在这些方法中执行相关操作。

  • 界面导航:

    ​ 由于应用程序通常由多个Activity组成,Activity之间可以相互切换和导航。例如,从一个Activity启动另一个Activity,从而实现应用程序内部的页面跳转和交互。

  • 数据传递和返回:

    ​ Activity之间可以通过Intent对象传递数据,一个Activity可以启动另一个Activity并且传递参数。同时,当从一个Activity返回到前一个Activity时,可以携带返回的数据。

  • 生命周期状态保存与恢复:

    ​ 在某些情况下(如设备旋转、内存紧张),Activity可能会被销毁并重新创建。通过合理保存和恢复Activity的状态,可以避免数据丢失和用户体验不连续的问题。

    总之,Activity是Android应用程序的核心组件之一,用于展示用户界面、处理用户交互以及管理生命周期等功能。通过合理设计和使用Activity,可以构建出丰富、灵活的 Android 应用程序。

通过Intent对象传递数据,一个Activity可以启动另一个Activity并且传递参数。同时,当从一个Activity返回到前一个Activity时,可以携带返回的数据。

  • 生命周期状态保存与恢复:

    ​ 在某些情况下(如设备旋转、内存紧张),Activity可能会被销毁并重新创建。通过合理保存和恢复Activity的状态,可以避免数据丢失和用户体验不连续的问题。

    总之,Activity是Android应用程序的核心组件之一,用于展示用户界面、处理用户交互以及管理生命周期等功能。通过合理设计和使用Activity,可以构建出丰富、灵活的 Android 应用程序。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lihua总是问我为什么

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值