我用AI学Android Jetpack Compose之入门篇(1)

这篇我们先来跑通第一个Android Jetpack Compose工程,现在新版本的Android Studio,新建工程选择Empty Activity默认就会开启Jetpack Compose的支持,再次声明,答案来自 通义千问Ai

文章目录

  • 1.用Android Jetpack Compose需要安装什么开发环境?
  • 2.我有基本的Android Studio环境,告诉我怎么创建Android Jetpack Compose工程?
      • 创建新的Jetpack Compose项目
      • 添加Jetpack Compose依赖(如果需要)
      • 运行你的第一个Jetpack Compose应用
  • 3.我的Android Studio找不到Empty Compose Activity,怎么办?
      • 1. **检查Android Studio版本**
      • 2. **确认插件已安装**
      • 3. **手动添加Jetpack Compose支持**
        • 创建普通项目
        • 修改`build.gradle`文件
        • 将XML布局转换为Compose函数
      • 4. **重启并清理项目**
  • 4.我纠正你一下,我用的是Android Studio Giraffe | 2022.3.1 Patch 1,我新建工程,选Empty Activity,默认就是Compose
      • 确认项目配置
      • 探索和学习
  • 5.怎么运行这个应用?
      • 1. **确认开发环境**
      • 2. **连接目标设备**
      • 3. **选择目标设备**
      • 4. **构建并运行应用**
      • 5. **查看结果**
      • 6. **调试与日志**
      • 示例步骤

1.用Android Jetpack Compose需要安装什么开发环境?

使用Android Jetpack Compose进行开发,你需要设置一个适当的开发环境。以下是详细的步骤和需要安装的工具:

  1. 安装Java Development Kit (JDK)

    • 虽然Jetpack Compose主要基于Kotlin,但Android开发仍然依赖于Java环境。确保你已经安装了最新版本的OpenJDK或Oracle JDK(通常推荐使用OpenJDK)。你可以通过命令行检查是否已安装以及其版本号:java -version
  2. 安装Android Studio

    • Android Studio是官方支持的集成开发环境(IDE),它为Jetpack Compose提供了最佳的支持。确保下载并安装最新稳定版本的Android Studio,因为它会包含最新的Jetpack Compose插件和其他必要的工具。
      • 你可以从Android Studio官网获取安装包。
  3. 配置Android SDK

    • 在安装Android Studio的过程中,会自动为你配置好Android SDK。如果你选择了自定义安装,确保选择了“Android SDK”选项。此外,确保你的SDK版本是最新的,并且包含了构建Jetpack Compose应用所需的API级别。
  4. 启用Jetpack Compose支持

    • 安装完成后,在Android Studio中创建新项目时可以选择使用Jetpack Compose模板。如果已有项目想要添加Compose支持,可以通过修改build.gradle文件来添加必要的依赖项。例如:
      dependencies {
          implementation "androidx.compose.ui:ui:1.0.0" // 或者更新到最新版本
          implementation "androidx.compose.material:material:1.0.0"
          implementation "androidx.compose.ui:ui-tooling-preview:1.0.0"
          debugImplementation "androidx.compose.ui:ui-tooling:1.0.0"
      }
      
  5. 安装必要的Gradle插件

    • 确保你的项目的build.gradle文件中包含了正确的Gradle插件,如com.android.applicationorg.jetbrains.kotlin.android,并且它们的版本是最新的。这将确保你可以正确地编译和支持Jetpack Compose的应用程序。
  6. 设置虚拟设备或连接真实设备

    • 使用Android Studio自带的AVD Manager(Android Virtual Device Manager)创建和管理模拟器,或者直接连接一个真实的Android设备用于测试。为了使Jetpack Compose的功能得到最好的表现,建议使用支持GPU加速的较新版本Android系统的设备或模拟器。
  7. 探索Jetpack Compose示例代码和文档

    • 最后,不要忘记利用官方提供的Jetpack Compose示例项目和文档来学习和参考。Google经常更新这些资源,以反映最新的实践和技术进步。

完成以上步骤后,你应该已经准备好开始使用Jetpack Compose进行开发了。记得定期检查是否有新的更新,保持你的开发环境处于最新状态。

