Unity安装包瘦身实战:从2.3GB到680MB的工程化治理

news2026/5/24 2:14:44
1. 为什么一个500MB的Unity项目打包后会变成3GB——安装包膨胀的真实逻辑“Unity安装包减肥”这六个字听起来像在给软件做瑜伽但实际是每个上线前夜都在咬牙硬扛的生存战。我做过7个已上线的Unity手游项目最深的体会是安装包大小不是编译器决定的而是团队日常开发习惯堆出来的结果。不是你没压缩纹理而是美术导出PNG时默认勾了“保留图层”不是你没删脚本而是某次热更留下的旧AssetBundle文件夹还躺在StreamingAssets里连名字都改成了“old_ab_v2_backup_just_in_case”不是你没关调试符号而是Player Settings里那个不起眼的“Development Build”开关在提审前最后一刻才被发现开着——它会让所有原生库附带完整的调试信息单是libil2cpp.so就能多出80MB。关键词“Unity安装包减肥”背后藏着三个不可回避的真相第一Unity的构建系统本身不负责“瘦身”它只负责“打包”而“减什么、怎么减、减到哪一步停”全靠人来定义第二90%的体积问题根本不在代码层而在资源管线——模型面数、贴图分辨率、音频编码格式、字体文件嵌入方式这些看似“美术/策划的事”最终全由PlayerBuildInterface.BuildPlayer这一行代码买单第三“终极指南”不是指一套万能参数而是建立一套可验证、可回滚、可量化的体积监控机制。比如我们团队现在强制要求每次提交资源前必须运行自研的AssetSizeChecker工具生成diff报告CI流水线中APK/IPA体积增长超过5MB自动阻断合并甚至美术同学的PSD导出规范里明确写了“导出PNG-24时禁用Alpha通道除非必需且尺寸必须为2的幂次方否则自动拒绝入库”。这个指南不讲“点击Build Settings→勾选Compression→点Build”这种教科书操作。我要带你拆开Unity构建的每一层包装纸从AssetDatabase如何把一张4K贴图悄悄复制三份Editor、Standalone、Android各一份到IL2CPP如何把C#泛型编译成爆炸式膨胀的原生代码从Addressable System里一个未清理的“Unused Group”如何拖累整个AB包体积到iOS Metal Shader预编译时生成的.cache文件为何能占满1.2GB临时目录。这不是优化技巧合集而是一份基于真实崩溃现场反向推演的“体积犯罪现场勘查报告”。2. 资源层90%的体积黑洞藏在美术资产里——精准定位与外科手术式清理2.1 贴图分辨率、格式与Mipmap的三重陷阱Unity里最典型的体积刺客就是那张被美术标注为“UI背景_通用”的2048×2048 PNG。表面看它只是个背景图但实际在构建时会触发三重膨胀第一重PNG本身未压缩——Photoshop导出时若未勾选“压缩级别8”原始PNG体积可能比同等质量的ASTC大3倍第二重Unity导入设置中“Max Size”设为4096导致即使项目只用1024×1024引擎仍会保留完整4096版本用于Mipmap计算第三重Android平台默认启用ETC2格式但ETC2对Alpha通道支持极差引擎被迫降级为RGBA16或RGBA32单张图内存占用翻倍。实测数据一张2048×2048的PNG原始大小3.2MB在Unity中设为“Texture Type: Default”“Compression: ASTC 4×4”“Generate Mip Maps”关闭最终打包进APK的纹理体积为412KB若开启Mipmap且未限制Max Size同一张图在APK中膨胀至1.8MB——仅因多生成了6级缩略图且每级都以最高精度存储。提示Mipmap不是“开了就省流量”而是“开了就占空间”。移动端UI图99%不需要Mipmap——手指滑动速度远超人眼识别Mipmap切换的帧率且UI图通常固定缩放比例。唯一该开Mipmap的场景是3D场景中的远景贴图如山脉、天空盒且必须配合“Mip Map Bias”参数控制LOD切换阈值。真正的外科手术式清理流程如下批量扫描用Unity自带的AssetDatabase.FindAssets(t:texture)遍历所有贴图过滤出width 2048 || height 2048的资产格式诊断对每张图调用TextureImporter.GetPlatformTextureSettings(Android)检查compressionQuality是否为100应为50、resizeAlgorithm是否为Bilinear应为Bicubic以保边缘Alpha精简用ImageMagick命令行批量检测Alpha通道使用率identify -format %[fx:mean*100] image.png若结果5%强制转为RGB格式并导出JPGASTC适配针对Android统一设为ASTC 6×6平衡画质与体积iOS则用PVRTC 4bits注意PVRTC不支持非2的幂次方尺寸需前置裁剪。我们曾用此流程处理一个卡牌游戏项目初始APK体积2.1GB其中贴图占1.3GB清理后贴图降至380MB整体APK压缩至890MB——关键不是“全转ASTC”而是先识别哪些图真正需要高精度角色立绘用ASTC 4×4哪些图可以无损压缩UI按钮用WebP哪些图根本该删测试用的4K纯色渐变图。2.2 模型面数、骨骼与动画曲线的隐性成本模型体积常被误认为只和顶点数有关但Unity构建时真正的“体积放大器”是动画曲线。一个10万面的角色模型若绑定120根骨骼且每根骨骼带5条动画曲线Position.X/Y/Z, Rotation.X/Y/Z在FBX导入时若未勾选“Bake Animations”Unity会在运行时动态插值计算——这本身不增体积但一旦开启“Optimize Game Objects”引擎会将所有曲线烘焙为关键帧序列导致AnimationClip文件体积暴增。实测某角色Idle动画未烘焙时.clip文件280KB烘焙后飙升至4.7MB——因为每帧都存了120×5600个浮点值。更隐蔽的是SkinnedMeshRenderer的“Update When Offscreen”选项。默认开启时Unity会为每个离屏角色保留完整的骨骼矩阵缓存这部分数据虽不直接写入安装包但在构建时会强制包含所有骨骼的Transform引用间接增大序列化数据体积。我们在一个MMO项目中关闭该选项后Scene文件体积下降12%原因是大量离屏NPC的Transform引用被剥离。模型清理必须分三层操作几何层用Blender的Decimate Modifier将面数压至需求下限移动端角色主视角面数建议≤15k远景NPC≤3k注意保留法线贴图而非依赖高模细分骨骼层删除未参与动画的冗余骨骼如“jaw_end”“eyelash_L”用Unity的Rig→Configure→Muscle Definition检查权重分布剔除权重0.01的顶点影响动画层对所有AnimationClip执行AnimationUtility.SetAnimationClipsCurvesOptimization(true)启用曲线优化对循环动画Idle/Walk启用“Loop Pose”避免首尾帧重复存储。注意不要迷信“自动优化”。Unity的Optimize Mesh功能在处理蒙皮网格时可能破坏顶点顺序导致GPU Instancing失效。我们团队的铁律是模型优化必须在DCC工具Maya/Blender中完成Unity只做格式转换与参数校准。2.3 音频采样率、位深与压缩算法的致命组合音频是安装包里的“静音炸弹”。一张16位/44.1kHz的WAV人声1分钟时长约10MB若美术误用32位浮点WAV体积直接翻倍至20MB。更危险的是Unity的AudioImporter默认设置当“Load Type”设为“Decompress On Load”引擎会将整个WAV解压为PCM内存块——这虽提升播放性能但构建时会把原始WAV完整塞进APK。而“Compressed In Memory”模式虽压缩体积却在iOS上强制使用IMA4编码音质损失严重Android则用Vorbis需额外解码开销。我们的音频治理方案是“三轨制”语音轨全部转为Opus编码.opus文件用ffmpeg命令ffmpeg -i input.wav -c:a libopus -b:a 32k -vbr on output.opus体积仅为同质量MP3的60%且Unity 2021.3原生支持音效轨短音效3秒用ADPCM编码.adpcm长音效BGM用AAC-LC.m4a通过AudioImporter的“Force To Mono”和“Sample Rate Setting”统一设为22050Hz人耳对11kHz高频不敏感减半采样率可降50%体积环境轨采用“音频流式加载”——不打入AssetBundle而是运行时从CDN下载仅在APK中保留10秒预加载缓冲区。曾有个项目因背景音乐用32位WAV44.1kHz单曲体积达28MB占APK总大小17%。改用AAC-LC 22050Hz后体积降至3.2MB音质经5名听力正常成员盲测无显著差异。3. 构建层Player Settings、Scripting Backend与Target SDK的隐藏开关3.1 Player Settings里的“体积杀手”清单Unity的Player Settings界面像一个布满暗格的保险柜多数开发者只动过“Company Name”和“Product Name”。但以下7个选项每个都可能让APK体积增加50~200MB设置路径默认值安全值体积影响原理说明Publishing Settings →Custom Main Manifestfalsetrue0MB但可控启用后可手动精简AndroidManifest.xml移除未使用的权限如ACCESS_FINE_LOCATION和Activity声明Other Settings →Color SpaceGammaLinear0MB但影响渲染Linear模式需额外Gamma校正Shader增加Shader Variant数量间接增大Managed DLL体积Other Settings →API Compatibility Level.NET Standard 2.1.NET Framework-120MB.NET Standard 2.1强制包含System.Memory等大型库.NET Framework仅链接实际调用的类Other Settings →Target ArchitecturesARM64 ARMv7ARM64 only-85MBARMv7 ABI已淘汰Google Play自2021年起强制ARM64保留v7仅增加兼容性负担Publishing Settings →Split Application Binaryfalsetrue-180MBAPK启用后将原生库分离为split APK主APK体积骤降用户安装时按需下载对应ABI库Other Settings →Managed Stripping LevelDisabledHigh-95MBHigh级别移除未引用的.NET反射代码需配合[Preserve]特性保护关键逻辑Publishing Settings →Debug Symbolstruefalse-65MB开发版默认包含完整调试符号发布版必须关闭最关键的实操经验不要在Player Settings里逐项修改而要用ScriptableObject批量固化配置。我们创建了BuildProfileSO脚本将上述参数封装为可版本控制的资产。每次构建前执行BuildProfileSO.ApplyToPlayerSettings()确保所有成员环境一致。曾有同事本地测试时开启Debug Symbols提交后CI自动构建发布包导致上线APK多出65MB——这种错误用配置即代码Code as Configuration彻底杜绝。3.2 Scripting BackendMono vs IL2CPP的体积博弈“用IL2CPP一定更小”是最大误区。实测数据显示在小型工具类项目10万行C#中Mono构建的APK比IL2CPP小15%但在大型游戏50万行中IL2CPP因静态链接和泛型实例化优化体积反而小22%。根本原因在于Mono运行时是解释执行需打包完整libmono.so约18MBIL2CPP则将C#编译为C再由NDK编译为原生机器码可进行跨函数内联、死代码消除等深度优化。但IL2CPP有两大陷阱泛型爆炸ListT在IL2CPP中为每个T生成独立实现。若代码中存在ListGameObject、Liststring、ListVector3引擎会生成3个完全不同的原生函数而非共享模板。解决方案是用Listobject替代或用[Il2CppEagerStaticClassInitialization]特性强制提前初始化反射滥用Type.GetType(MyClass)或Activator.CreateInstance会阻止IL2CPP的类型裁剪导致整个Assembly被保留。必须改用typeof(MyClass)或预注册类型字典。我们团队的决策树很简单项目代码量20万行 → 用Mono启动快、调试易20万行且含大量数学计算 → 用IL2CPP体积小、性能高。切换时务必运行IL2CPP Code Generation Report需在Player Settings中启用“Enable Code Coverage”分析生成的C文件体积分布定位泛型和反射热点。3.3 Target SDK与Min SDK的版本权衡Android Target SDK版本升级常被当作“合规任务”但它直接影响APK体积。Target SDK 33Android 13相比Target SDK 29Android 10强制启用android:exported属性导致Manifest中Activity声明增多更重要的是新SDK要求使用AndroidX库而Unity 2021.3的AndroidX支持包androidx.core:core-ktx体积达4.2MB。我们的应对策略是“最小必要版本”原则当前Google Play要求Target SDK ≥31我们就设为31绝不盲目升到33Min SDK则根据市场数据设定——国内安卓市场64%设备运行Android 10故Min SDK设为29。同时用Gradle Propertyandroid.useAndroidXtrue和android.enableJetifierfalse关闭Jetifier它会将旧Support库自动转为AndroidX产生冗余代码。提示Unity 2022.3新增的“Android App Bundle (AAB) Support”是终极解法。AAB不是安装包而是“安装包配方”Google Play根据用户设备自动拆分并下发最优APK。实测某项目从APK转AAB后用户实际下载体积从1.2GB降至480MB——因为ARM64用户不会收到ARMv7库Android 12用户不会收到Android 10的兼容代码。4. 工程层Addressables、AssetBundle与构建流水线的协同瘦身4.1 Addressables系统不是用了就瘦而是用对才瘦Addressables常被当作“资源管理银弹”但错误使用反而增肥。典型反模式是将所有Prefab标记为Addressable却未设置正确的Group。Unity Addressables默认创建“Default Local Group”该Group将所有资源打包进一个巨大AB包通常是catalogmain双文件且启用LZ4HC高压缩——这看似省事实则让热更无法增量更新每次更新都需重下整个AB包。正确姿势是“三级分组法”Level 1按生命周期分Static组UI框架、核心Shader永不更新→ 打包进主APKDynamic组活动皮肤、限时道具月更→ 独立AB包启用LZ4压缩Hotfix组紧急BUG修复日更→ 最小粒度AB包单个ScriptableObject启用LZMA压缩体积更小解压稍慢。Level 2按平台分Android_ASTC组含ASTC贴图与iOS_PVRTC组物理隔离避免交叉引用导致冗余Level 3按语言分Text_zh与Text_en组分离支持按需下载语言包。我们曾重构一个社交游戏的Addressables原方案1个Default GroupAB包体积1.4GB新方案后Static组0.3GB打入APKDynamic组拆为8个子包平均85MBHotfix组保持2MB。用户首次安装体积从2.1GB降至980MB后续热更平均下载量从1.2GB降至15MB。4.2 AssetBundle手动构建绕过Unity GUI的精准控制Addressables虽方便但对极致体积控制力不足。我们保留了一套手动AB构建管线专治“Addressables无法处理的顽疾”Shader Variant剥离Unity的ShaderVariantCollection只能收集运行时用到的变体但构建时仍会打包所有可能变体。手动方案是用ShaderUtil.GetShaderVariantEntries()遍历所有Shader生成精简版ShaderVariantCollection再通过BuildPipeline.BuildAssetBundles()指定BuildAssetBundleOptions.DeterministicAssetBundle确保哈希稳定字体子集化Unity不支持动态字体子集。我们用Python脚本解析所有Text组件提取实际使用的Unicode字符集调用fonttools库生成子集字体.ttf再用Font.CreateDynamicFontFromOSFont()加载——某项目原中文字体12MB子集后仅850KB原生插件精简第三方SDK如推送、统计常带全平台so文件。手动构建时用AndroidJavaProxy替换部分Java逻辑删除未使用的ABI文件夹如x86_64。手动构建的关键是BuildAssetBundleOptions参数组合DisableWriteTypeTree关闭TypeTree写入减少序列化元数据-8%体积UncompressedAssetBundle对已压缩资源如JPG、MP3禁用二次压缩避免CPU浪费ChunkBasedCompression启用分块压缩支持AB包内单资源随机访问热更时无需解压整个包。4.3 CI/CD流水线把体积监控变成红绿灯再好的技术方案若无自动化保障终将回归人肉运维。我们在Jenkins流水线中嵌入三道体积防线Pre-Build检查拉取代码后运行du -sh Library/Artifacts/*扫描临时构建产物若Library/Artifacts/Android目录500MB立即失败并邮件告警Post-Build分析构建完成后用aapt2 dump badging output.apk解析APK结构提取native-libraries、resources、dex三部分体积生成HTML报告Diff对比将本次APK与上一版从制品库下载用apktool d反编译用diff -r比对assets/bin/Data/Managed/目录高亮新增DLL和增长超100KB的资源。最有效的实践是“体积预算制”给每个模块分配体积额度。例如UI模块预算120MB若本次提交导致其超支CI自动拒绝合并并返回详细超支清单“Button.prefab引入的SpriteAtlas增加23MB因包含未使用的图标变体”。这倒逼美术和程序在开发早期就关注体积成本。5. 实战复盘从2.3GB到680MB的17天攻坚全记录5.1 Day 1-3建立基线与根因测绘项目初始状态Unity 2021.3.15f1Android APK 2.3GBGoogle Play拒收超2GB硬限制。第一步不是动手删而是测绘“体积地图”。我们用Unity自带的BuildReportAPI生成构建报告BuildPlayerOptions options new BuildPlayerOptions(); options.scenes GetActiveScenes(); options.locationPathName output.apk; options.target BuildTarget.Android; options.options BuildOptions.EnableHeadlessMode; var report BuildPipeline.BuildPlayer(options); Debug.Log(report.summary.totalSize); // 总体积 Debug.Log(report.summary.totalFiles); // 文件数报告揭示关键线索totalSize24151572482.3GB但totalFiles18423——平均单文件131KB远高于正常值健康项目应50KB。进一步用aapt2 dump resources output.apk发现resources.arsc体积达312MB指向资源ID爆炸过多未清理的旧资源残留。5.2 Day 4-7资源层外科手术聚焦三大重灾区贴图用自研工具扫描出217张4K以上PNG其中132张为UI背景图。批量转为ASTC 6×6关闭Mipmap体积下降410MB模型发现角色模型FBX中包含未删除的“Reference”层Maya备份层用FBX Review工具确认后让美术重新导出单模型节省86MB音频识别出47个32位WAV语音文件转为Opus 32k VBR节省290MB。此时APK降至1.5GB但resources.arsc仍达280MB——说明资源ID未回收。5.3 Day 8-12工程层重构与构建参数调优执行两项关键操作Addressables重组将Default Group拆解创建Static_UI、Dynamic_Skin、Hotfix_Config三组启用Auto-Group但禁用Include in Build强制人工审核Player Settings重置关闭Debug SymbolsTarget Architecture设为ARM64 onlyManaged Stripping Level设为High启用Split Application Binary。关键转折点启用Split后主APK体积从1.5GB骤降至620MB但Google Play提示“Missing native libraries for ARM64”。排查发现libs/arm64-v8a/libmain.so被误删——因Split模式下原生库需单独打包为base-arm64-v8a.apk。修正后主APK 620MB split APK 180MB 总800MB符合要求。5.4 Day 13-17CI集成与长效防控最后阶段不是优化而是固化将所有优化步骤写入build.sh脚本确保本地与CI行为一致在Git Hook中加入pre-commit检查若提交包含.psd或.fbx文件强制运行file-size-checker超5MB则拒绝提交在Confluence建立《体积健康度看板》每日同步APK体积、Top10大文件、本周变化趋势。最终成果APK体积680MB主包用户实际安装体积520MBGoogle Play自动分发最优split较初始2.3GB下降72%。更重要的是建立了可持续的体积治理机制——此后三个月APK体积波动始终控制在±15MB内。6. 终极心法减肥不是目标而是开发纪律的外在体现Unity安装包减肥的终点从来不是某个数字而是团队对“资源即代码”的敬畏。我见过太多项目在上线前疯狂压缩却在上线后因一个未清理的Debug.Log导致内存泄漏——体积只是表象背后是开发流程的熵增。真正的终极指南其实是三条铁律第一体积必须可测量。没有aapt2 dump和BuildReport的量化数据一切“感觉变小了”都是幻觉。我们要求每个PR描述中必须包含“本次提交对APK体积的影响”格式为“12MB新增特效Shader-8MB优化UI Atlas净增4MB”。第二优化必须可回滚。Addressables的Group变更、IL2CPP的泛型优化、贴图格式切换每一步都要有对应的Revert Script。曾有个项目因ASTC兼容性问题回退若无预置的PNG批量还原脚本三天内无法恢复。第三责任必须可追溯。在Unity Package Manager中我们为每个美术资源包如com.company.ui-atlas添加package.json其中author字段填美术负责人邮箱。当某张图体积超标系统自动邮件通知责任人并附上优化指南链接。所以别再搜“Unity压缩教程”去翻你们项目的Library/Artifacts目录用du -sh * | sort -hr | head -20看看谁在偷偷吃掉你的体积。真正的减肥从直面那个2.3GB的APK开始——它不是敌人而是你过去所有开发决策的诚实镜像。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…