郑州网站推广平台/广州优化营商环境条例

郑州网站推广平台,广州优化营商环境条例,公司名称logo图片,wordpress特定用户特定分类知识点来源:人间自有韬哥在,豆包 目录 一、发布应用程序1. 修改发布必备设置1.1 打开设置面板1.2 修改公司名、游戏项目名、版本号和默认图标1.3 修改 Package Name 和 Minimum API Level 2. 发布应用程序2.1 配置 Build Settings2.2 选择发布选项2.3 构…

知识点来源:人间自有韬哥在,豆包

目录

  • 一、发布应用程序
    • 1. 修改发布必备设置
      • 1.1 打开设置面板
      • 1.2 修改公司名、游戏项目名、版本号和默认图标
      • 1.3 修改 Package Name 和 Minimum API Level
    • 2. 发布应用程序
      • 2.1 配置 Build Settings
      • 2.2 选择发布选项
      • 2.3 构建 APK 文件
    • 3. 测试发布的 APK 文件
      • 3.1 使用 Android 设备进行测试
      • 3.2 使用 Android 模拟器进行测试
  • 二、发布界面参数介绍
    • 1.1.BuildSettings生成设置
    • 2.PlayerSettings
    • 3.OtherSettings-渲染
    • 4.OtherSettings-Vulkan设置和身份证明
    • 5.OtherSettings-配置(Configuration)
    • 6.OtherSettings-ScriptCompilation
    • 7.OtherSettings-优化和堆栈跟踪
    • 8.PublishingSettings-KeystoreManager
    • 9.PublishingSettings-其他
  • 三、交互项目创建
    • 1.Unity调用安卓
    • 2.安卓调用Unity
    • 3.Android开发的必备原理
    • 4.交互项目创建

一、发布应用程序

1. 修改发布必备设置

1.1 打开设置面板

在Unity编辑器中,依次点击 File -> Build Settings,接着在弹出的窗口里点击 Player Settings 按钮,这将打开 Player Settings 面板。

1.2 修改公司名、游戏项目名、版本号和默认图标

  • 公司名:在 Player Settings 面板的 Identification 部分,找到 Company Name 字段,把它修改为你公司的名称。
  • 游戏项目名:同样在 Identification 部分,将 Product Name 字段修改为你的游戏项目名称。
  • 版本号:还是在 Identification 部分,修改 Version 字段,以反映游戏当前的版本号,版本号通常遵循 主版本号.次版本号.修订号 的格式,例如 1.0.0
  • 默认图标:在 Other Settings 下的 Icon 部分,点击 + 按钮,选择你准备好的图标文件(通常为 PNG 格式)。Unity 支持多种尺寸的图标,你可以上传不同尺寸的图标以适配不同的设备。

1.3 修改 Package Name 和 Minimum API Level

  • Package Name:在 Other Settings 部分,找到 Package Name 字段,这个字段是应用在 Android 系统中的唯一标识符,一般采用反向域名的格式,例如 com.yourcompany.yourgame,必须对其进行修改设置。
  • Minimum API Level:同样在 Other Settings 部分,找到 Minimum API Level 字段,根据你的游戏兼容性需求选择合适的 Android API 级别。通常建议选择一个较广泛支持的 API 级别,但也要考虑到你使用的功能对 API 级别的要求。

2. 发布应用程序

2.1 配置 Build Settings

Build Settings 窗口中,选择 Android 平台,然后点击 Switch Platform 按钮,等待 Unity 完成平台切换。

2.2 选择发布选项

  • Build System:通常选择 Gradle
  • Target SDK Version:根据你的需求选择合适的 Android SDK 版本。
  • Scripting Backend:可以选择 IL2CPP 以获得更好的性能,或者选择 Mono 以获得更广泛的兼容性。

2.3 构建 APK 文件

点击 Build 按钮,选择一个保存 APK 文件的目录,然后等待 Unity 完成构建过程。构建过程可能需要一些时间,具体取决于项目的大小和复杂度。

3. 测试发布的 APK 文件

3.1 使用 Android 设备进行测试

  • 开启 USB 调试:在 Android 设备的 设置 -> 关于手机 中,多次点击 版本号 开启开发者选项,然后在开发者选项中开启 USB 调试 功能。
  • 连接设备:使用 USB 数据线将 Android 设备连接到电脑。
  • 安装 APK 文件:在电脑上找到之前构建好的 APK 文件,将其复制到 Android 设备上,然后在设备上找到该文件并点击安装。
  • 测试游戏:安装完成后,在设备的应用列表中找到并打开游戏,进行全面的测试,确保游戏的各项功能正常运行。

3.2 使用 Android 模拟器进行测试

  • 安装模拟器:可以使用 Android Studio 自带的模拟器,或者第三方模拟器如 BlueStacks。
  • 启动模拟器:启动模拟器并等待其完全启动。
  • 安装 APK 文件:将 APK 文件拖放到模拟器窗口中,按照提示完成安装。
  • 测试游戏:安装完成后,在模拟器的应用列表中找到并打开游戏,进行测试。

二、发布界面参数介绍

1.1.BuildSettings生成设置

设置项描述可选值及说明
Texture Compression(纹理压缩)设置发布后的纹理压缩格式1. Use Player Settings:使用在播放器设置中设置的纹理压缩格式
2. ETC:使用ETC格式
3. ETC2:使用ETC2格式,安卓常用,支持透明通道,老设备可能不支持
4. ASTC:使用ASTC格式
5. DXT:使用DXT格式
6. PVRTC:使用PVRTC格式
可统一设为ETC2,并在ETC2 fallback设置不支持时的替代方式
ETC2 fallback(ETC2回退)当Unity用于不支持ETC2的安卓设备时的RGBA纹理格式1. 32 - bit:32位,以全分辨率存储RGBA纹理,质量最高,内存占用最多
2. 16 - bit:16位,以全分辨率存储RGBA纹理,质量较低,内存占用相对较少
3. 32 - bit, half resolution:32位,半分辨率,纹理会模糊,内存占用较小
非ETC2压缩,大多用32 - bit备用,取决于GPU支持
Export Project(导出项目)勾选后,将Unity项目导出为可导入Android Studio的Gradle项目-
Symlink Sources(符号链接源)当勾选Export Project时才能勾选,决定是否在Unity和导出的Gradle项目之间共享Java和Kotlin源文件启用后利于测试和迭代Java和Kotlin代码,重新导出时更改会保留,适合二次开发
Build App Bundle (Google Play)(生成应用程序资源包)是否将应用程序作为Android应用捆绑包(AAB)1. 启用:发布AAB,可配合安卓二次开发
2. 禁用:发布APK,可直接安装
Create symbols.zip(创建符号压缩文件)符号文件可帮助调试应用程序1. Disabled:不生成
2. Public:生成公共符号包,包含解析函数地址信息,包小于调试符号包
3. Debugging:生成调试符号包,含完整调试信息和符号表,可解析堆栈、附加调试器
Run Device(运行设备)指定在哪个附加设备上测试生成连接新设备或列表无设备时,点击Refresh刷新
Build to Device(构建到设备)不创建完整构建,将修改文件直接部署到设备速度快,方便调试
Development Build(开发构建)是否包含脚本调试符号和性能分析器到项目中勾选可调试应用程序
Autoconnect Profiler(自动连接分析器)是否自动将分析器连接到生成的应用程序-
Deep Profiling(深度分析)是否启用深度剖析在分析器中启用可返回详细分析数据,但会降低脚本执行速度
Script Debugging(脚本调试)是否允许调试应用程序的脚本文件Wait For Managed Debugger:程序运行脚本代码前是否等待调试器连接
Compression Method(压缩方法)Unity在构建时压缩项目中数据的方式1. Default:默认用ZIP,压缩效果略好,解压慢
2. LZ4:快速压缩格式,提高加载时间
3. LZ4HC:LZ4高压缩版本,构建慢,发布版本效果好,提高加载时间
Max Texture Size(最大的纹理大小)用于本地开发时导入纹理的最大尺寸减小可加快资源导入和平台切换
Texture Compression(纹理压缩相关选项)选择可加快资源导入和平台切换1. No Override:使用默认设置
2. Force Fast Compressor:强制快速压缩
3. Force Uncompressed:强制解压缩