2.我有基本的Android Studio环境,告诉我怎么创建Android Jetpack Compose工程?

既然你已经有了基本的Android Studio环境,创建一个支持Jetpack Compose的新项目就相对简单了。以下是详细的步骤来引导你完成这个过程:

创建新的Jetpack Compose项目

  1. 启动Android Studio

    • 打开你的Android Studio。
  2. 选择“Start a new Android Studio project”

    • 在欢迎界面中选择“Start a new Android Studio project”以开始一个新的项目。
  3. 选择模板

    • 在“Choose your project”页面,你会看到多个应用模板。对于Jetpack Compose项目,请选择带有“Empty Compose Activity”的选项。这将为你设置好所有必要的Compose依赖项。
    • 如果没有找到此选项,确保你使用的是最新版本的Android Studio,并且已经安装了Jetpack Compose的支持库。
  4. 配置项目信息

    • 输入你的项目名称、包名和保存位置。
    • 选择最低SDK版本(API level)。为了充分利用Jetpack Compose的功能,建议选择一个较高的API级别,如API 21或更高。
  5. 点击“Finish”

    • 点击“Finish”按钮后,Android Studio将会根据所选模板自动生成项目结构,并自动添加必要的依赖项到build.gradle文件中。

添加Jetpack Compose依赖(如果需要)

如果你是从一个非Compose项目转换而来,或者上述步骤未能正确添加Compose依赖,你需要手动编辑build.gradle文件。在项目的build.gradle文件中,确保包含以下内容:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    ...
    buildFeatures {
        compose true // 启用 Jetpack Compose
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.4.0' // 使用最新的版本号
    }
    ...
}

dependencies {
    implementation "androidx.compose.ui:ui:1.4.0" // 或者更新到最新版本
    implementation "androidx.compose.material:material:1.4.0"
    implementation "androidx.compose.ui:ui-tooling-preview:1.4.0"
    debugImplementation "androidx.compose.ui:ui-tooling:1.4.0"
    ...
}

运行你的第一个Jetpack Compose应用

  1. 同步项目

    • 修改完build.gradle文件后,记得点击工具栏上的“Sync Now”来同步项目更改。
  2. 打开主活动文件

    • 通常情况下,主活动文件是MainActivity.kt。在这个文件中,你会看到一些默认生成的代码,用于展示一个简单的文本组件。
  3. 运行应用程序

    • 连接一个物理设备或者启动一个虚拟设备(AVD),然后点击工具栏上的绿色运行按钮(Run)来编译并部署你的应用。
  4. 查看结果

    • 应用程序应该成功构建并在选定的设备上运行,显示由Jetpack Compose渲染的UI。

通过以上步骤,你应该能够成功创建并运行一个基于Jetpack Compose的Android项目。随着你对Compose越来越熟悉,你可以开始探索更多复杂的UI组件和功能。如果你遇到任何问题,可以随时查阅官方文档或寻求社区的帮助。

3.我的Android Studio找不到Empty Compose Activity,怎么办?

如果你在创建新项目时没有看到“Empty Compose Activity”模板,这可能是由于以下几个原因造成的。我们可以逐一排查并解决问题:

1. 检查Android Studio版本

确保你使用的是最新版本的Android Studio。Jetpack Compose的支持是在较新的版本中引入的,因此旧版本可能不包含这个模板。你可以通过以下步骤更新你的Android Studio:

  • 打开Android Studio。
  • 转到Help > Check for Updates(在macOS上是Android Studio > Check for Updates)。
  • 如果有可用更新,按照提示进行安装。

2. 确认插件已安装

确保你已经安装了必要的Jetpack Compose插件和支持库。有时候,即使Android Studio本身是最新的,也可能需要单独安装或更新这些插件:

  • 打开File > Settings(在macOS上是Android Studio > Preferences)。
  • 导航到Plugins,搜索Jetpack ComposeCompose相关插件,并确保它们已被安装且为最新版本。
  • 如果未安装,请点击安装按钮,然后重启IDE以应用更改。

3. 手动添加Jetpack Compose支持

