目录

安卓移动开发基础入门

安卓移动开发基础入门

一、安卓开发特点

1 App的运行环境

①在模拟器上运行App应用;

②使用真实手机调试App。

通过adb连接PC和安卓操作系统。

https://i-blog.csdnimg.cn/blog_migrate/ecc15c773546f016d2bb991b44491db4.png

2 安卓开发语言

①App 开发主要有两大技术路线,分为 原生开发混合开发

(原生开发用户体验好,混合开发跨平台性强)

②Android 的官方编程语言包括 JavaKotlin

③我们的布局文件用XML来写,但后面可能会被Compose所替代。

3 App连接的数据库

我们以前在学习Java编程时,基本会设计一些数据库操作,这个数据库可能是MySQL,也可能是Oracle,也可能是SQL Server。然而手机不能直接操作上述的几种数据库。

其实Android早已经内置了专门的数据库,名为 SQLite ,其语法类似MySQL。SQLite 无须单独安装 ,因为它已经内嵌到了应用进程当中,所以App无须配置连接信息,即可直接对其增删改查。由于SQLite嵌入到应用程序中,省去了数据库服务器的开销,因此它又被称为嵌入式数据库。

二、App工程目录结构

①App工程分为两个层次,第一个层次是 项目 ,另外一个层次是 模块

②模块依附于项目,每一个项目 至少有一个模块 ,也可以拥有多个模块;

③一般我们说的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的App。

https://i-blog.csdnimg.cn/blog_migrate/8149171aba4805bd166975d22a92d35c.png

1 App下的子目录

1.1 manifests子目录

下面只有一个XML文件,即AndroidManifest.xml,它是App的运行配置文件;

https://i-blog.csdnimg.cn/blog_migrate/77ef2420f38392a6b69aad8c48e87e99.png

1.2 java子目录

下面有3个com.example.myapp包,其中第一个包存放当前模块的Java源代码,后面两个包存放测试用的Java代码;

https://i-blog.csdnimg.cn/blog_migrate/b2fcb358c035f3b7fb6ea10a38a91271.png

1.3 res子目录

存放当前模块的资源文件。res下有4个子目录:

① drawable目录:存放图形描述文件与图片文件;

矢量图:放大不影响清晰度;

位图:放大会影响清晰度。

② layout目录:存放App页面的布局文件;

③ mipmap目录:存放App的启动图标;

④ values目录:存放一些常量定义文件,例如字符串常量strings.xml、像素常量dimens.xml、颜色常量colors.xml、样式风格定义styles.xml等。

https://i-blog.csdnimg.cn/blog_migrate/bc331e90c55e5558f760c6044655781d.png

2 Gradle Scripts下的目录

2.1 Gradle Scripts简介

Gradle Scripts下面主要是工程的编译配置文件,主要有:

① build.gradle: App工程的编译配置文件 ,该文件分为项目级别与模块级别两种,用于描述App工程的编译规则;

(工程级别是全局的配置,模块的配置就只影响App的模块)

② proguard-rules.pro:该文件用于Java代码的混淆规则;

(因为APK可以解压,通过反编译可以看到源码,故需要混淆)

③ gradle.properties:该文件用于配置编译工程的命令行参数,一般无需改动;

④ settings.gradle:该文件配置了需要编译哪些模块。初始内容为include ‘:app’,表示只编译app模块;

⑤ local.properties:本地项目的配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。

2.2 什么是Gradle

Gradle 是一个项目 自动化构建工具 ,帮助我们做依赖、打包、部署、发布、各种渠道的差异管理等工作。

我们要把整个拥有这么多代码的工程发布运行,最终是要打包为APK文件才能发布,那么多代码要APK打包,以及源代码的编译,这一系列的过程全由Gradle来完成。 (类似Java Web编程中的 Maven )

注意:

① Gradle工具的版本配置在gradle\wrapper\gradle-wrapper.properties;

(也可以在File->Project Structure -> Project,在设置界面中修改Gradle Version)