2.PlayerSettings

设置项分类描述可选值及说明
icon(图标设置)基础设置设置在设备上显示的应用图标1. Adaptive:运行在 Android 8.0 及以上版本设备的应用图标
2. Round:运行在 Android 7.1 及以上版本设备的应用图标
3. Legacy icons:运行在 Android 7.1 以下版本设备的应用图标
Resolution and Presentation(分辨率和演示设置)基础设置--
Fullscreen Mode(全屏模式)分辨率和演示设置-1. Fullscreen Window:全屏窗口,导航栏始终隐藏,应用内容可能缩放,有黑边
2. Windowed:窗口模式,大小取决于应用分辨率
Default Window Width分辨率和演示设置应用程序窗口的默认窗口宽度单位为像素
Default Window Height分辨率和演示设置应用程序窗口的默认窗口高度单位为像素
Minimum Window Width分辨率和演示设置应用程序窗口的最小宽度单位为像素
Minimum Window Height分辨率和演示设置应用程序窗口的最小高度单位为像素
Resizable Window(可调整大小的窗口)分辨率和演示设置设置用户是否可调整应用窗口大小,可在 Android 和平板应用中启用多窗口功能详情见 Android Developers
Hide Navigation Bar分辨率和演示设置是否隐藏顶部显示的导航栏-
Render outside safe area分辨率和演示设置是否使用所有可用屏幕控件渲染,包括刘海区域-
Optimized frame Pacing分辨率和演示设置是否均匀分布帧以减小帧率方差,启用后体验更流畅-
Resolution Scaling Mode(分辨率缩放模式)分辨率和演示设置-1. Disabled:禁用,应用以设备本机屏幕分辨率呈现
2. Fixed DPI:使用 API 应用分辨率缩放,优化性能和电池寿命
Target DPI分辨率和演示设置若设备本机屏幕 DPI 高于此值,Unity 降低应用分辨率匹配设置计算方式:Min(Target DPI * Factor / Screen DPI,1),Factor 是 Quality 质量设置中 Resolution Scaling Fixed DPI Factor 参数
Reset resolution on window resize分辨率和演示设置本机窗口大小更改时,是否将屏幕分辨率设为新的本机窗口大小,若为 Fixed DPI 则重新计算分辨率-
Blit Type(光高类型)分辨率和演示设置是否使用 Blit 将最终图像呈现在屏幕上1. Always:Unity 渲染到屏幕外缓冲区,再用 Blit 复制到设备帧缓冲区
2. Never:Unity 渲染到设备操作系统提供的帧缓冲区,失败有警告,通常更快但不兼容所有设备
3. Auto:先渲染到设备提供的帧缓冲区,失败则用 Blit 呈现
Supported Aspect Ratio(支持的纵横比)分辨率和演示设置--
Aspect Ratio Mode分辨率和演示设置指定应用支持的最大纵横比,设备纵横比大于此值时,Unity 用此纵横比并添加黑条1. Legacy Wide Screen(1.86):支持 Android 传统宽屏宽高比
2. Native Aspect Ratio:支持 Android 本机宽高比
3. Custom:自定义纵横比
Up To分辨率和演示设置选择自定义纵横比时可自行设置-
Orientation(屏幕取向)分辨率和演示设置--
Default Orientation分辨率和演示设置指定应用使用的屏幕方向1. Portrait:竖屏,应用窗口底部和屏幕底部对齐
2. Portrait Upside Down:竖屏倒置,应用窗口底部和屏幕顶部对齐
3. Landscape Right:右横屏,应用窗口右侧和屏幕底部对齐
4. Landscape Left:左横屏,应用窗口左侧和屏幕底部对齐
5. Auto Rotation:自动旋转,可勾选允许的方向
Use 32 - bit Display Buffer分辨率和演示设置显示缓冲区是否保存 32 位颜色值而非 16 位,后期处理有条纹或需 Alpha 值时启用某些后期处理效果需此设置,因以相同格式创建渲染纹理
Disable Depth and Stencil分辨率和演示设置是否禁用深度和模板缓冲区-
Render Over Native UI分辨率和演示设置是否在 Android 或 iOS 的本机 UI 上渲染,生效需相机清除标志设为使用 Alpha 值低于 1 的纯色-
Show Loading Indicator(显示加载指示器)分辨率和演示设置指定加载指示器是否显示及显示方式1. Don’t Show:不显示加载指示条
2. Large:显示大的加载指示条
3. Inversed Large:显示大的加载指示条,颜色翻转
4. Small:显示小的加载指示条
5. Inversed Small:显示小的加载指示条,颜色翻转
Splash Image(启动图像设置)基础设置--
Virtual Reality Splash Image启动图像设置虚拟现实的初始屏幕设置-
Show Splash Screen启动图像设置是否显示启动图像,收费版本可修改,免费版本不能改-
Preview启动图像设置预览启动图像-
Splash Style(启动风格)启动图像设置-1. Dark on Light:暗到亮
2. Light on Dark:亮到暗
Animation(启动图像动画效果)启动图像设置-1. Static:静态不动
2. Dolly:由小变大
3. Custom:自定义
Draw Mode(绘制模式)启动图像设置-1. Unity Logo Below:Unity Logo 显示在前
2. All Sequential:所有按顺序
3. Logos:可添加 Logo 图片按顺序显示
Overlay Opacity启动图像设置覆盖不透明度-
Background Color启动图像设置背景颜色-
Blur Background Image启动图像设置是否模糊背景图像-
Background Image启动图像设置背景图像-
Alternate Portrait Image启动图像设置备选图像-
Static Splash Image启动图像设置静态启动图像-
Scaling(缩放比例)启动图像设置-1. Center:居中(仅缩小),图像太大时缩小,否则以原始大小绘制
2. Scale to fit(填充):缩放图像使较长尺寸适合屏幕,用黑色填充空白
3. Scale to fit(裁剪):缩放图像使较短尺寸适合屏幕,裁剪较长维度