如果上述方法仍然无法解决问题,你可以选择一个普通的空活动模板(如“Empty Activity”),然后手动将Jetpack Compose集成到项目中。以下是具体步骤:

创建普通项目
  • 使用“Empty Activity”或其他类似模板创建一个新的Android项目。
修改build.gradle文件

编辑项目的顶级build.gradle文件和模块级build.gradle文件,以添加必要的依赖项和配置。例如,在模块级build.gradle文件中添加如下内容:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    ...
    buildFeatures {
        compose true // 启用 Jetpack Compose
    }
    composeOptions {
        kotlinCompilerExtensionVersion '1.4.0' // 使用最新的版本号
    }
    ...
}

dependencies {
    implementation "androidx.compose.ui:ui:1.4.0" // 或者更新到最新版本
    implementation "androidx.compose.material:material:1.4.0"
    implementation "androidx.compose.ui:ui-tooling-preview:1.4.0"
    debugImplementation "androidx.compose.ui:ui-tooling:1.4.0"
    ...
}
将XML布局转换为Compose函数

打开默认生成的activity_main.xml文件,将其删除或重命名为备份。然后,在MainActivity.kt中替换现有的代码,使其成为一个简单的Compose应用程序。例如:

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.sp

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp {
                Greeting("Hello, World!")
            }
        }
    }
}

@Composable
fun MyApp(content: @Composable () -> Unit) {
    MaterialTheme {
        Surface {
            content()
        }
    }
}

@Composable
fun Greeting(name: String) {
    Text(text = name, fontSize = 24.sp)
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    MyApp {
        Greeting("Hello, World!")
    }
}

4. 重启并清理项目

有时候,IDE缓存可能导致一些问题。尝试执行以下操作来清除缓存并重启项目:

  • 在菜单栏中选择File > Invalidate Caches / Restart...
  • 点击Invalidate and Restart按钮。

完成以上步骤后,你应该能够成功地将Jetpack Compose集成到你的项目中。尽管缺少特定的模板,但通过手动配置,你仍然可以充分利用Jetpack Compose的功能。如果你遇到任何问题或不确定的地方,不要犹豫向社区寻求帮助或者查阅官方文档。

4.我纠正你一下,我用的是Android Studio Giraffe | 2022.3.1 Patch 1,我新建工程,选Empty Activity,默认就是Compose

感谢你的澄清。在Android Studio Giraffe | 2022.3.1 Patch 1版本中,选择“Empty Activity”模板时,默认情况下确实会启用Jetpack Compose支持。这意味着你不需要专门寻找“Empty Compose Activity”模板,因为“Empty Activity”已经集成了Compose。

既然如此,如果你选择了“Empty Activity”并且默认就是使用Jetpack Compose,那么你应该已经有了一个配置好的Compose项目。接下来,你可以直接开始探索和编写Jetpack Compose代码了。

确认项目配置

为了确保一切设置正确,你可以检查以下几个方面:

  1. build.gradle 文件

    • 检查模块级的build.gradle文件,确认已包含必要的Jetpack Compose依赖项。例如:

      plugins {
          id 'com.android.application'
          id 'org.jetbrains.kotlin.android'
      }
      
      android {
          ...
          buildFeatures {
              compose true // 启用 Jetpack Compose
          }
          composeOptions {
              kotlinCompilerExtensionVersion '1.4.0' // 使用最新的版本号
          }
          ...
      }
      
      dependencies {
          implementation "androidx.compose.ui:ui:1.4.0" // 或者更新到最新版本
          implementation "androidx.compose.material:material:1.4.0"
          implementation "androidx.compose.ui:ui-tooling-preview:1.4.0"
          debugImplementation "androidx.compose.ui:ui-tooling:1.4.0"
          ...
      }
      
  2. 主活动文件(MainActivity.kt

    • 打开MainActivity.kt文件,确认它使用了setContent方法来设置Compose内容,并且包含了至少一个简单的Composable函数。例如:

      import android.os.Bundle
      import androidx.activity.ComponentActivity
      import androidx.activity.compose.setContent
      import androidx.compose.material3.MaterialTheme
      import androidx.compose.material3.Surface
      import androidx.compose.material3.Text
      import androidx.compose.runtime.Composable
      import androidx.compose.ui.tooling.preview.Preview
      import androidx.compose.ui.unit.sp
      
      class MainActivity : ComponentActivity() {
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContent {
                  MyApp {
                      Greeting("Hello, World!")
                  }
              }
          }
      }
      
      @Composable
      fun MyApp(content: @Composable () -> Unit) {
          MaterialTheme {
              Surface {
                  content()
              }
          }
      }
      
      @Composable
      fun Greeting(name: String) {
          Text(text = name, fontSize = 24.sp)
      }
      
      @Preview(showBackground = true)
      @Composable
      fun DefaultPreview() {
          MyApp {
              Greeting("Hello, World!")
          }
      }
      
  3. 运行应用程序

    • 连接物理设备或启动AVD(Android Virtual Device),然后点击工具栏上的绿色运行按钮(Run)来编译并部署你的应用。
    • 应用程序应该成功构建并在选定的设备上运行,显示由Jetpack Compose渲染的UI。

