<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>技术 &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/category/%e6%8a%80%e6%9c%af/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.somedoc.net</link>
	<description>看前面，黑洞洞</description>
	<lastBuildDate>Sun, 05 Apr 2026 15:00:01 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.somedoc.net/wp-content/uploads/2016/12/cropped-dandycheung-1-32x32.jpg</url>
	<title>技术 &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>黑苹果的转战</title>
		<link>https://www.somedoc.net/2026/04/05/%e9%bb%91%e8%8b%b9%e6%9e%9c%e7%9a%84%e8%bd%ac%e6%88%98/</link>
					<comments>https://www.somedoc.net/2026/04/05/%e9%bb%91%e8%8b%b9%e6%9e%9c%e7%9a%84%e8%bd%ac%e6%88%98/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sun, 05 Apr 2026 14:59:59 +0000</pubDate>
				<category><![CDATA[macOS]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[问题解决]]></category>
		<category><![CDATA[黑苹果]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6673</guid>

					<description><![CDATA[家里用的主力机，原来也曾有过更换的经历，例如有一段时间就是  <a href="https://www.somedoc.net/2026/04/05/%e9%bb%91%e8%8b%b9%e6%9e%9c%e7%9a%84%e8%bd%ac%e6%88%98/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>家里用的主力机，原来也曾有过更换的经历，例如有一段时间就是 Latitude 5400，不过用过一阵之后，还是用回了 ThinkPad T450s。原因说起来特别简单，尽管 T450s 的 CPU 比较羸弱，但是在把内存升级到板载的 4GB 再加上 16GB 条子后，已经能代偿一部分。最重要的是，随着时间推移，机子里的 SSD 都升级到了 1TB，三块盘各自为政，Windows、Ubuntu、macOS 相安无事，巴适得很。</p>



<p>可是逐步地，CPU 的短板还是被逐渐感知到了。更何况近些时来，大家热热闹闹地玩 AI，这个家伙不管是对 CPU 还是内存/GPU，都不会特别迁就。所以故技重施，先把办公室的干活儿主力机升了升格，从 Latitude 5401 升级到 Latitude 5431，再把退下来的 Latitude 5401 搬回家里来用（因为它也可以支持三硬盘）。不过比较讨厌的是，它已经不支持 BIOS/MBR 引导了，而且虽然没有实测，可直觉上其 m.2 插槽也不会支持 SATA 协议的 SSD 了。这就是说，现有的 T450s 上的三个系统，每一个都得换盘，不仅如此，还要视情况进行针对性的外科手术式迁移适配。</p>



<p>最先，也最顺利的是 Windows 10，毕竟咱有积累的<a href="https://www.somedoc.net/2026/03/12/bios-mbr-%e5%bc%95%e5%af%bc%e7%9a%84-windows-10-%e5%b0%b1%e5%9c%b0%e8%bd%ac%e6%8d%a2%e4%b8%ba-uefi-gpt-%e5%bc%95%e5%af%bc%e5%ae%9e%e6%93%8d/" data-type="link" data-id="https://www.somedoc.net/2026/03/12/bios-mbr-%e5%bc%95%e5%af%bc%e7%9a%84-windows-10-%e5%b0%b1%e5%9c%b0%e8%bd%ac%e6%8d%a2%e4%b8%ba-uefi-gpt-%e5%bc%95%e5%af%bc%e5%ae%9e%e6%93%8d/">经验</a>打底。Ubuntu 的使用频度目前在家里不算高，因此暂时搁置。比较不好搞的是那份黑苹果。从以往的历篇博文也可以看出，在 T450s 上表现完美的Monterey 时至今日也已略显过时，而升级到 Sequoia 之后，本身在 T450s 上还算不得完美。历尽艰难，才把升级后遇到的无法登录的问题解决掉，而进入桌面后，陆续又发现一些使用上的毛刺。一是触控板驱动的不太对头，想触发点击操作，需要在触控板上连点两次；二是显示屏的亮度无法调节，这个情况应该是和显卡有关，理由是当我把这款盘从双显卡的 T450s 上平移到另一台只有核显的 T450s 上之后，调节亮度的控件就会正常出现；第三个问题也比较古怪，那就是如果把外置电池接上的话，系统引导的时候会卡死。基于这些，心想正好把黑苹果也干脆迁到 Latitude 5401 上就好了。</p>



<p>找了一块闲置的 m.2 的 SSD，用 DiskGenius 的磁盘克隆功能成功把原来 NGFF SSD 上的内容克隆了过来。需要说明的是，这份黑苹果目前面临着两个问题：1. 如何在 Latitude 5401 上才能引导起来；2. 它自身的状态与 Latitude 5401 是否能兼容。第一个问题的解决方法很标准，那就是在网络上找是否有现成的 EFI 被人分享了出来，幸运的很，确实有，在<a href="https://github.com/TeksuSiK/hackintosh-5401">这里</a>。不过在看作者的文档时，发现了一个之前少有的要求：需要使用技术手段微调这台本子的固件界面里不曾体现的选项。途径则是在 OpenCore 引导时，按空格键调出额外的引导项，进入到 OpenShell 控制台，按需执行 setup_var.efi 命令。要调整项的偏移和值文档中有现成的，但作者又提醒说，各人应该自行确认一下，以免失误导致设备变砖。于是三太爷不得不阅读 <a href="https://github.com/datasone/setup_var.efi">setup_var.efi 的文档</a>，按步骤操作。首先去下载了 Intel 的 <a href="https://github.com/CE1CECL/IntelCSTools" data-type="link" data-id="https://github.com/CE1CECL/IntelCSTools">CSME System Tools 工具集</a>中的 Flash Programming Tool（FPTW64.exe），执行 <code>FPTW64.exe -bios -d bios-dump.bin</code> 把设备当前的 BIOS 转储，然后使用 <a href="https://github.com/LongSoft/UEFITool">UEFITool</a> 把所需的 <code>Setup/*</code> 节抽取出来，再用 <a href="https://github.com/LongSoft/IFRExtractor-RS">IFRExtractor RS</a> 把配置信息转为文本格式。最后打开转换后的文本文件，一一核对提及的需要修改的配置项的偏移，顺便把当前值记录下来，以便将来可能需要恢复回去。还好，所有的偏移均与 EFI 的作者列出的一致。</p>



<p>作为一个好奇宝宝，显然在修改之前必须尝试一次引导，以观察不修改的话会有什么后果。后果其实很直接：不能引导成功，会重启。老老实实修改后，引导进入到了 macOS 的安装器界面。令人痛苦的是，界面的文字非中非英，一眼看去像是俄文。为了后续的步骤可以看明白，总得把这个界面显示问题解决掉。问了 AI 若干次，也按照它的回复对 OpenCore 的 config.plist 调整了若干次，统统无效（例如在 boot-args 里加上 -apple-language en_US，并指定 SystemLanguage 等）。最后没辙儿了，拿出手机打开 Google 翻译，照着屏幕一看，翻译 app 判定显示语言为匈牙利语。靠着它，才发现第二菜单下的唯一下拉菜单项其实就是语言切换的入口，这样一来，引导问题算是基本搞定。</p>



<p>接下来就要尝试用这份 EFI 引导一下前面克隆完成的 SSD 上的 macOS Sequoia 了。把 SSD 插入插槽，用带着定制了的 EFI 的 macOS 安装引导 U 盘启动，结果是令人意想不到的失望，一而再再而三地重启，根本不能像之前那样进入到安装界面。后来不禁想，不会是 U 盘自己输了什么问题了吧，决定验证下。把 SSD 取下，用最简单的环境来测试，结果这次好了，又能进入安装界面（也是 macOS 的恢复界面）了。这下恍然大悟，看来是 SSD 在作祟。赶忙到搜索引擎里查询，果然<a href="https://zhuanlan.zhihu.com/p/698148497">有人早就警示</a>：若干多的 SSD 与黑苹果相克，而老夫所用的海力士 BC711 赫然在列。好像说西部数据的好一些。</p>



<p>于是到闲鱼上查访，发现 SSD 这半年涨价的实在离谱，西数的 SN520，512GB 的竟然要 350 元上下（这还不算更离谱的标价）。要知道去年十月份，1TB 的 SSD 也就这个价。唉，黑苹果的迁移大业，先停停吧。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2026/04/05/%e9%bb%91%e8%8b%b9%e6%9e%9c%e7%9a%84%e8%bd%ac%e6%88%98/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>BIOS/MBR 引导的 Windows 10 就地转换为 UEFI/GPT 引导实操</title>
		<link>https://www.somedoc.net/2026/03/12/bios-mbr-%e5%bc%95%e5%af%bc%e7%9a%84-windows-10-%e5%b0%b1%e5%9c%b0%e8%bd%ac%e6%8d%a2%e4%b8%ba-uefi-gpt-%e5%bc%95%e5%af%bc%e5%ae%9e%e6%93%8d/</link>
					<comments>https://www.somedoc.net/2026/03/12/bios-mbr-%e5%bc%95%e5%af%bc%e7%9a%84-windows-10-%e5%b0%b1%e5%9c%b0%e8%bd%ac%e6%8d%a2%e4%b8%ba-uefi-gpt-%e5%bc%95%e5%af%bc%e5%ae%9e%e6%93%8d/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Thu, 12 Mar 2026 05:11:08 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[电脑]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6657</guid>

					<description><![CDATA[有一块祖传的 SATA SSD 上，有一份 Windows  <a href="https://www.somedoc.net/2026/03/12/bios-mbr-%e5%bc%95%e5%af%bc%e7%9a%84-windows-10-%e5%b0%b1%e5%9c%b0%e8%bd%ac%e6%8d%a2%e4%b8%ba-uefi-gpt-%e5%bc%95%e5%af%bc%e5%ae%9e%e6%93%8d/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>有一块祖传的 SATA SSD 上，有一份 Windows 10，引导模式还停留在 BIOS/MBR 状态。想把它接续着用起来，但是新机器已经放不下 SATA 盘了，而且也不支持传统引导方式了。正好有一块同容量的 NVMe SSD，于是产生把系统克隆过来，改造后再使用的想法。</p>



<p>在 Windows 10 下，把源盘（SATA 盘）和目标盘（NVMe 盘）都用 USB 方式连接好。</p>



<p>第一步是先用 DiskGenius 磁盘克隆，此后源盘抛开，不再参与后续步骤。成功克隆目标盘后的第二步是用 DiskGenius 的分区表类型转换功能把其 MBR 分区表格式转换为 GPT 分区表格式。</p>



<p>第三步有少许精微，其目的是要把 GPT 引导所需的 ESP 分区和 Windows 系统所需的 MSR 分区设定好。一个常见的 GPT 分区布局是，ESP 分区位于磁盘首，而 MSR 稍显随意，相邻地位于系统所在分区之前或者之后（暂不考虑 Windows 的恢复分区）。现实情况是在 MBR 布局下已经存在于系统所在分区之后，因此仅需将其分区类型在 DiskGenius 的编辑分区参数界面中重新调整为 MSR 类型即可。ESP 分区需要单独处理，主要原因是当前磁盘上没有空余空间可以使用，因此需要先用 DiskGenius 调整系统所在分区的大小，在其之前缩出 500MB 即可。此时即可通过 DiskGenius 的“建立ESP/MSR分区”菜单完成 ESP 分区的创建。</p>



<p>接下来还有两步路走。</p>



<p>首先是把刚刚创建好的 ESP 分区上置入引导文件。正好当前运行的主机也是 Windows 10，因此可以在管理员权限的命令行下执行 
			<span id="crayon-69e058b359fa8242545270" class="crayon-syntax crayon-syntax-inline  crayon-theme-visual-assist crayon-theme-visual-assist-inline crayon-font-droid-sans-mono" style="font-size: 13px !important; line-height: 16px !important;font-size: 13px !important;"><span class="crayon-pre crayon-code" style="font-size: 13px !important; line-height: 16px !important;font-size: 13px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-i">bcdboot</span><span class="crayon-h"> </span><span class="crayon-v">C</span><span class="crayon-o">:</span><span class="crayon-sy">\</span><span class="crayon-v">Windows</span><span class="crayon-h"> </span><span class="crayon-o">/</span><span class="crayon-i">s</span><span class="crayon-h"> </span><span class="crayon-v">S</span><span class="crayon-o">:</span><span class="crayon-h"> </span><span class="crayon-o">/</span><span class="crayon-i">f</span><span class="crayon-h"> </span><span class="crayon-v">UEFI</span><span class="crayon-h"> </span><span class="crayon-o">/</span><span class="crayon-i">l</span><span class="crayon-h"> </span><span class="crayon-v">zh</span><span class="crayon-o">-</span><span class="crayon-v">cn</span></span></span> 来完成。其中的 
			<span id="crayon-69e058b359fae994566021" class="crayon-syntax crayon-syntax-inline  crayon-theme-visual-assist crayon-theme-visual-assist-inline crayon-font-droid-sans-mono" style="font-size: 13px !important; line-height: 16px !important;font-size: 13px !important;"><span class="crayon-pre crayon-code" style="font-size: 13px !important; line-height: 16px !important;font-size: 13px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">S</span><span class="crayon-o">:</span></span></span> 是给 ESP 分区分配的盘符，这个工作也可以在 DiskGenius 里做。</p>



<p>第二步则是确认上一步创建出来的 BCD 文件是否可用，最佳工具首推 Bootice。使用它打开 <code>S:\EFI\Microsoft\Boot\BCD</code> 文件，在高级编辑模式下，把左侧栏中的对象树里的必要节点仔细检查一遍（主要是 <code>Windows Boot Manager</code> 节点以及 <code>Application Objects</code> 和 <code>Windows Resume Objects</code> 分支下的节点，把带有 <code>Device</code> 字样的 key（一般是 <code>ApplicationDevice</code> 或者 <code>OSDevice</code>）都要仔细审视一番，把对应的磁盘和分区（要特别注意：<strong>引导分区和系统分区是不一样的！</strong>）选择正确后保存。理论上，这块磁盘应该准备就绪了。</p>



<p>在实践中，上述操作一次性成功。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2026/03/12/bios-mbr-%e5%bc%95%e5%af%bc%e7%9a%84-windows-10-%e5%b0%b1%e5%9c%b0%e8%bd%ac%e6%8d%a2%e4%b8%ba-uefi-gpt-%e5%bc%95%e5%af%bc%e5%ae%9e%e6%93%8d/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>路由器上跑 Debian？</title>
		<link>https://www.somedoc.net/2026/02/15/%e8%b7%af%e7%94%b1%e5%99%a8%e4%b8%8a%e8%b7%91-debian%ef%bc%9f/</link>
					<comments>https://www.somedoc.net/2026/02/15/%e8%b7%af%e7%94%b1%e5%99%a8%e4%b8%8a%e8%b7%91-debian%ef%bc%9f/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sun, 15 Feb 2026 04:04:09 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[硬件]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6654</guid>

					<description><![CDATA[开年以来，眼看着身边的杂物越来越多，左抬脚右迈步，一碰一个纸 <a href="https://www.somedoc.net/2026/02/15/%e8%b7%af%e7%94%b1%e5%99%a8%e4%b8%8a%e8%b7%91-debian%ef%bc%9f/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>开年以来，眼看着身边的杂物越来越多，左抬脚右迈步，一碰一个纸箱子，遂决定今年以“出”为基本指导方针，“入”则需要慎之又慎。</p>



<p>收拾，隔三岔五上架到小黄鱼上。一下子就从灰堆里扒拉出来几个路由器。内存 512MB，即使放在今天，也不能算小。之前是在 TF 卡上烧的 OpenWrt，昨晚又想到，有没可能给它上面跑个 Debian？</p>



<p>搜了一下，竟然搜到一个博主，其博客地址是 <a href="https://blog.hackpascal.net/">HackPascal @ Home</a>，在数年前写过一个系列文章，就是在讲这个目标。大体看了一下，还挺复杂的，真要搞需要投入相当多的时间和精力，暂备于此。</p>



<ul class="wp-block-list">
<li><a href="https://blog.hackpascal.net/2019/09/debian-for-mt7621-%e6%8a%98%e8%85%be%e8%ae%b0-1-%e5%ae%9e%e7%8e%b0%e5%9f%ba%e7%a1%80%e7%b3%bb%e7%bb%9f%e6%ad%a3%e5%b8%b8%e5%90%af%e5%8a%a8/">Debian for MT7621 折腾记 (1) – 实现基础系统正常启动 | HackPascal @ Home</a></li>



<li><a href="https://blog.hackpascal.net/2019/10/debian-for-mt7621-%e6%8a%98%e8%85%be%e8%ae%b0-2-%e5%ae%9e%e7%8e%b0-mt7530-dsa/">Debian for MT7621 折腾记 (2) – 实现 MT7530 DSA | HackPascal @ Home</a></li>



<li><a href="https://blog.hackpascal.net/2019/10/debian-for-mt7621-%e6%8a%98%e8%85%be%e8%ae%b0-3-%e7%bc%96%e8%af%91-debian-kernel-package/">Debian for MT7621 折腾记 (3) – 编译 Debian Kernel Package | HackPascal @ Home</a></li>
</ul>



<p>顺便提一下，在查找阅读过程中发现，该博主似乎是所谓的不死引导器 Breed 的作者。未予追证，后续再说。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2026/02/15/%e8%b7%af%e7%94%b1%e5%99%a8%e4%b8%8a%e8%b7%91-debian%ef%bc%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>老树孕苞待春回</title>
		<link>https://www.somedoc.net/2026/02/09/%e8%80%81%e6%a0%91%e5%ad%95%e8%8b%9e%e5%be%85%e6%98%a5%e5%9b%9e/</link>
					<comments>https://www.somedoc.net/2026/02/09/%e8%80%81%e6%a0%91%e5%ad%95%e8%8b%9e%e5%be%85%e6%98%a5%e5%9b%9e/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sun, 08 Feb 2026 16:54:03 +0000</pubDate>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6651</guid>

					<description><![CDATA[最近 AI 的世界里，agent 作为明星是非常耀眼的存在。 <a href="https://www.somedoc.net/2026/02/09/%e8%80%81%e6%a0%91%e5%ad%95%e8%8b%9e%e5%be%85%e6%98%a5%e5%9b%9e/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>最近 AI 的世界里，agent 作为明星是非常耀眼的存在。微软公司不甘寂寞，也推出了自己的 agent 相关的贡献。作为一名上了岁数的 Windows 程序员，当再次看到 Microsoft Agent 这个词组时，却不由自主地想到了多年前的另一个同名技术。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Microsoft Agent 是 Microsoft 开发的一项技术，允许用户与应用程序和网页内的动画角色进行交互。它使用文本到语音（TTS）引擎来允许动画角色与最终用户对话。这些动画角色被称为“Microsoft Agent”。从 Windows 98 开始，它就预装在 Windows 中。Microsoft Agent 持续与所有 Windows 版本一起发布，直到 2009 年的 Windows 7，此后 Microsoft 停止提供 Microsoft Agent。Microsoft Agent 的最新版本是 1998 年 10 月 12 日发布的 2.0 版。</p>
</blockquote>
</blockquote>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Microsoft Agent 允许软件用户通过 Microsoft Agent 角色编辑器创建角色。微软在原始页面上制作了四个默认角色，包括精灵、梅林、皮迪和罗比。其他一些值得注意的角色是 1997 年至 2003 年 Microsoft Office 套件中出现的角色，包括 Clippy、Dot 或 Office Logo。Windows XP 搜索助手也是 Microsoft Agent，包括 Rover。另一个值得一提的 Microsoft Agent 是 Bonzi，一只紫色大猩猩，它与 BonziBUDDY 捆绑在一起，直到其停产。Bonzi 角色后来因其多个 meme 视频而成为 meme，随后受到了广泛关注，最后又因一名主播直播了 XP 损毁而导致 Bonzi 角色的受欢迎程度上升。</p>
</blockquote>



<p>上述引言来自于一个围绕 Microsoft Agent 技术而创建的<a href="https://tmafe.com/" data-type="link" data-id="https://tmafe.com/">社区</a>页面，比较全面地介绍了 Microsoft Agent 是什么这一命题。</p>



<p>对于国人来讲，最知名的一个 Microsoft Agent 其实应该是瑞星杀毒软件中的小狮子，尽管在后期，由于各种原因，把小狮子的展示技术迁移到了 Adobe Flash。由于小狮子的形象备受人民群众的喜爱，甚至有爱好者自行制作了不包含瑞星杀毒软件本体的独立的小狮子安装包，如果你想体验的话，可以到这里下载：<a href="https://m.crsky.com/mip/soft/94024.html">瑞星小狮子独立版下载 &#8211; 非凡手机软件</a>。</p>



<p>当对技术的追思到二这个份儿上的时候，老夫突然想把非 SWF 版本的原始小狮子找到再看看。这个工作稍微绕了点，因为首先就是要找一个更老版本的瑞星杀毒软件的安装包。当然功夫不负有心人，还是被俺找到一份：<a href="https://mydown.yesky.com/pcsoft/204802.html">瑞星杀毒软件 2004 官方 PC 版免费下载-天极下载</a>。下载解包后看到里面确实存在 RsAgent.acs，这就和记忆对上了。</p>



<p>acs 文件是微软的角色构建工具（可以在<a href="https://agentpedia.tmafe.com/wiki/Microsoft%20Agent%20Character%20Editor" data-type="link" data-id="https://agentpedia.tmafe.com/wiki/Microsoft%20Agent%20Character%20Editor">这里</a>下载）生成的，而制作的原始素材会用到 bmp 位图文件以及 wav 音频文件。如果你想把现成的 acs 文件逆向恢复成素材集，最妥善的方法当然是去了解 acs 的文件格式，尽管微软官方并未公开，好在前人栽过这棵树的，可以参看这个<a href="http://www.lebeausoftware.org/download.aspx?ID=25001fc7-18e9-49a4-90dc-21e8ff46aa1d" data-type="link" data-id="http://www.lebeausoftware.org/download.aspx?ID=25001fc7-18e9-49a4-90dc-21e8ff46aa1d">链接</a>。文档作者也写好了一个现成的工具，在<a href="http://www.lebeausoftware.org/download.aspx?ID=83b03bd5-18dc-467d-9778-e941536897e4">这儿</a>下载。</p>



<p>微软官方文档站里目前还有相关内存，可以在<a href="https://learn.microsoft.com/en-us/windows/win32/lwef/microsoft-agent">这儿</a>参阅；一个简单的入门介绍文档可以参阅<a href="https://github.com/Planet-Source-Code/mahangu-the-complete-guide-to-ms-agent__1-13181">这儿</a>。</p>



<p>有了这些，俺又不免想到，怎么在这新时代里，旧物利用一下儿呢？</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2026/02/09/%e8%80%81%e6%a0%91%e5%ad%95%e8%8b%9e%e5%be%85%e6%98%a5%e5%9b%9e/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AV 到底有几个意思</title>
		<link>https://www.somedoc.net/2026/02/05/av-%e5%88%b0%e5%ba%95%e6%9c%89%e5%87%a0%e4%b8%aa%e6%84%8f%e6%80%9d/</link>
					<comments>https://www.somedoc.net/2026/02/05/av-%e5%88%b0%e5%ba%95%e6%9c%89%e5%87%a0%e4%b8%aa%e6%84%8f%e6%80%9d/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Thu, 05 Feb 2026 13:00:08 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[硬件]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6648</guid>

					<description><![CDATA[刚学会上网的时候，凭着不甚熟练的技能，也不免要去访问一些不宜 <a href="https://www.somedoc.net/2026/02/05/av-%e5%88%b0%e5%ba%95%e6%9c%89%e5%87%a0%e4%b8%aa%e6%84%8f%e6%80%9d/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>刚学会上网的时候，凭着不甚熟练的技能，也不免要去访问一些不宜大庭广众之下万首瞩目的网站，这些站点有个类别，就是 AV 站。AV，是 Adult Video 的缩写，所谓“成人视频”。</p>



<p>后些年间，在一个还算比较知名的厂里写软件，繁中区管那类软件叫“防病毒软件”，简中区叫“反病毒软件”，更多的时候叫“杀毒软件”，英文就是 Anti-Virus Software，因此在那些年里，AV 会让三太爷第一时间想到反病毒。</p>



<p>再后来，发现不少设备上有个接口，赫然就叫 AV，比如电视机、有线电视机顶盒，以及现在还有的电视盒子等等，原来它是 Audio-Video 输入/输出接口。</p>



<p>这个接口见的不少，不过用的却不多，原因无他，实在是科技进步迅速，数字信号传输的协议和接口都已不知进化了多少版本，而还处于模拟信号世界的 AV 传输就基本都在默默吃灰的状态下了。模拟信号的音视频传输除了 AV 口之外，还有一些别的接口，例如 BNC（中文叫同轴电缆）接口，以及与之经常同时使用的 RCA 接口。</p>



<p>AV 接口的插头跟更常使用的音频线（例如耳机）很容易混淆，因为它们的接口物理规格基本就一样，大体来说，AV 接口是直接把最高级的音频线接口拿来使用了。</p>



<p>音频线接口的粗细有两种规格，3.5mm 和 2.5mm，这个规格指标不影响传输的数据定义。此外的变化就是接口分为几段了。拿音频线来说，一开始只有两段，对应的通路一条传输音频模拟信号，一条是地线；后来为了支持立体声，就成为三段，音频模拟信号分为左声道和右声道，再加地线；再后来又要满足耳机和麦克风一体化传输的需求，再扩充一段成为四段，新增的为语音输入的模拟信号。这种四段规格的音频线在物理上就等同于 AV 线了，只不过 AV 线上传输的是视频模拟信号、左右声道音频模拟信号，以及接地。</p>



<p>几年前鼓捣某一种 Pi（大概就是现在手上还留着有那么一两个的 Orange Pi Zero），发现这类板子上好些个都有 AV 输出能力，只不过有的是只定义在 GPIO 阵脚上，有的则已经把 AV 插口一并落实到板子上了。依稀记得有一回为了测试 Raspberry Pi OS，还特意在闲鱼上购买了一个小尺寸的显示器。回来后把它和板子连起来，确实看到了那个简陋的桌面。至于物理接口，板子上的输出端是音频线接口制式的插口（即母口），显示器上的输入端是黄白红三分量莲花头接口。</p>



<p>几天前拾掇杂物，发现了 AD 送我的一块十六七年前的 GPS 卫星导航仪，系统是 Windows CE 6.0。被他折腾得似乎导航软件已经进不去了，开机就是 Windows 桌面。心想它能干啥呢，咦，发现它有一个 AV 输入口，只不过不是 3.5mm 口径，而是 2.5mm。不过我疑惑的是，既然开机就是 Windows CE 系统一直在输出视频画面，那么 AV 口的输入何时切换？问了一下 AI，回答是这类导航仪的 AV 口通常用于连接倒车影像的信号输入，此信号优先级被定义得比较高，一旦有信号传入，或抢占屏幕画面。</p>



<p>也就是说，如果当年这个型号为乐驾/ROGA A1800KIT 的导航仪在手的话，那个小显示器应该是不需要的。为了验证这个设想，不得不下单购置合适的连接线：连接输出端的是 3.5mm 四段音频线公头，而连接输入端的是 2.5mm 四段音频线公头。在淘宝上搜索，没有成品，但是有两端都是 3.5mm 四段音频线公头的成品线，以及 3.5mm 母转 2.5mm 公的四段音频线转接头，价格分别为 6.29 元包邮，以及 3.43 元包邮。加起来还不到 10 块钱，毫不手软地下单了。</p>



<p>到手后先串接起来，再用它把导航仪和  Orange Pi Zero 连接起来，Pi 加电引导成功后导航仪上未检测到有 AV 信号，这是意识到，恐怕 Pi 里的系统（应该是 Debian 或者 OpenWRT）根本就没有驱动 AV 输出。那怎么检测这根组合线是否能正常工作呢？</p>



<p>先是跑到客厅，用正在服役的联通 IPTV 盒子的 AV 输出口测试，仍然没有接收到输出的信号，把 HDMI 输出线拔掉也不行，把盒子待机后唤醒还不行。沮丧地回到书房，蓦然想到还有一个闲置的比较新的联通宽带赠送的盒子，于是把导航仪直接和它连接后开机。吼吼，导航仪屏幕上果然出现了联通盒子的输出画面。至此，上面开始的想法验证通过，这个导航仪确实可以当个显示器（准确地说是电视/监视器）使唤。</p>



<figure class="wp-block-image size-large"><a href="https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a.jpg" class="highslide-image" onclick="return hs.expand(this);"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a-1024x768.jpg" alt="" class="wp-image-6649" srcset="https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a-1024x768.jpg 1024w, https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a-300x225.jpg 300w, https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a-768x576.jpg 768w, https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a-1536x1152.jpg 1536w, https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a-175x131.jpg 175w, https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a-667x500.jpg 667w, https://www.somedoc.net/wp-content/uploads/2026/02/d1ad32250b83e023ee3cd1d35fc5920a.jpg 1706w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>上图中，右上方的导航仪屏幕上显示的正是下面黑色的联通盒子输出的画面，左上的小显示器并未投入使用，只是出镜以供参看。导航仪的内置电池已经完全耗尽，因此需要 USB 供电，以后可以考虑拆开换一块电池。</p>



<p>最后的一个问题是，为什么客厅的盒子没能成功输出画面？猜想是跟盒子的状态有关，需要它在开机时就能检测到 AV 输出端口有线材接入了，从而激活输出信号。懒得去试了。</p>



<p>尽管已经证实，导航仪在一定程度上能代替小显示器，不过考虑到小显示器可以支持的信号输入硬件接口多样，暂时打消了断舍离将其脱手的念头。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2026/02/05/av-%e5%88%b0%e5%ba%95%e6%9c%89%e5%87%a0%e4%b8%aa%e6%84%8f%e6%80%9d/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>[转] 一篇 n 年前的固件安全帖</title>
		<link>https://www.somedoc.net/2026/01/07/%e8%bd%ac-%e4%b8%80%e7%af%87-n-%e5%b9%b4%e5%89%8d%e7%9a%84%e5%9b%ba%e4%bb%b6%e5%ae%89%e5%85%a8%e5%b8%96/</link>
					<comments>https://www.somedoc.net/2026/01/07/%e8%bd%ac-%e4%b8%80%e7%af%87-n-%e5%b9%b4%e5%89%8d%e7%9a%84%e5%9b%ba%e4%bb%b6%e5%ae%89%e5%85%a8%e5%b8%96/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Tue, 06 Jan 2026 16:46:33 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[电脑]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6614</guid>

					<description><![CDATA[地址在 Thunderstrike at 31C3 &#82 <a href="https://www.somedoc.net/2026/01/07/%e8%bd%ac-%e4%b8%80%e7%af%87-n-%e5%b9%b4%e5%89%8d%e7%9a%84%e5%9b%ba%e4%bb%b6%e5%ae%89%e5%85%a8%e5%b8%96/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>地址在 <a href="https://trmm.net/Thunderstrike_31c3/">Thunderstrike at 31C3 &#8211; Trammell Hudson&#8217;s Projects</a>。以下是 Copilot 帮助做的总结。</p>



<p><strong>简要总结：</strong> 这个页面是 Trammell Hudson 在 31C3 大会上关于 <em>Thunderstrike</em> 漏洞的演讲内容整理。它介绍了苹果 Mac EFI 固件的逆向工程过程、Thunderstrike 漏洞的原理，以及攻击方式和可能的防御措施。</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 内容要点</h3>



<ul class="wp-block-list">
<li><strong>背景与动机</strong>
<ul class="wp-block-list">
<li>Thunderstrike 是一种针对苹果 EFI 固件的攻击方法。</li>



<li>攻击者只需几秒钟的物理访问，就能将恶意代码写入 Mac 的启动 ROM。</li>



<li>这种固件级 rootkit 很难清除，甚至能抵抗系统重装。</li>
</ul>
</li>



<li><strong>逆向工程过程</strong>
<ul class="wp-block-list">
<li>演讲前半部分详细展示了如何逆向苹果的 EFI 启动 ROM，包括固件结构、校验机制和压缩方式。</li>



<li>发现苹果使用 <strong>CRC32 校验</strong>而非加密签名来验证 ROM 内容，这意味着攻击者可以轻松绕过。</li>
</ul>
</li>



<li><strong>Thunderstrike 漏洞原理</strong>
<ul class="wp-block-list">
<li>Thunderbolt 接口允许外部设备在启动时加载 Option ROM。</li>



<li>攻击者可通过修改 Option ROM，在固件更新流程中替换苹果的 RSA 公钥，从而让系统接受伪造的固件。</li>



<li>一旦攻击成功，ROM 中的公钥被替换，只有攻击者签名的更新才能被接受，形成持久控制。</li>
</ul>
</li>



<li><strong>演示与影响</strong>
<ul class="wp-block-list">
<li>演讲展示了概念验证攻击：利用 Thunderbolt 设备在恢复模式下注入恶意固件。</li>



<li>成功后，攻击者能安装不可移除的 rootkit，绕过密码、记录键盘输入等。</li>



<li>这是典型的“evil maid attack”（恶意女仆攻击），即在用户不在场时通过外部设备入侵。</li>
</ul>
</li>



<li><strong>防御与缓解措施</strong>
<ul class="wp-block-list">
<li>Hudson 提到的防御策略包括：
<ul class="wp-block-list">
<li>改进固件签名机制（使用真正的加密验证）。</li>



<li>限制 Option ROM 的加载。</li>



<li>加强物理安全（例如封堵接口）。</li>
</ul>
</li>



<li>他批评苹果当时的防御不足，强调需要硬件级的安全检查。</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 总结</h3>



<p><strong>Thunderstrike 漏洞揭示了苹果 Mac 在固件安全上的重大缺陷：攻击者可通过 Thunderbolt 接口在启动阶段写入恶意代码，获得持久控制。</strong> 这次演讲不仅展示了攻击过程，还呼吁业界加强固件层面的安全防护。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2026/01/07/%e8%bd%ac-%e4%b8%80%e7%af%87-n-%e5%b9%b4%e5%89%8d%e7%9a%84%e5%9b%ba%e4%bb%b6%e5%ae%89%e5%85%a8%e5%b8%96/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Android 启动器中图标管理的一些资料</title>
		<link>https://www.somedoc.net/2026/01/01/android-%e5%90%af%e5%8a%a8%e5%99%a8%e4%b8%ad%e5%9b%be%e6%a0%87%e7%ae%a1%e7%90%86%e7%9a%84%e4%b8%80%e4%ba%9b%e8%b5%84%e6%96%99/</link>
					<comments>https://www.somedoc.net/2026/01/01/android-%e5%90%af%e5%8a%a8%e5%99%a8%e4%b8%ad%e5%9b%be%e6%a0%87%e7%ae%a1%e7%90%86%e7%9a%84%e4%b8%80%e4%ba%9b%e8%b5%84%e6%96%99/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Thu, 01 Jan 2026 03:19:09 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[技术]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6595</guid>

					<description><![CDATA[文 3 的参考链接 2 也可以一看。]]></description>
										<content:encoded><![CDATA[
<ol class="wp-block-list">
<li><a href="https://zhuanlan.zhihu.com/p/708598218">Launcher3 图标布局原理解析 &#8211; 知乎</a>；</li>



<li><a href="https://juejin.cn/post/7278883071515656233">Launcher3 中 IconCache 缓存逻辑 &#8211; 掘金</a>；</li>



<li><a href="https://www.heqiangfly.com/2021/02/06/Android%20Launcher/android-launcher-icon-cache/">Android &#8212; IconCache | 孤舟蓑笠翁，独钓寒江雪</a>；</li>



<li><a href="https://blog.csdn.net/u012556114/article/details/148197324">Android 12 Launcher3 修改 App 图标白边问题 &#8211; CSDN 博客</a>；</li>



<li><a href="https://blog.csdn.net/a546036242/article/details/147518275">Android 14 系统统一修改 App 启动时 SplashScreen 中图标的大小和圆角 &#8211; CSDN 博客</a>；</li>



<li><a href="https://github.com/zhanghai/AppIconLoader/">https://github.com/zhanghai/AppIconLoader/</a>：MaterialFiles 作者张海的一个图标加载库。</li>
</ol>



<p>文 3 的参考链接 2 也可以一看。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2026/01/01/android-%e5%90%af%e5%8a%a8%e5%99%a8%e4%b8%ad%e5%9b%be%e6%a0%87%e7%ae%a1%e7%90%86%e7%9a%84%e4%b8%80%e4%ba%9b%e8%b5%84%e6%96%99/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>解决 NDK 构建时的一个警告</title>
		<link>https://www.somedoc.net/2025/12/08/%e8%a7%a3%e5%86%b3-ndk-%e6%9e%84%e5%bb%ba%e6%97%b6%e7%9a%84%e4%b8%80%e4%b8%aa%e8%ad%a6%e5%91%8a/</link>
					<comments>https://www.somedoc.net/2025/12/08/%e8%a7%a3%e5%86%b3-ndk-%e6%9e%84%e5%bb%ba%e6%97%b6%e7%9a%84%e4%b8%80%e4%b8%aa%e8%ad%a6%e5%91%8a/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Mon, 08 Dec 2025 05:51:03 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6564</guid>

					<description><![CDATA[昨天编译时，看到两个 NDK 构建脚本发出的告警信息： 不管 <a href="https://www.somedoc.net/2025/12/08/%e8%a7%a3%e5%86%b3-ndk-%e6%9e%84%e5%bb%ba%e6%97%b6%e7%9a%84%e4%b8%80%e4%b8%aa%e8%ad%a6%e5%91%8a/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>昨天编译时，看到两个 NDK 构建脚本发出的告警信息：</p>



<pre class="crayon-plain-tag">[crayon-69e058b35a4b6581741191 inline="true" ]C/C++: C:/Android/Sdk/ndk/27.0.12077973/build/core/build-binary.mk:418: warning: overriding recipe for target 'C:\code\doom\build\intermediates\cxx\Debug\5523b6rn/obj/local/arm64-v8a/objs-debug/lzma_1.9/C/7zDec.o'
C/C++: C:/Android/Sdk/ndk/27.0.12077973/build/core/build-binary.mk:418: warning: ignoring old recipe for target 'C:\code\doom\build\intermediates\cxx\Debug\5523b6rn/obj/local/arm64-v8a/objs-debug/lzma_1.9/C/7zDec.o'
C/C++: C:/Android/Sdk/ndk/27.0.12077973/build/core/build-binary.mk:418: warning: overriding recipe for target 'C:\code\doom\build\intermediates\cxx\Debug\5523b6rn/obj/local/arm64-v8a/objs-debug/lzma_1.9/C/7zDec.o.commands.json'
C/C++: C:/Android/Sdk/ndk/27.0.12077973/build/core/build-binary.mk:418: warning: ignoring old recipe for target 'C:\code\doom\build\intermediates\cxx\Debug\5523b6rn/obj/local/arm64-v8a/objs-debug/lzma_1.9/C/7zDec.o.commands.json'</pre>[/crayon]



<p>不管是 <code>overriding recipe for target</code> 还是 <code>ignoring old recipe for target</code>，都没看懂是怎么回事。网上搜索到 SO 上的一篇帖子，说的也是含含糊糊，但似乎说到是跟目标重复有关。打开 <code>build-binary.mk</code> 脚本的看第 418 行是没有线索的，于是又去看工程里跟指定的对象 7zDec 相关的 makefile，这下就找到了问题，<code>7zDec.c</code> 这个要编译的源码文件被写了两回，显然就是导致了“overring”以及“ignoring”的“重复”的来源。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2025/12/08/%e8%a7%a3%e5%86%b3-ndk-%e6%9e%84%e5%bb%ba%e6%97%b6%e7%9a%84%e4%b8%80%e4%b8%aa%e8%ad%a6%e5%91%8a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Android 里的 Adaptive Icon 的规范</title>
		<link>https://www.somedoc.net/2025/12/04/android-%e9%87%8c%e7%9a%84-adaptive-icon-%e7%9a%84%e8%a7%84%e8%8c%83/</link>
					<comments>https://www.somedoc.net/2025/12/04/android-%e9%87%8c%e7%9a%84-adaptive-icon-%e7%9a%84%e8%a7%84%e8%8c%83/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Wed, 03 Dec 2025 16:12:38 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[技术]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6561</guid>

					<description><![CDATA[以前和自适应图标（adaptive icon）打过交道，不过 <a href="https://www.somedoc.net/2025/12/04/android-%e9%87%8c%e7%9a%84-adaptive-icon-%e7%9a%84%e8%a7%84%e8%8c%83/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>以前和自适应图标（adaptive icon）打过交道，不过每次都是集中力气处理由它带来的问题，看过几次相关的资料，当时记住了，可时间一长，就又都漫漶在了记忆的不知何处去了。今天还是记录一下为好。</p>



<p>自适应图标是 Android O 引入的，也就是 Android 8（API level 是 26 的 Android 8.0 其 code name 是 O，而 API level 是 27 的 Android 8.1 也是）。</p>



<p><strong>资源</strong>。为自适应图标做基础的资源类型也是相应新增的，叫做 AdaptiveIconDrawable。其定义形如：</p>



<pre class="crayon-plain-tag">[crayon-69e058b35a6e9205647920 inline="true" ]&lt;adaptive-icon>
  &lt;background android:drawable="@&#91;drawable|mipmap|color]/bg_foo"/>
  &lt;foreground android:drawable="@&#91;drawable|mipmap|color]/fg_bar"/>
&lt;/adaptive-icon></pre>[/crayon]



<p>两个 drawable 的大小都必须是 108dp，背景 drawable 必须不透明，而前景 drawable 可以包含透明区域。</p>



<p><strong>遮罩</strong>。需要说明的是，尽管自适应图标的大小是 108dp，但是最终显示/渲染一个自适应图标时，系统/设备/启动器所使用的施加于其上用以控制可见区域的遮罩，其大小却只能是 72dp。也就意味着，一个自适应图标的上下左右四个边，均有尺寸为 18dp 的部分在通常情况下是不可见的。</p>



<p>遮罩的形状必须是外凸（convex）的，其形状边缘至中心点的最小距离是 33dp。这也是下图中直径为 66dp 的所谓圆形“安全区”的由来。</p>



<figure class="wp-block-image size-full"><a href="https://www.somedoc.net/wp-content/uploads/2025/12/1_d3ieGM2uVdKjrlF9y-G-0w.webp"><img decoding="async" width="324" height="324" src="https://www.somedoc.net/wp-content/uploads/2025/12/1_d3ieGM2uVdKjrlF9y-G-0w.webp" alt="" class="wp-image-6562" srcset="https://www.somedoc.net/wp-content/uploads/2025/12/1_d3ieGM2uVdKjrlF9y-G-0w.webp 324w, https://www.somedoc.net/wp-content/uploads/2025/12/1_d3ieGM2uVdKjrlF9y-G-0w-300x300.webp 300w, https://www.somedoc.net/wp-content/uploads/2025/12/1_d3ieGM2uVdKjrlF9y-G-0w-150x150.webp 150w" sizes="(max-width: 324px) 100vw, 324px" /></a></figure>



<p><strong>渲染</strong>。从 Android 8 开始，截止到 Android 12 之前，如果创建图标时使用的是 <code><strong>
			<span id="crayon-69e058b35a6eb267528472" class="crayon-syntax crayon-syntax-inline  crayon-theme-visual-assist crayon-theme-visual-assist-inline crayon-font-droid-sans-mono" style="font-size: 13px !important; line-height: 16px !important;font-size: 13px !important;"><span class="crayon-pre crayon-code" style="font-size: 13px !important; line-height: 16px !important;font-size: 13px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;"><span class="crayon-v">createWithBitmap</span></span></span></strong></code> 方法，系统（此处主要是指 Google/Android 官方的行为）会对传统图标“以示尊重”，原样渲染，如果位图中存在透明区域，要么保持透明，要么可能渲染为某种特定的背景色（如黑色）。而从 Android 12 开始，系统决定不再给予传统图标那样的优惠待遇，使其长久地破坏系统的视觉效果一致性，于是决定将其缩小，并放置在白色的背景层之上。那会缩小到什么程度呢？就是可以完全放置在安全区以内的程度（可以参见旧文：<a href="https://www.somedoc.net/2021/07/07/android-%e5%af%b9%e9%9d%9e%e8%87%aa%e9%80%82%e5%ba%94%e5%9b%be%e6%a0%87%e7%9a%84%e5%a4%84%e7%90%86/">Android 对非自适应图标的处理</a>）。</p>



<p>Medium 上有人写的两篇博客，对于理解、应用、设计自适应图标具有参考价值。而且其中还提到了上文提及的被遮罩排除的那部分可以有什么样的利用价值。</p>



<ul class="wp-block-list">
<li><a href="https://medium.com/androiddevelopers/implementing-adaptive-icons-1e4d1795470e">https://medium.com/androiddevelopers/implementing-adaptive-icons-1e4d1795470e</a></li>



<li><a href="https://medium.com/google-design/designing-adaptive-icons-515af294c783">https://medium.com/google-design/designing-adaptive-icons-515af294c783</a></li>
</ul>



<p>Android 官方对 Icon 类的文档在：<a href="https://developer.android.com/reference/android/graphics/drawable/Icon">https://developer.android.com/reference/android/graphics/drawable/Icon</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2025/12/04/android-%e9%87%8c%e7%9a%84-adaptive-icon-%e7%9a%84%e8%a7%84%e8%8c%83/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ThinkPad T440s/T450s 内置电池无法开机</title>
		<link>https://www.somedoc.net/2025/11/02/thinkpad-t440s-t450s-%e5%86%85%e7%bd%ae%e7%94%b5%e6%b1%a0%e6%97%a0%e6%b3%95%e5%bc%80%e6%9c%ba/</link>
					<comments>https://www.somedoc.net/2025/11/02/thinkpad-t440s-t450s-%e5%86%85%e7%bd%ae%e7%94%b5%e6%b1%a0%e6%97%a0%e6%b3%95%e5%bc%80%e6%9c%ba/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Sun, 02 Nov 2025 15:40:48 +0000</pubDate>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[电脑]]></category>
		<category><![CDATA[问题解决]]></category>
		<guid isPermaLink="false">https://www.somedoc.net/?p=6548</guid>

					<description><![CDATA[之前已经说过，老夫把一台 ThinkPad T440s 使用 <a href="https://www.somedoc.net/2025/11/02/thinkpad-t440s-t450s-%e5%86%85%e7%bd%ae%e7%94%b5%e6%b1%a0%e6%97%a0%e6%b3%95%e5%bc%80%e6%9c%ba/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[
<p>之前已经说过，老夫把一台 ThinkPad T440s 使用主板更换大法将其升级为了 T450s，并定名为 T448s。无论是在 T440s 的时候还是后来，发现了一件怪事，就是在仅有内置电池的时候，按下开机按钮没有反应，需要插入电源适配器才能正常开机。</p>



<p>尽管心里甚至有过设计原本如此的情愿，但还是想试验证实一下。首先把已经没电了的 BIOS 电池换掉，又尝试开机，开机失败，这排除了 BIOS 电池的影响。于是接入电源适配器后开机，进入 BIOS 设置，把内置电池设置为禁用。原本的计划是，再次进入 BIOS 后改为启用，但是看说明文字的叙述，禁用自动就是一个临时性措施，一旦重新接入电源适配器，内置电池就会自动启用。所以当第二次插入电源适配器后，没有再对 BIOS 进行修改，而是直接关机，然后拔掉电源适配器。</p>



<p>这时按下开关按键，开机了。显然只有内置电池是可以开机的。也许正是因为更换 BIOS 电池后，才使得内置电池的存在以及启用状态被持久化记忆了，所以开关键才可以正常触发。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2025/11/02/thinkpad-t440s-t450s-%e5%86%85%e7%bd%ae%e7%94%b5%e6%b1%a0%e6%97%a0%e6%b3%95%e5%bc%80%e6%9c%ba/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