3.OtherSettings-渲染

设置项描述可选值及说明
Color Space(色彩空间)切换 Unity 中用于渲染的色彩空间1. Gamma(伽马):纹理倾向于保存在此空间,但着色器采样时基于伽马值可能导致结果不准确
2. Linear(线性):效果相对较好,不是所有平台都支持。支持平台有 Android、iOS、WebGL、Windows、Mac OS X 、Linux。Android 至少需 OpenGL ES 3.0 图形 API 和 Android 4.3;iOS 需要 Metal 图形 API;WebGL 至少需 WebGL 2.0 图形 API。确定主流设备支持情况选择,不支持自动退出
Vulkan一个跨平台的 2D 和 3D 绘图应用程序接口,是 OpenGL 的下一代版本,旨在提供更低的 CPU 开销与更直接的 GPU 控制-
Auto Graphics API(自动图形接口)控制图形 API 接口的使用方式1. 勾选:Unity 自动尝试使用对应图形 API 接口,默认使用 Vulkan,不支持则退到 GLES3.2、GLES3.1 或 GLES3.0
2. 不勾选:可在列表中自行对使用的图形 API 接口进行排序,设置使用优先级。下方副选项 ES3.1、ES3.1+AEP、ES3.2 用于配置最低 OpenGL ES 3.X 次要版本(Require ES3.1: 要求使用 ES3.1;Require ES3.1 + AEP: 要求使用 ES3.1 + AEP;Require ES3.2: 要求使用 ES3.2)。只有当 GLES2 不在列表中时,Unity 才会将额外的三个选项要求添加到 Android 应用清单中,若发布到 Google Play 应用商店,不受支持设备不会显示该应用
Color Gamut(色域)添加或删除 Android 平台用于渲染的色域,色域定义设备可显示的颜色范围1. sRGB:默认且必需的色域,一般手机使用此色域即可
2. DisplayP3:当定位具有宽色域显示的设备(如 PC 主机游戏)时,可利用完整显示功能
Multithreaded Rendering(多线程渲染)将图形 API 调用从 Unity 的主线程移动到单独的工作线程,提升主线程 CPU 使用率较高的应用程序性能启用此选项可实现;不启用则不进行此操作
Static Batching(静态批处理)将静态物体合并处理 DC,提升性能启用可实现合并处理;不启用则不进行此操作
Dynamic Batching(动态批处理)动态合并 DC 提高性能,可编程渲染管线(SPR)处于活动状态(启用 URP 或 HDRP)时不起作用,使用 FairyGUI 时需开启以优化 DC启用可实现动态合并;不启用则不进行此操作,且在特定情况(启用 URP 或 HDRP)下无法使用
Compute Skinning(计算蒙皮)启用 DX11/ES3 GPU 计算蒙皮,释放 CPU 资源,对图形接口版本要求较高(PC 上 DX11、移动设备 ES3)启用可启用计算蒙皮;不启用则不进行此操作
Graphics Jobs (Experimental)(图形作业)启用后将渲染循环的图形任务移到其它 CPU 内核上运行的工作线程,减少主线程时间启用可实现任务转移;不启用则不进行此操作
Texture Compression Format(纹理压缩格式)可在 ASTC、ETC2、ETC 之间选择纹理压缩格式可选择 ASTC、ETC2、ETC 其中一种格式
Normal Map Encoding(法线地图编码)选择 XYZ 或 DXT5nm 样式设置法线映射编码,影响法线贴图的编码方案和压缩格式1. 选择 XYZ 样式
2. 选择 DXT5nm 样式:法线贴图质量更高,但在着色器中解码成本更高
Lightmap Encoding(光照贴图编码)选择“正常质量”或“高质量”设置光照贴图编码,影响光照贴图的编码方案和压缩格式1. 选择“正常质量”
2. 选择“高质量”
Lightmap Streaming(光照贴图流)是否对光照贴图使用 Mipmap 流式处理选择启用则使用;选择不启用则不使用
Streaming Priority(流优先级)设置 Mipmap 流式处理系统中所有光照贴图的优先级,生成光照贴图时应用于所有光照贴图,正数表示更高优先级,范围为 –128 到 127可设置具体数值(在 –128 到 127 之间的整数)
Frame Timing Stats(帧时序统计)启用可收集 CPU 和 GPU 帧时间统计信息,需和摄像机上的动态分辨率设置(Camera 组件下的 Allow Dynamic Resolution 选项)结合使用,确定应用程序受 CPU 还是 GPU 限制启用可收集统计信息;不启用则不收集
OpenGL: Profiler GPU Recorders是否启用 OpenGL 的探查 GPU 记录器,在 OpenGL 上,探查 GPU 记录器会禁用 GPU 探查器启用则开启记录器并禁用 GPU 探查器;不启用则不开启记录器
Virtual Texturing(虚拟纹理)在场景有很多高分辨率纹理时减少 GPU 内存使用量和纹理加载时间,将纹理拆分为瓦片,按需上传到 GPU 内存,不兼容安卓设备启用可实现虚拟纹理功能;不启用则不进行此操作,且因不兼容安卓设备,安卓平台无法使用
Shader Precision Model(着色器精度模型)控制着色器中使用的采样器的默认精度-
360 Stereo Capture(360 度立体捕捉)Unity 是否可以捕获立体 360 度全景图像和视频,不兼容 Android启用则可进行捕捉操作;不启用则不进行此操作,且因不兼容 Android,安卓平台无法使用

4.OtherSettings-Vulkan设置和身份证明