探索和学习

既然你已经有了一个预配置好的Jetpack Compose项目,现在是时候开始深入学习和探索了。你可以尝试修改现有的Composable函数、添加新的组件、处理状态变化等。此外,官方文档和教程是极好的资源,可以帮助你进一步理解Jetpack Compose的各种特性和最佳实践。

如果你遇到任何问题或有疑问,随时可以提问!祝你在Jetpack Compose的学习之旅中取得成功。

5.怎么运行这个应用?

要运行你创建的Jetpack Compose应用,你需要确保已经正确设置了开发环境,并且遵循了正确的步骤来编译和部署应用到目标设备上。以下是详细的步骤指南:

1. 确认开发环境

确保你的Android Studio是最新的,并且已经安装了必要的插件和支持库。如果还没有完成这些设置,请参考之前的指导进行配置。

2. 连接目标设备

你可以选择使用虚拟设备(AVD)或物理设备来运行应用程序:

  • 使用虚拟设备

    • 打开AVD Manager(可以通过点击工具栏中的小机器人图标或通过Tools > AVD Manager访问)。
    • 创建一个新的虚拟设备或者选择一个已有的设备配置。
    • 启动所选的虚拟设备。
  • 使用物理设备

    • 使用USB线将Android设备连接到电脑。
    • 确保开发者选项和USB调试已经在设备上启用。可以在设备的“设置”>“关于手机”中多次点击版本号以开启开发者选项,然后在“设置”>“系统”>“开发者选项”中找到并启用USB调试。

3. 选择目标设备

  • 在Android Studio的工具栏中,你会看到一个下拉菜单,显示可用的目标设备列表。
  • 如果你启动了虚拟设备或连接了物理设备,它应该出现在这个列表中。
  • 选择你要运行应用的目标设备。

4. 构建并运行应用

  • 点击工具栏上的绿色运行按钮(Run),或者通过Run > Run 'app'菜单项来启动应用。
  • Android Studio会自动执行以下操作:
    • 编译项目代码。
    • 构建APK文件。
    • 将APK安装到选定的目标设备上。
    • 启动应用程序。

5. 查看结果

一旦应用成功部署到目标设备上,你应该能够看到由Jetpack Compose渲染的UI。例如,如果你按照之前提供的示例代码创建了一个简单的“Hello, World!”应用,那么屏幕上应该会显示居中的文本。

6. 调试与日志

如果遇到问题,可以利用以下工具进行排查:

  • Logcat:打开Logcat窗口(View > Tool Windows > Logcat),查看日志输出,寻找可能的错误信息。
  • Debug模式:通过点击工具栏上的调试按钮(带有虫子图标的按钮)来启动应用,进入调试模式,这可以帮助你逐步检查代码执行情况。
  • 布局检查器:使用Layout Inspector工具(View > Tool Windows > Layout Inspector)来分析运行时的UI布局,了解各个组件的位置和属性。

示例步骤

假设你已经有一个预配置好的Jetpack Compose项目,以下是具体的操作步骤:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp {
                Greeting("Hello, World!")
            }
        }
    }
}

@Composable
fun MyApp(content: @Composable () -> Unit) {
    MaterialTheme {
        Surface(modifier = Modifier.fillMaxSize()) {
            content()
        }
    }
}