不同版本的Android Studio都有对应版本的Gradle版本,当两者版本匹配时,才可运行成功

2.3 App下的 build.gradle 文件示例

plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    //指定SDK的版本号
    namespace = "com.example.ilikelearning"
    compileSdk = 34

    defaultConfig {
        // 指定该模块的应用编号,也就是App的包名
        // (在安卓开发中,App的包名,就是App的唯一标识,就像App的身份证号码)
        applicationId = "com.example.ilikelearning"
        // 指定App适合运行的最小SDK版本号
        minSdk = 24
        // 表示App最希望在哪个版本的Android运行
        targetSdk = 34
        // 指定App的应用版本号
        versionCode = 1
        // 指定App的应用版本名称
        versionName = "1.0"
        // 单元测试
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    // 指定混淆规则的文件
    buildTypes {
        release { 
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

// 指定App编译的依赖信息
dependencies {
    // 官方做的兼容性解决方案
    // 以下为各种依赖项:当我们点击同步时,其就会取互联网下载对应的依赖库
    implementation("androidx.core:core-ktx:1.10.1")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.9.0")
    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}

3 清单文件(AndroidManifest.xml)

每个应用的根目录都必须包含一个AndroidManifest.xml,并且 文件名必须固定这样 ,不可修改。这个文件包含了App的 配置信息 ,系统需要工具里面的内容运行App的代码,显示界面。

3.1 常见属性

① android:allowBackup : 是否允许备份;

② android:icon :指定App在手机屏幕上显示的图片;

③ android:label :指定App在手机屏幕上显示的名称;

④ android:roundIcon :指定App的圆角图标;

⑤ android:supportsRtl :是否支持阿拉伯语 / 波斯语这种从右到左的文字排列顺序;

⑥ android:theme :指定App的显示风格。

application 后面部分还有 activity 节点,这是 活动页面的注册声明 。只有在AndroidManifest.xml 中正确配置activity节点,才可在运行时访问对应的活动页面。初始配置的 MainActivity 是App的默认主页,因为其 activity 节点内部配置了如下过滤信息。

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

action 节点中设置的 android.intent.action.MAIN 表示该页面是App的入口页面,启动App时会先打开该页面。category 节点设置的 android.intent.category.LAUNCHER 决定了是否在手机屏幕上显示App图标。

3.2 清单文件示例

<?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.ILikeLearning"
        tools:targetApi="31">
        <activity
            android:name=".GirdLayoutStaticActivity"
            android:exported="false" />
        <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>

4 Activity

Activity 是一个应用程序的组件,提供一个屏幕,可以用来与用户交互,完成某项任务。

(即包含可执行操作的界面。)

三、App的活动页面

1 界面显示与逻辑处理

1.1 分工

利用XML标记描绘应用界面,使用Java代码书写程序逻辑 。

1.2 好处

① 使用XML文件描绘App界面,可以方便第在Android Studio上 预览 界面效果;

② 一个界面布局可以被多处代码 复用 ,一个 Java 代码也可以适配多个界面布局。

2 新App页面的创建

2.1 完整的页面创建步骤(纯手工)

① 在 layout 目录下创建XML文件;

② 创建与 XML 文件对应的 Java 代码;

③ 在 AndroidManifest.xml 中注册页面配置。

2.2 快速创建App活动页面

可以 直接在java下的包直接new一个Activity ,这样就全自动创建了。

https://i-blog.csdnimg.cn/blog_migrate/878cb6582e3ec099e7cb533d1a837108.png

自动创建的Java文件:

https://i-blog.csdnimg.cn/blog_migrate/16e7f47629f38b010d65d2d7986868c0.png

自动创建的xml文件:

https://i-blog.csdnimg.cn/blog_migrate/8a746dee31b0ffc035513db7a2267c53.png

在 AndroidManifest.xml 自动注册页面配置:

https://i-blog.csdnimg.cn/blog_migrate/8454dbb5b6796b05b2b504f10b920de4.png