设置项分类描述可选值及说明
SRGB Write Mode(SRGB 写入模式)Vulkan设置允许呈现器在运行时切换 sRGB 写入模式,可暂时关闭线性到 sRGB 写入颜色转换1. 启用:可切换 sRGB 写入模式,但不建议移动设备启用,会增加 GPU 负担
2. 不启用:保持默认的 sRGB 写入模式
Number of swapchain buffers(交换链缓冲区数量)Vulkan设置设置交换链缓冲区数量,与Vulkan渲染器配合使用,可解决移动平台延迟问题1. 设为 2:双缓冲
2. 设为 3:三重缓冲,一般保持为 3,不建议安卓设备使用双缓冲,会产生负面影响
Acquire swapchain image late as possible(尽可能晚的获取交换链图像)Vulkan设置启用后,Vulkan 延迟获取后缓冲器,直到将帧渲染为屏幕外图像,与双缓冲结合可提高性能,但额外的 blit 会占用带宽1. 启用:延迟获取后缓冲器,可能提高性能但有带宽占用风险,不建议安卓设备修改
2. 不启用:按常规方式获取后缓冲器
Recycle command buffers(回收命令缓冲区)Vulkan设置决定 Unity 执行命令缓冲区后是回收还是释放命令缓冲区1. 回收:执行后回收命令缓冲区
2. 释放:执行后释放命令缓冲区
Apply display rotation during rendering(在渲染期间应用显示旋转)Vulkan设置启用可在显示的本机方向上执行所有渲染,有性能优势但有使用限制1. 启用:在本机方向渲染,有性能优势但有使用限制,不建议修改
2. 不启用:按常规方式渲染
Override Default Package Name(是否覆盖默认包名称)身份证明用于在公司名和游戏名不是英文时,自行设置包名1. 勾选:可自行设置包名
2. 不勾选:使用默认包名
Package Name(软件包名)身份证明应用程序的 ID,用于在设备和安卓应用商店中唯一标识应用格式为 com.公司名.产品名,只能包含字母数字和下划线,每段都必须以字母开头
Version(版本号)身份证明标识应用程序包的迭代格式为数字.数字.数字……,如 1.0、4.3.2、1.2.1 等
Bundle Version Code(内部版本号)身份证明用于确定版本新旧,数字越大版本越新,不显示给用户为整数,每次发布新版本可让数字加一
Minimum API Level(最低API级别)身份证明决定应用程序运行所需的最低 API 级别,SDK 版本低于该设置的设备无法安装应用设置具体的 API 级别,如 Android 系统的 API 版本号
Target API Level(目标API级别)身份证明指定应用的目标 API 级别,通知 Android 系统已针对目标版本测试,应用也可在较低版本运行(取决于 Minimum API Level)设置具体的 API 级别,如 Android 系统的 API 版本号

5.OtherSettings-配置(Configuration)

设置项描述可选值及说明
Scripting Backend(脚本后端)决定Unity如何在项目中编译和执行C#代码1. Mono:将C#编译为.Net公共中间语言CIL,并使用公共语言运行时执行中间语言
2. IL2CPP:将C#编译为CIL,再将CIL转换为C++,最后将C++编译为本机代码
Api Compatibility Level(API兼容性级别)决定可以在项目中使用的.Net API,影响代码和第三方库的兼容性1…Net Standard 2.1:和.Net Standard 2.1兼容,生成较小版本,具有完整跨平台支持
2…Net Framework:和.Net Framework兼容(包含.Net Standard 2.1所有内容),包含更多API支持,但生成包更大。使用C#高级功能报错时可尝试切换,有替代方案时建议用.Net Standard 2.1以减小包体
C++ Compiler Configuration(C++编译器配置)只有将Scripting Backend设置为IL2CPP才能使用该选项1. Debug(调试模式):关闭所有优化,代码生成速度快但运行慢,用于调试
2. Release(发布模式):对代码进行优化,编译后代码运行快、二进制文件小,但编译时间长
3. Master(大师模式):实现所有可能的优化,发布时间比发布模式长,发布最终版本时可使用
Use incremental GC(使用增量GC)启用后可使用增量垃圾回收器,将GC分散到多个帧上执行,降低一帧中GC造成的卡顿启用或不启用
Assembly Version Validation(程序集版本验证)Mono是否验证强名称程序集中的类型,强名称程序集为程序集创建唯一标识,防止程序集冲突验证或不验证
Mute Other Audio Sources(将其它音频源静音)希望在运行Unity应用程序时停止后台运行应用程序中的音频,可启用该选项,否则后台音频和Unity音频一起播放启用或不启用
Target Architectures(目标体系结构)允许应用程序运行的CPU,64位环境运行安卓应用有性能优势,64位应用可处理超4GB内存空间,Mono模式只能选ARMv7,IL2CPP模式可选更多1. ARMv7:32位的ARM
2. ARM64:64位的ARM
3. x86(Chrome OS):32位
4. x86-64(Chrome OS):64位
Split APKs by target architecture(按目标架构拆分APK)启用后,为目标体系结构中选择的每个CPU架构创建单独的APK,在Google Play中根据设备情况下载对应版本APK,可减小apk大小,但主要针对Google Play,国内产品几乎不使用启用或不启用
Target Devices(目标设备)指定允许运行APK的目标设备1. All Devices(所有设备):允许apk在所有Android和Chrome OS设备上运行
2. Phones,Tablets,and TV Devices Only(手机、平板、电视设备):允许apk在Android手机、平板电脑、电视上运行,不能在Chrome OS设备上运行
3. Chrome OS Devices Only(Chrome OS设备):允许apk在Chrome OS设备上运行,不能在Android手机、平板、电视上运行
Install Location(安装位置)指定设备上应用程序的安装位置1. Automatic(自动):由操作系统决定,用户可移动安装位置
2. Prefer External(首选外部):先尝试安装到外部存储(SD卡),不行则安装到手机存储空间
3. Force Internal(强制内部):安装到手机存储空间,用户无法移动到外部存储安装
Internet Access(互联网接入)选择是否始终将网络权限添加到Android清单(即使未使用任何网路API)1. Auto:仅当使用网络API时添加互联网访问权限
2. Require:始终添加互联网访问权限
Write Permission(写入权限)是否启用对外部存储(SD卡)的写入访问权限,并向Android应用清单添加相应权限1. Internal(内部):仅授予对内部存储的写入权限
2. External(外置SD卡):启用对外部存储的写入权限
Filter Touches When Obscured(遮挡时过滤触摸)启用后丢弃在另一个可见窗口覆盖Unity应用程序时收到的触摸(触屏事件),防止窃听劫持启用或不启用
Sustained Performance Mode(持续性能模式)启用此选项可在较长时间段内设置可预测且一致的设备性能级别,无需热限制,但整体性能可能降低启用或不启用
Low Accuracy Location(低精度定位)启用后改为低精度值与Android位置API配合使用启用或不启用
Chrome OS Input Emulation(Chrome OS输入仿真)Chrome OS操作系统默认将鼠标和触摸板输入事件转为触屏输入事件,取消可禁用此默认行为启用或不启用
Android TV Compatibility(安卓电视兼容性)启用后应用程序标记为兼容Android TV启用或不启用
Android Game(安卓游戏)启用后将输出的apk标记为游戏而非常规应用启用或不启用
Android Gamepad Support Level(安卓游戏输入板支持等级)选择玩游戏时支持的输入方式可根据需求选择相应等级
Warn about App Bundle size(警告应用程序包的大小)只有在Build Settings中勾选了Build App Bundle(Google Play)才有用,应用程序包大小超过阈值时收到警告可设置具体的阈值大小
Active Input Handling(活动输入处理)选择处理来自用户输入的方式1. Input Manager:老的输入系统,Input相关
2. Input System Package:新输入系统
3. Both:同时使用,在Unity进阶之InputSystem中有详细讲解

6.OtherSettings-ScriptCompilation