@Composable
fun Greeting(name: String) {
    Box(
        modifier = Modifier
            .fillMaxSize()
            .wrapContentSize(Alignment.Center) // 居中对齐内容
    ) {
        Text(text = name, fontSize = 24.sp)
    }
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    MyApp {
        Greeting("Hello, World!")
    }
}
  1. 确认所有依赖项和配置都正确无误
  2. 选择目标设备(虚拟机或物理设备)。
  3. 点击运行按钮,等待应用编译、构建和部署。
  4. 观察设备屏幕,确认应用是否如预期般运行。

如果你遇到了任何特定的问题或错误消息,不要犹豫向我提问!我可以帮助你进一步诊断和解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949378.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五个不同类型的数据库安装

一、 官方首页下载 打开 MySQL 官方首页,链接为: MySQL 进去社区后选择合适的版本进行安装 安装细节 依图一路next 点击finish结束安装 二、 在线YUM仓库 将该安装包的下载链接在 Linux 操作系统中按照以下命令直接进行下载 三、 二进制本地 通过该链接…

决定系数(R²分数)——评估回归模型性能的一个指标

目录 1.定义 2.计算举例 3. 结果分析 1.定义 R(R平方)分数,也称为决定系数,是用来评估回归模型性能的一个指标。它表示自变量解释因变量变异性的比例。R分数的取值范围通常在0到1之间,其值越接近1,说明…

基于单片机的直流稳压电源的设计(论文+源码)

1.系统方案设计 在本次直流稳压电源的设计中,其关键指标如下: 系统输入电压220V交流系统输出直流0到12V可调,步进可以达到0.1V电流最大输出可以到2A具有短路保护功能可以通过液晶或者数码管等显示设备显示当前输出电压 2. 电路图

排序算法——堆排序

什么是堆 堆就是一种特殊的二叉树,他有以下特点: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 堆又可以分为大根堆和小根堆 大根堆:根节点最大,每个节点都小于或等于父节点 小跟堆&am…

数据挖掘——聚类

数据挖掘——聚类 聚类K-meansKNN VS K-meansK-Nearest Neighbors (KNN)K-means K中心算法PAM算法 K-modes算法——解决数据敏感的问题KMeans算法 ——解决初始点选择问题K-中心点层次方法AGNES算法——最小距离单链接全链接平均链接 聚类评估K均值和K中心点的优缺点层次化聚类…

在线机考|2024华为实习秋招春招编程题(最新)——第3题_个性化歌单推荐系统_300分(十一)

题目内容 假设你是音乐服务的开发者,为了提高用户体验需要解决推荐歌单的同质化问题,保证推荐给用户的所有歌单不包含相同歌曲的。给定一个包含N个歌单和M条歌单重复记录,每个歌单用一个从1到N的整数编号,歌单重复记录包含两个歌单的ID,表示两个歌单有相同的歌曲。 你的任…

每日OJ_牛客_宵暗的妖怪_DP_C++_Java

目录 牛客_宵暗的妖怪_DP 题目解析 C代码 Java代码 牛客_宵暗的妖怪_DP 宵暗的妖怪 描述: 露米娅作为宵暗的妖怪,非常喜欢吞噬黑暗。这天,她来到了一条路上,准备吞噬这条路上的黑暗。这条道路一共被分为n 部分&…

开源架构的自动化测试策略优化版

最近四篇文章推荐: 开源架构的容器化部署优化版(New) 开源架构的微服务架构实践优化版(New) 开源架构中的数据库选择优化版(New) 开源架构学习指南:文档与资源的智慧锦囊&#xff08…

2. 进程和线程

文章目录 前言1. 进程是什么2. 进程的相关属性3. 线程是什么4. 为什么引入线程5. 进程和线程的区别 前言 上一篇博客,我们讲到了CPU和操作系统,今天我们讲一个操作系统中一个非常重要的概念—线程和进程 1. 进程是什么 每个应用程序运行于现代操作系统…

三甲医院等级评审八维数据分析应用(八)--数据治理的持续改进与反馈机制篇

一、引言 1.1 研究背景与意义 当前三甲医院在数据管理方面暴露出诸多棘手问题。一方面,数据治理缺乏系统性与规范性,数据标准不统一,不同科室、信息系统之间的数据格式各异、编码混乱,导致数据整合与共享困难重重,严重制约了数据分析的准确性与深度。以某三甲医院为例,…

HTML——66.单选框

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>单选框</title></head><body><!--input元素的type属性&#xff1a;(必须要有)--> <!--单选框:&#xff08;如所住省会&#xff0c;性别选择&…

数据结构与算法之排序

9.1 排序的概念 1. 排序的定义 定义&#xff1a;排序是将表中的记录按关键字递增&#xff08;或递减&#xff09;有序排列的过程。说明&#xff1a;数据中可以存在相同关键字的记录。本章主要考虑递增排序。扩展&#xff1a;排序是数据处理中的基本操作之一&#xff0c;广泛应用…

Swagger学习⑩——@Server注解

介绍 Server 是 Swagger/OpenAPI 3.0 注解中的一个注解&#xff0c;用于定义 API 文档中的服务器信息。通过 Server 注解&#xff0c;你可以指定 API 服务的基础 URL 或其他相关信息。 源代码 package io.swagger.v3.oas.annotations.servers;import io.swagger.v3.oas.anno…

MATLAB仿真:基于GS算法的经大气湍流畸变涡旋光束波前校正仿真

GS算法流程 GS&#xff08;Gerchberg-Saxton&#xff09;相位恢复算法是一种基于傅里叶变换的最速下降算法&#xff0c;可以通过输出平面和输入平面上光束的光强分布计算出光束的相位分布。图1是基于GS算法的涡旋光束畸变波前校正系统框图&#xff0c;在该框图中&#xff0c;已…

C语言笔记之`char*`、`const char*` 和 `char[]`辨析

C语言笔记之char*、const char* 和 char[]辨析 code review! 参考笔记 1.C语言笔记之char*、const char* 和 char[]辨析 2.C++笔记之int、size_t、uint8_t、unsigned char*区别 3.C++之char和string字符串类探究 4.C++笔记之字节数组的处理 5.C++笔记之如何给 const char* 类型…

十种基础排序算法(C语言实现,带源码)(有具体排序例子,适合学习理解)

学习了十种常见的排序方法&#xff0c;此文章针对所学的排序方法进行整理&#xff08;通过C语言完成排序&#xff09;。 参考内容&#xff1a; https://blog.csdn.net/mwj327720862/article/details/80498455 https://www.runoob.com/w3cnote/ten-sorting-algorithm.html 1. 冒…

Timer、Ticker使用及其注意事项

Timer、Ticker使用及其注意事项 在刚开始学习golang语言的时候就听说Timer、Ticker的使用要尤其注意&#xff0c;很容易出现问题&#xff0c;这次就来一探究竟。 本文主要脉络&#xff1a; 介绍定时器体系&#xff0c;并介绍常用使用方式和错误使用方式源码解读 timer、tic…

密码学科普

1 信息传输中的安全隐患 1. 窃听 解决方案&#xff1a;明文加密&#xff0c;X只能窃听到密文 2. 假冒 解决方案&#xff1a;消息认证码或者数字签名 3. 篡改 解决方案&#xff1a;消息认证码或者数字签名 4. 事后否认 解决方案&#xff1a;数字签名 2 对称加密/非对称加密 1…

MMPose关键点检测实践(一)

一&#xff0c;安装环境 这一步&#xff0c;需根据自己的硬件环境&#xff0c;按照以下文档安装即可&#xff0c;最大的变数就是不同的硬件&#xff0c;对应的软件版本不一样&#xff0c;这个因人而异&#xff0c;没有统一版本。mmpose安装说明&#xff1a; https://mmpose.r…

指针 const 的组合

1、首先来了解一下常量 const int num 5&#xff1b; 那么num的值是5&#xff0c; num的值不可修改 2、来了解一下指针 int value 5; int* p &value; 我喜欢吧指针和类型放一起&#xff0c;来强调p是一个指针类型&#xff0c; 而赋值的时候就得赋值一个int类型的地址…