设置项分类描述可选值及说明
Scripting Define Symbols(脚本定义符号)脚本编译设置自定义编译标志,使用第三方内容时可能在此添加脚本符号,Unity 有内置脚本符号,可配合多路测试 #if 使用,也可自定义可添加自定义脚本符号,利用内置脚本符号(如 Lua 热更相关、FairyGUI 相关等),通过 #if#elif#else#endif 控制代码逻辑
Additional Compiler Arguments(其它编译器参数)脚本编译向此列表添加条目以将其他参数传递给 Roslyn 编译器1. 按“+”按钮创建新条目添加参数
2. 按“-”按钮删除条目
3. 单击“应用”按钮在将来编译中包括其他参数
4. 单击“还原”按钮将列表重置为最近应用的状态
Suppress Common Warnings(禁止显示常见警告)脚本编译禁用此设置可显示 C# 警告1. 启用:禁止显示常见 C# 警告,如 CS0169(从不使用私有字段)、CS0649(未初始化的私有或内部字段声明)
2. 禁用:显示 C# 警告
Allow ‘unsafe’ Code(允许使用“不安全”代码)脚本编译启用对在预定义程序集中编译“unsafe”C# 代码的支持1. 启用:支持编译“unsafe”C# 代码,使用指针等操作需勾选此项
2. 不启用:不支持编译“unsafe”C# 代码
Use Deterministic Compilation(使用确定性编译)脚本编译启用此设置后,编译的程序集在每次编译时都是完全相同的,可用于确定二进制文件是否从受信任的源编译1. 启用:使用确定性编译,编译的程序集每次相同
2. 禁用:防止使用 -确定性 C# 标志进行编译
Enable Roslyn Analyzers(启用罗斯林分析器)脚本编译禁用此设置可编译用户编写的脚本,而无需项目中可能存在的 Roslyn 分析器 DLL(Roslyn 是微软的.Net 开源编译器,提供丰富的代码分析 API)1. 启用:使用 Roslyn 分析器分析脚本
2. 禁用:不使用 Roslyn 分析器,直接编译用户编写的脚本
unsafe 关键词(基本概念)C# 语言特性默认 C# 不支持指针,unsafe 关键词用于表示不安全的上下文,在 C# 中进行指针相关操作必须使用该关键词,不安全代码在 CLR 中是指无法验证的代码,但不一定危险,使用时需确保无安全风险和指针错误在 C# 中使用指针等操作需使用 unsafe 关键词,代码在 CLR 中无法验证安全性,仅在完全信任的程序集中执行不安全代码
unsafe 关键词(基本使用)C# 语言特性在 Unity 中正常使用 unsafe 关键词编写程序,需在 Unity 的 Player Settings 中的 Other Settings 中将 Allow ‘unsafe’ Code 选项勾选上,可用于修饰函数、代码块、成员变量、类1. 勾选 Allow ‘unsafe’ Code 选项后可使用 unsafe 关键词
2. 可修饰函数、代码块、成员变量、类
unsafe 关键词(总结)C# 语言特性unsafe 的使用能让在 C# 中使用指针,但存在安全风险和稳定性风险,无特殊需求尽量避免使用尽量避免在 C# 中使用 unsafe 关键词,以减少安全和稳定性风险

7.OtherSettings-优化和堆栈跟踪

设置项分类描述可选值及说明
Prebake Collision Meshes(预烘焙碰撞到网格)优化在构建时将碰撞数据添加到网格启用:在构建时添加碰撞数据到网格
不启用:不进行此操作
Keep Loaded Shaders Alive(保持加载的着色器的活动状态)优化启动后,着色器不能卸载,避免卸载后重复加载造成性能开销和卡顿启用:不能卸载着色器
不启用:可以卸载着色器
Preloaded Assets(预装资源)优化设置启动时加载的资源数组,将想要预加载的内容拖入框中可将需要预加载的资源拖入设置框中
Strip Engine Code(剥离引擎代码)优化选择IL2CPP模式才会出现的字段,启用可删除Unity引擎功能中没有使用的代码,减小包体大小启用:删除未使用的引擎代码,减小包体
不启用:不进行代码剥离
Managed Stripping Level(管理剥离水平)优化选择Unity如何剥离未使用的C#代码,发布时自动去除未使用代码,可能意外删除需要的代码1. Disabled:不剥离,只有在Mono模式下才能选择
2. Minimal:最小剥离,Unity 只会搜索Unity引擎未使用的.Net类库,不删除用户编写代码,IL2CPP模式下默认
3. Low:低级剥离,处理Unity相关,玩家自己编写的代码也会被剥离,尽量减小意外剥离
4. Medium:中级剥离,比Low更多一些剥离
5. High:高级剥离,优先考虑打包大小,最大限度剥离代码,可配合link.xml手动拒绝剥离,或使用[Preserve]特性(在不希望被剥离的函数前加该特性)
Enable Internal Profiler(启用内部探查器)优化已弃用的功能,用于从Android SDK的设备中获取profiler数据adblogcat测试项目时输出,仅在开发版本中可用该功能已弃用
Vertex Compression(顶点压缩)优化选择要设置的通道,以便在顶点压缩方法下压缩网格,减少内存中网格数据的大小,提高CPU性能选择相应的通道进行顶点压缩设置
Optimize Mesh Data(优化网格数据)优化启用后,构建时会从使用的网格中剥离未使用的顶点属性,减少网格数量,减小包体大小,减小加载时间和运行时内存使用,但运行时不能更改材质或着色器相关设置启用:构建时剥离未使用的顶点属性
不启用:不进行此操作,运行时可自由更改材质或着色器设置
Texture MipMap Stripping(贴图纹理剥离)优化启用后会启用纹理贴图剥离,在构建时会从纹理中剥离没有使用的纹理贴图,根据发布平台的质量设置确定哪些贴图用不到,mipmap生成的多分辨率图也会被剥离启用:进行纹理贴图剥离
不启用:不进行此操作
StackTrace(堆栈跟踪)优化选择在特定的上下文中允许的日志记录类型和日志记录的方式日志记录类型:
1. Error:错误信息
2. Assert:断言(用于检测非法情况的)信息
3. Warning:警告信息
4. Log:打印日志信息
5. Exception:异常信息
日志记录方式:
1. None:不记录
2. ScriptOnly:只在运行脚本时记录信息
3. Full:一直记录
Clamp BlendShapes(Deprecated)(钳制混合形状权重的范围)优化启用骨骼蒙皮动画中钳制混合形状权重的范围,已弃用该功能已弃用

8.PublishingSettings-KeystoreManager

设置项分类描述可选值及说明
Android 中的签名发布设置准备知识Android 要求所有已安装应用程序使用数字证书做数字签名,数字证书私钥由开发者持有,用于标示应用程序作者并建立信任关系,证书可自制,未正确签名应用无法安装或运行数字证书私钥由开发者持有,可使用自制签名证书,无正确签名应用在 Android 系统(模拟器或真实设备)无法安装运行
Android 应用程序清单(AndroidManifest.xml)发布设置准备知识Android 应用程序工程中的 xml 文件,用于声明应用程序组件,确定用户权限、最低 API 级别,声明硬件和软件特性等,引入 Android 第三方 SDK 或与 Android 交互时需编辑,无需求可忽略声明应用程序组件、确定用户权限(如网络、通讯录、信息读取等)、声明最低 API 级别、声明硬件和软件特性(如摄像头、蓝牙、多点触碰等)
Gradle发布设置准备知识一个自动化构建开源工具,基于 JVM,主要面向 Java 应用,也支持其他语言,可用于 Android 项目构建,使项目更简洁,在 Unity 中用于打包安卓应用程序,Android Studio 也使用它打包基于 JVM 的自动化构建工具,用于 Android 项目构建,帮助打包安卓应用程序
ProGuard发布设置准备知识一个压缩、优化和混淆 Java 字节码文件的免费工具,可删除无用内容、优化字节码、重命名类等,常用于 Android 开发混淆项目,增加反编译难度,Unity 发布安卓应用默认使用压缩、优化和混淆 Java 字节码文件,删除无用类、字段、方法和属性,删除注释,重命名类、字段等
R8发布设置准备知识相对 ProGuard 较新的 Android 混淆编译器,可减小应用大小,Android Gradle 3.4.0 或更高版本构建项目不再使用 ProGuard 优化,Android Sutdio 3.3 版本开始用它做代码压缩器,比 ProGuard 缩减代码更快、输出大小更优,Unity 发布安卓应用可选择使用较新的 Android 混淆编译器,减小应用大小,在特定版本 Android 构建项目中替代 ProGuard,缩减代码更快、输出更优
密钥管理器发布设置可通过密钥管理器创建、配置和加载密钥和密钥库,可在 Keystore Manager 窗口或 Publishing Settings 发布设置中加载现有密钥库和密钥-
下拉菜单(密钥管理器)发布设置在该下拉菜单选择创建新的密钥库或加载现有的密钥库1. Create New:创建新的密钥库
- Anywhere:打开项目文件夹根目录下的文件资源管理器,是 Unity 存储密钥库的默认位置
- In Dedicated Location:将密钥库文件保存到计算机中的另一个目录中,为协同开发方便,建议保存在项目文件夹下
2. Select Existing:选择现有密钥库,可指定加载现有密钥库
Password(密钥库的密码)发布设置密钥库的密码设置密钥库密码
Confirm password(创建密钥库时需要重复一次密码)发布设置创建密钥库时重复输入密码以确认重复输入密码与 Password 一致
Existing Keys(现有密钥)发布设置界面中包含当前密钥库包含的密钥的只读列表显示当前密钥库中密钥的只读信息
New Key Values(新键值)发布设置可在此处在密钥库中添加密钥1. Alias:密钥的标识名字,一般分不同厂商,如 huawei、xiaomi
2. Password:密钥的密码
3. Confirm password:密钥的确认密码,必须和密码相同
4. Validity(years):有效期(年),默认有效期为 50 年,一般设置较大值,可理解为管理应用程序的有效时间
5. First and Last Name:名字和姓氏
6. Organizational Unit:所在企业中的部门
7. Organization:组织,管理应用程序的组织,一般为公司名
8. City Or Locality:个人所在的城市或地区
9. State or Province:个人所在的州或省
10. Country Code(XX):个人的国家代码,中国的国家代码为 86

9.PublishingSettings-其他

项目密钥库
项目密钥库是用来保存签名密钥,以保障应用程序安全性的容器。若要加载并使用现有的密钥库,需进行以下操作:

  1. 启动 Custom Keystore。
  2. 在 Select 下拉列表里选 Browse,从文件系统挑选密钥库。
  3. 输入密钥库密码。

相关设置说明

设置项描述
Custom Keystore启用后,能够指定加载和使用现有的密钥库
Select启用 Custom Keystore 后,可通过此按钮选择要使用的密钥库
Path显示所选密钥库所在的路径
Password输入用于加载所选密钥库的密码
Project Key加载密钥库后,Unity 会加载库中的全部密钥。可在此设置从该密钥库中选择哪一个密钥作为项目的活动密钥
Alias选择用于打开项目的密钥
Password(项目密钥密码)输入所选密钥的密码

构建相关
默认情况下,Unity 采用安装时提供的清单文件、Gradle 模板和文件来构建应用程序。若要进行自定义,需启用 Build 下方的复选框,此时文件会出现在复选框下方,接着打开新文件进行修改,保存修改后的文件,Unity 下次构建应用程序时就会自动使用这些文件。

设置项描述
Custom Main Manifest这是一个 xml 文件,可在此决定权限设置,还能设置是否启用某些安卓功能等
Custom Launcher Manifest同样是 xml 文件,可在此决定应用程序启动前的外观和行为
Custom Main Gradle TemplateGradle 是一个构建系统,能自动执行许多构建过程并避免常见的构建错误,Unity 对所有 Android 版本都使用 Gradle
Custom Launcher Gradle Template这是一个 gradle 文件,包含了构建 Android 应用程序的相关说明
Custom Base Gradle Template是一个 gradle 文件,包含了所有其他模板和 Gradle 项目间的共享配置
Custom Gradle Properties Template属于属性文件,包含了 Gradle 生成环境的配置设置
Custom Proguard File是一个 txt 文件,包含了缩小过程的配置设置

代码混淆和缩小相关
Minify 是对应用程序代码进行缩减、混淆和优化的过程,能减小代码大小并增加反编译难度。使用 Minify 设置可确定 Unity 何时以及如何将缩小应用于构建。不过使用该功能会延长发布时间,还会使调试变得复杂,所以通常在最终发布时才使用,平时发布测试应用时无需开启。

设置项描述
Use R8默认情况下,Unity 使用 Proguard 进行缩小。启用此复选框可改用 R8
Release若希望 Unity 在发布构建时缩小应用程序的代码,需启用此复选框
Debug若希望 Unity 在调试构建时缩小应用程序的代码,需启用此复选框

拆分应用程序二进制文件
启用 Split Application Binary 选项,可将输出包拆分为主包 (APK) 和扩展包 (OBB) 包。若要发布大于 100 MB 的应用程序,Google Play 应用商店要求使用此功能。

三、交互项目创建

1.Unity调用安卓

操作类型方法调用格式描述
成员变量获取androidJavaObject.Get<变量类型>("变量名")用于获取 Android Java 对象的成员变量
成员变量赋值androidJavaObject.Set<变量类型>("变量名", 值)用于给 Android Java 对象的成员变量赋值
静态变量获取androidJavaObject.GetStatic<变量类型>("变量名")用于获取 Android Java 对象的静态变量
静态变量赋值androidJavaObject.SetStatic<变量类型>("变量名", 值)用于给 Android Java 对象的静态变量赋值
无返回值成员函数调用androidJavaObject.Call("函数名", 参数)调用 Android Java 对象的无返回值成员函数
有返回值成员函数调用androidJavaObject.Call<返回值类型>("函数名", 参数)调用 Android Java 对象的有返回值成员函数
无返回值静态函数调用androidJavaObject.CallStatic("函数名", 参数)调用 Android Java 对象的无返回值静态函数
有返回值静态函数调用androidJavaObject.CallStatic<返回值类型>("函数名", 参数)调用 Android Java 对象的有返回值静态函数

代码示例

androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");androidJavaObject = androidJavaClass.GetStatic<AndroidJavaObject>("currentActivity");btnOpenAndroidActivity.onClick.AddListener((() =>{androidJavaObject.Call("OpenActivity");}));

2.安卓调用Unity

Android调用Unity规则

  • 需要写在继承MonoBehaviour的脚本中。
  • 需要挂载在场景中处于激活状态的GameObject上。
  • 交互时,在Android端调用API:

调用方法UnityPlayer.UnitySendMessage("对象名", "函数名", "参数信息")
注意:该API中的参数只能是String类型或者为null

3.Android开发的必备原理

(1)Android应用程序的基本构成
Android SDK:为开发Android应用程序提供了各种各样的API和工具,是进行Android开发的基础支撑,它包含了丰富的开发资源。
编程语言:主要使用Java或者Kotlin语言进行开发,这两种语言都提供了大量丰富的库和API,开发者可以利用这些来实现应用的各种功能。
XML配置文件:在Android应用程序中,XML用于定义UI布局、样式以及资源信息等。它承担着界面和资源相关的配置工作,使得开发者能够设计出不同的用户界面。

  • 应用程序组件:Android应用程序由以下四种组件组成:
    • Activity(活动):主要用于实现用户界面,代表着一个屏幕或窗口,其中包含了各种UI组件,如按钮、文本、输入框等,是用户与应用进行交互的主要界面载体。
    • Service(服务):是一种可以在后台执行长时间运行操作的组件,没有用户界面,通常用于处理和交互无关的逻辑,例如上传、下载、音乐播放等后台任务。
    • Broadcast Receiver(广播接收器):主要负责接收系统或者其他应用程序发出的广播消息。这些消息可以来自系统事件,比如网络连接变化、设备启动等,也可以来自其它应用程序。
    • Content Provider(内容提供程序):用于管理应用程序数据,既可以让其它应用程序或系统访问本应用中的数据,也能让本应用访问其它应用或系统的数据,例如用于存储应用程序的图片、音频、视频等数据。

在开发Android应用程序时,主要是编写基于这四种组件的逻辑。日常开发中,更多的是利用Android SDK中的API开发Activity活动组件,类似于游戏中UI界面逻辑开发。只有在有其他后台或者拓展功能需求时,才会使用其它三种组件。

(2)AndroidManifest.xml文件的作用
AndroidManifest.xml是Android应用程序的应用清单文件,每个应用程序都必须包含一个,并且文件名必须是AndroidManifest.xml。该文件中包含了应用程序的配置信息,Android系统会根据这些配置来运行应用程序。

以下是该文件中包含的重要信息:
应用程序组件信息:包含应用程序的四大组件(Activity、Service、Broadcast Receiver、Content Provider)的相关内容。
应用程序权限:如存储权限、互联网访问权限等等,通过这些权限声明,应用才能在系统中获得相应的操作许可。
应用程序元数据:包括程序名称、版本号、图标、包名等等,这些信息用于标识和描述应用程序。
应用程序启动信息:指定默认启动哪一个Activity,决定了应用启动时呈现给用户的第一个界面。

(3)常用标签作用
manifest标签:作为文件的根标签,主要包含包名、版本号等信息,是整个应用配置的基础。
uses-permission标签:用于声明应用程序所需的权限,例如存储权限、网络访问权限等,明确应用在系统中可以执行的操作。
application标签:应用程序的各组件都包含在其中,并且还可以配置一些图标、文本、样式等信息,是应用组件的容器。
activity标签:用于描述Activity组件的具体信息,包括其属性和相关配置。
meta-data标签:为Activity提供元数据,这些数据可以通过API获取,为Activity添加额外的信息。
intent-filter标签:为组件声明意图(intent),其中包含action(意图类型)和category(意图类别)两个子标签,用于定义组件的意图匹配规则,决定组件在何种情况下被激活。

4.交互项目创建

  1. Unity项目:创建项目后切换到Android平台,设置包名和Android版本。

  2. Android Studio项目:选择Phone and Tablet,创建Empty Activity项目。确保包名和Minimum SDK版本与Unity项目一致,若版本缺失,在Android Studio中下载。创建完成后,删除工程里两个Test项目和res下的无用资源。

  3. build.gradle文件:在Android Studio的Project页签切换到Project视图,展开app页签,打开build.gradle文件。将 id 'com.android.application' 改为 id 'com.android.library',删除 defaultConfig 中的 applicationId 项,点击右上角“Sync Now”同步。

  4. 导入classes.jar包:从 Unity安装目录\Data\PlaybackEngines\AndroidPlayer\Variations\mono(il2cpp)\Release\Classes 路径拷贝包到Android Studio的 app\libs 下,选中包右键点击“Add As Library”。

  5. 导入UnityPlayerActivity脚本:将 Unity安装目录/Data/PlaybackEngines/AndroidPlayer/Source/… 路径下的文件夹拷贝到Android Studio的 app/src/main/java 中。

  6. 修改MainActivity脚本:让其继承 UnityPlayerActivity,注释 onCreate 函数里的 setContentView 代码。
    在这里插入图片描述

  7. 修改AndroidManifest.xml配置文件:删除 application 中的无用内容,在 activity 里添加 <meta-data android:name="unityplayer.UnityActivity" android:value="true"/>
    在这里插入图片描述

8.选中 MainActivity 脚本,通过工具栏“Build” -> “Make Moudle …” 生成Unity用的aar包。若打包时出现下载提示,等待下载完成即可构建成功。
9.将生成的aar包导入Unity。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低配电脑畅玩《怪物猎人:荒野》,ToDesk云电脑优化从30帧到144帧?

《怪物猎人&#xff1a;荒野&#xff08;Monster Hunter Wilds&#xff09;》自2025年正式发售以来已取得相当亮眼的成绩&#xff0c;仅用三天时间便轻松突破800万销量&#xff0c;目前顺利蝉联周榜冠军&#xff1b;凭借着开放世界的宏大场景和丰富的狩猎玩法&#xff0c;该游戏…

Flink基础简介和安装部署

文章目录 一、Flink基础简介1、什么是Flink2、Flink流处理特性3、Flink四大基石4、Flink中的角色 二、Flink集群搭建1、Local模式①上传Flink安装包②启动交互窗口③提交任务测试④访问WebUI页面查看④退出停止集群 一、Flink基础简介 1、什么是Flink Flink是⼀个分布式&#…

【2025】基于ssm+jsp的二手商城系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于SSMJSP的二手商城系统设计与实现系统功能结构图&#xff1a; 课题背景 随着经济的发展和人们生活水平的提高&#xff0c;二手交易市场日益活跃。人们对于闲置物品的处理方式逐渐从传统的废品回收转变为通过二手交易平台进行再利用。这种交易模式不仅能够帮助用户节省开支&a…

幻影星空亮相CAAPA北京展 引领文旅产业升级转型

3月19日&#xff0c;中国游艺机游乐园协会&#xff08;CAAPA&#xff09;主办的2025中国&#xff08;北京&#xff09;国际游乐设施设备博览会及2025北京国际旅游休闲娱乐产业博览会在北京盛大启幕。在这场行业盛会上&#xff0c;广州卓远旗下的“幻影星空”品牌以创新性的虚拟…

银河麒麟桌面版包管理器(二)

以下内容摘自《银河麒麟操作系统进阶应用》一书 APT包管理器 APT是Debian及其派生系统的包管理器&#xff0c;构建在dpkg之上&#xff0c;以其强大的依赖性处理能力和丰富的软件仓库而闻名。APT具有自动解决依赖关系、提供易于使用的命令行工具&#xff08;如apt-get、apt-ca…

Xcode16.1使用MonkeyDev运行Tiktok报错分析

问题1&#xff1a; Build input files cannot be found: /usr/lib/libc.dylib, /usr/lib/libstdc.dylib. Did you forget to declare these files as outputs of any script phases or custom build rules which produce them? 解决办法&#xff1a;在TARGETS的dylib中的Bui…

手机怎么换网络IP有什么用?操作指南与场景应用‌

在数字化时代&#xff0c;手机已经成为我们日常生活中不可或缺的一部分&#xff0c;无论是工作、学习还是娱乐&#xff0c;手机都扮演着至关重要的角色。而在手机的使用过程中&#xff0c;网络IP地址作为设备在互联网上的唯一标识符&#xff0c;其重要性和作用不容忽视。本文将…

CH32V208GBU6沁恒协议栈BUG:在主机Write的同一包notify会造成主机一直Write不成功

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

unsloth微调QwQ32B(4bit)

unsloth微调QwQ32B(4bit) GPU: 3090 24G unsloth安装部署 pip 安装 pip install unsloth --index https://pypi.mirrors.usrc.edu.cn/simplesource /etc/network_turbopip install --force-reinstall --no-cache-dir --no-deps githttps://github.com/unslothai/unsloth.git​…

Dify 0.15.3 输入变量无法被重新赋值问题-解决方法

目录 一、问题描述 二、解决方法 2.1 原因 2.2 修改源码 2.3 重新打包 dify-api 镜像 2.4 修改 docker-compose.yaml 文件 2.5 重启启动镜像 一、问题描述 Dify 0.15.3 是一个比较稳定的版本&#xff0c;Dify 1.0 是一个大版本更新&#xff0c;目前还有很多 Bug。但是&a…

SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)

7.3. 查询计划相关操作符 98&#xff09;Table Scan&#xff1a;该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词&#xff0c;则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…

数据库练习2

目录 1.向heros表中新增一列信息&#xff0c;添加一些约束&#xff0c;并尝试查询一些信息 2.课堂代码练习 插入语句 INSERT INTO 删除语句DELETE和TRUNCATE 更新语句UPDATE和replace 查询语句SELECT 条件查询 select语句中的特殊情况 ​​​查询排序 order by 分组查询…

资金管理策略思路

详细描述了完整交易策略的实现细节&#xff0c;主要包括输入参数、变量定义、趋势判断、入场与出场条件、止损与止盈设置等多个方面。 输入参数&#xff08;Input&#xff09;&#xff1a; EntryFrL (.6)&#xff1a;多头入场的前一日波动范围的倍数。 EntryFrS (.3)&#xff1…

数据模型,数据建模,组件,核心价值,使用,意义

数据模型 一组由符号,文本组成的集合, 用以准确表达信息景观, 达到有效交流,沟通的目的 数据建模 是发现,分析和确定数据需求的过程,是一种称为数据模型的精确形式表示和传递这些需求 数据模型的组件 实体, 关系, 属性和域 数据模型的核心价值 交流性 精确性 数据模型的…

解锁云原生后端开发新姿势:腾讯云大模型API实战攻略

目录 云原生后端与大模型融合的开篇之章​ 探秘云原生后端开发​ 云原生后端是什么​ 云原生后端架构核心要素​ 微服务架构​ 容器化技术​ 服务发现与配置管理​ Kubernetes 编排​ 走进腾讯云大模型知识引擎​ 引擎独特功能与优势​ DeepSeek - R1、V3 两款模型 …

【拒绝算法PUA】LeetCode 2116. 判断一个括号字符串是否有效

目录 系列文章目录 专题总结&#xff1a; C刷题技巧总结&#xff1a; 题目 2116. 判断一个括号字符串是否有效 难度 描述 解题方法1 系列文章目录 专题总结&#xff1a; 【拒绝算法PUA】0x00-位运算【拒绝算法PUA】0x01- 区间比较技巧【拒绝算法PUA】0x02- 区间合并技…

常见中间件漏洞攻略-Tomcat篇

一、 CVE-2017-12615-Tomcat put方法任意文件写入漏洞 第一步&#xff1a;开启靶场 第二步&#xff1a;在首页抓取数据包&#xff0c;并发送到重放器 第三步&#xff1a;先上传尝试一个1.txt进行测试 第四步&#xff1a;上传后门程序 第五步&#xff1a;使用哥斯拉连接 二、后…

【nodejs】爬虫路漫漫,关于nodejs的基操

一.下载安装nodejs 官网地址&#xff1a;Node.js — 在任何地方运行 JavaScript 二.下载安装vscode代码编辑器 官网地址&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 三.修改本地脚本策略 1&#xff0c;windowsi 打开电脑设置 2&#xff0c;输入powersh…

Java EE(16)——网络原理——TCP协议解析二

4.滑动窗口(效率机制) 上篇博客讲到的确认应答/超时重传/连接管理都是安全机制&#xff0c;但也会降低传输效率。滑动窗口就是在保证可靠传输的基础上&#xff0c;尽可能地提高传输效率。 根据确认应答机制&#xff0c;客户端每发送一个请求都需要收到服务器的确认应答报文后才…

从入门到精通【MySQL】 CRUD

文章目录 &#x1f4d5;1. Create 新增✏️1.1 单行数据全列插入✏️1.2 单行数据指定列插入✏️1.3 多行数据指定列插入 &#x1f4d5;2. Retrieve 检索✏️2.1 全列查询✏️2.2 指定列查询✏️2.3 查询字段为表达式✏️2.4 为查询结果指定别名✏️2.5 结果去重查询 &#x1f…