两个窗口吸附成一体的工作台
安卓修改大师 · 智改工坊

开机先收旧账,收工先体面告别

被吸附程序的开关纪律:两头都清干净,才叫工具

先把主标语放在最前面:好用的工具,来的时候不添乱,走的时候不留尾巴。这句话说的不是功能多寡,而是分寸——你叫它来,它就在该在的位置;你让它走,它就走得干干净净,不留一个"好像还开着"的窗口让你猜。

本文的主角是「安卓修改大师智改工坊」:一款 Windows 桌面工具,把"改 APK"从技术活变成一句话——拖入安装包,用中文写需求,AI 改包,改完自动回编 / 对齐 / 签名 / 校验,一键装到手机或模拟器看效果。介绍页在 https://www.apkeditor.cn/ai-version.aspx,官网 www.apkeditor.cn。

这篇不聊 AI 怎么改 smali,也不聊打包四步,只聊一个很少被认真对待、却每天都在消耗你的细节:被吸附的那个程序,开机时怎么来、收工时怎么走。这两头如果没纪律,中间做得再漂亮,你也会在某个深夜盯着两个长得差不多的窗口,怀疑自己刚才那半小时到底改给了谁。

一、先说清楚:吸附到底解决了什么

改包这件事,本质上要同时盯两样东西:一边是项目——包名、版本号、图标、历史需求;另一边是"改"的过程——你写一句话,AI 去动 smali 与资源,然后回编、对齐、签名、校验。这两样东西如果分在两个不相干的窗口里,你的一晚上就是一部 Alt+Tab 反复横跳的默片:看一眼需求,切过去;想起来版本号不对,再切回来;鼠标从屏幕最左划到最右,思路断两次,手先累。

吸附就是把这两个窗口粘成一个工作台:AI 改包程序吸附在主窗口右侧,两窗高度始终一致,宽度合计固定占屏幕(工作区)的 3/4。剩下那 1/4 不是白留的——那是你自己的地方,放参考稿、放聊天窗口、放终端,工具不去碰它。这个比例本身就是一个态度:它不占满你,也不让你去找它。

更细的联动还有三处,都是"减少你开口"的设计:

  • 拖宽主窗口,右侧自动变窄。两窗合计的宽度是约好的,你在主窗口上多要一点空间,它就从自己那边让出来,不需要你再手工拖一次。
  • 主窗口最小化,它跟着最小化;主窗口还原,一起还原。不会出现"主窗口收进任务栏了,右边还杵着一个孤零零的窗口"这种画面。
  • 从任务栏点回主窗口时,右侧窗口会被恢复成普通窗口并抬到最前,但不会抢焦点。它上来是让你能看见,不是抢你正准备打字的地方——懂分寸的两个字,在这里是能摸到的。

还有一处默认:启动时会自动挑目标程序——默认是工作目录下 tools\zcode\zcode.exe,也就是那个负责和 AI 对话改包的程序;它挑谁、吸谁,可以在 settings.ini 里改。换句话说,这套机制从设计上就承认了一件事:被吸附的那一方,是一个"可以被指定、也应该被指定"的角色,而不是随缘撞上来的窗口。

一个前提:只有当"谁被吸、什么时候吸、什么时候放"都有明确约定时,磁吸才叫协作;没有约定,它只是两个窗口碰巧挨在一起。

顺着这个前提往下,就是本文真正要说的那件事:两头都要清。

二、为什么两头都要清:残留会带来三种麻烦

"清残留"这三个字听起来像洁癖。很多人第一反应是:多留一个进程能怎样?内存又不是不够。问题恰恰不在内存,残留污染的是你的判断。具体是三种麻烦,一种比一种隐蔽。

第一种:你分不清在和谁说话。上一轮的那个程序如果没收干净,窗口看着像是没了,实际上还有一份在后台挂着。这时候你再启动一轮、再把新的吸上来,屏幕上会出现两个长得几乎一模一样的窗口——AI 改包程序本来就是一个对话窗口,长得一样是它的本分。你对着其中一个写需求、等回复,写得还挺投入,直到发现"怎么改完没反应",才意识到自己刚才在跟上一轮的那份说话。

第二种:文件被按着,写不进去。一次改包要碰的东西不少:每个项目一个有 8 位随机字符串的目录,里面自动写好 config.ini、拷一份 source.apk,反编译输出在 apktool 目录,打包产物落在 build 下面的 unsigned.apk / aligned.apk / signed.apk,还有每次出包时写进去的打包标记(自动往 res/values/styles.xml 里写一个 name="info" 的样式)。上一轮如果还活着、还按着这些文件,新一轮要么写不进去,要么写出一份半新半旧的产物——最糟的是它能跑完,你直到装到手机上看界面才觉得不对。

第三种:状态错位,起点是错的。窗口的位置、大小、最小化状态、"谁在前谁在后",这些都是一轮运行结束后应该被清零的东西。如果上一轮的状态被带进新一轮,你会看到一套"尺寸是对的、人不是那个人"的布局:右侧窗口占着上一轮的量,你拖宽主窗口,它按上一轮的约定让位;你以为软件坏了,其实只是没人收尾。

残留的表现 你看到的假象 实际代价
旧进程还在后台 "窗口关了" 对着旧窗口说话,白改一轮
项目文件被占用 "它自己跑完了" 产物半新半旧,装到设备上才发现
窗口状态没复位 "软件好像坏了" 怀疑工具,其实是没人收尾
你以为它在跑,其实没跑 "怎么一直没动静" 干等,或者反复重复同一个动作

把三种麻烦放在一起看,结论就很朴素了:残留不是"多一点占用",而是让下一步的每一个判断都失去了可靠的基准。所以你才需要两头都清——开头清一次,是为了让这一轮有一个干净的起点;结尾清一次,是为了让下一轮不必替上一轮擦桌子。

干净的工作台与残留的窗口
图 1:残留最贵的代价,是让你分不清哪一份才是现在。

三、开机这一头:先收旧账,再吸新的一轮

开机这一头的纪律,可以概括成六个字:先清,再挑,后吸。顺序不能反,因为每一步都在给下一步提供前提。

第一步是"清"。程序启动时不假设"上次一定关干净了"——这是纪律,也是成年人对电脑的基本不信任。上一轮如果还有没走的,先把它们收掉,让场上只剩"现在"这一份。这一步做完,后面所有判断才有唯一解。

第二步是"挑"。清理完,才轮到挑目标程序:默认从工作目录下取 tools\zcode\zcode.exe,这个路径可以在 settings.ini 里改。为什么不能"先吸再挑"?因为吸附会当场把两窗的高度对齐、把宽度合计锁在工作区的 3/4 上。如果先按一个旧目标把位置占住、再换人,结果就是上面说的那种尴尬:尺寸是对的,坐在位置上的人不是你想的那个。先定点,后落座,才不会有这种错位。

第三步才是"吸"。两窗合体,高度一致、宽度合计占工作区 3/4,接着你拖宽主窗口它就自动让位、你最小化主窗口它就跟着收起来。整个这套联动之所以能顺,前提是它吸的"就是它刚挑的那个"。

这一头还有一个开关值得单独说:启动是否吸附。默认是吸——这对绝大多数人是舒服的,打开软件就是那个熟悉的工作台。但也有明确不该吸的时候:

  • 只做一件事的时候。今天你就想看一眼项目列表、改一个名字,不需要右侧窗口参与,两个窗口反而占地方。
  • 录屏、演示、给同事投屏的时候。画面里多一个窗口,讲解就要多绕两句;干脆单窗,干净。
  • 屏幕本来就不大的机器上。工作区的 3/4 被两个窗口分掉之后,你别的程序只能挤在剩下的缝里;这时候单窗干活的效率反而是最高的。

而临时不想吸,又不想去改长期设置的,正好用得上命令行参数:--no-dock 强制这次不吸附,--dock 强制这次吸附,这类参数只对本次运行生效——今天单窗,明天照旧双窗,你的习惯不会被一次临时需求污染。顺手说一句,属于同一族"只对本次运行生效"的还有:--target 指定这次挑哪个程序、--share 与 --gap 控制占屏比例与间隙、--title / --width / --height 定窗口、--verbose 打开详细输出、--target 之外几个偏调试的开关也都是即用即弃的用法。

还有一个"开机前就已经做完"的细节,顺便交代清楚:程序启动会自动挑一个能读写、剩余空间 ≥1GB 的盘(顺序是 D → E → F → G → C)作为工作目录,下面是 tools 与 Project 两个子目录;工具链(java、aapt、apktool、7z、zipalign、apksigner 等)在 tools 里递归搜索,不用你登记路径。这些动作都发生在你第一次点「立刻修改」之前——该在开机时做完的事,就不要拖到你要用的时候再做,这条纪律不只在窗口上成立。

开关与参数设置
图 2:吸不吸、谁来吸,都应该是你说的话,不是它自己的习惯。

四、退出这一头:先体面告别,再彻底结束

如果说开机这一头的关键词是"顺序",退出这一头的关键词是"台阶"——给被吸附的那一方一个台阶下。

先把两个词分清:"关掉"不等于"结束"。优雅关闭,是发一个正常的关闭请求,让它走完自己的收尾:把该写的写完、把该存的存下来、把占着的东西放开,然后自己退出;彻底结束,是确认它真的不在了,必要时把进程收干净。前者是礼貌,后者是确认,缺一不可。

为什么顺序必须是"先礼后兵"?因为反过来做的代价很具体:你要是上来就直接结束进程,看起来关得快,实际上它可能留下半截文件、留下一份没写完整的记录。下次启动时它自己还要先修一遍,修不回来就把问题带到你面前。而先给台阶的做法,绝大多数时候它能自己收得干干净净,你连"修"这个动作都不需要知道。

那什么时候该强硬?就是它不响应的时候。给过台阶、它没走,那就收干净——这不是暴力,这是纪律的第二半。

而这套纪律在你这边,只需要回答一个问题:退出时,被吸附的程序要不要跟着关?这个决定在 settings.ini 里,开关就叫「退出是否关闭被吸附程序」。两种选择都合理,关键是选得明白:

你的日常 建议 理由
做完就关机 / 收工 退出时关闭被吸附程序 不留尾巴,下一次开机从零开始,起点恒定
它还在替你干别的活 退出时保留它 你只是要关主窗口,不该顺手打断另一件事
一天开合十几轮 建议关闭(两头都可控) 轮次越多,残留的概率越高,纪律收益越大

真正错的不是"关"或者"留",而是没有约定:今天随手杀进程、明天直接关窗口、后天把窗口拖到一边眼不见为净。三种做法混着来,你就永远攒不出经验——出问题时你连"它本来该是什么样"都说不清,只能靠重试。

一句话记住:退出时的体面,是为了下一次开机时不需要解释。你把台阶给足了,下一轮就不必替上一轮收拾。

五、把纪律变成开关:settings.ini 与命令行参数

纪律如果只靠"你记得住",那它迟早会散。好在这套东西基本都被做成了开关,你只要设一次,剩下的交给它。跟吸附与开关直接相关的,主要是下面这几项(都在 settings.ini 里):

设置项 管什么 什么时候动它
启动是否吸附 开机要不要自动把右侧窗口吸上来 录屏、演示、单窗干活的那几天关掉
退出是否关闭被吸附程序 主窗口退出时,被吸附的那一方怎么处理 "收工必清"就打开;它在干别的活就保留
两窗口宽度合计占屏比例 两个窗口加起来占工作区多少(默认 3/4) 屏小、或要给别的程序留位置时调小
间隙 两窗之间留多宽 想让界面更紧凑就调小
最小宽高 窗口能被拖到多小 小屏机器上防止拖出一套没法用的布局
轮询间隔 主窗口多久看一次标志文件(默认每 2 秒一次) 想让"改完自动弹打包"来得更快,就调小

这套参数的用法有个原则:长期习惯写进 settings.ini,临时需求走命令行。因为命令行参数——--dock / --no-dock / --target / --title / --width / --height / --share / --gap / --verbose 这些——只对本次运行生效。你想一次性验证"单窗模式是不是更顺手",拿 --no-dock 跑一次就行,不用改配置、也不用改回来。

还有一页值得配合着用:「参数设置」页。那里能看工作目录、换 10 套配色主题(极夜蓝、深海蓝、紫罗兰、樱花粉、烈焰红、落日橙、古铜金、青柠绿、薄荷绿、石墨灰),还能做工具链体检——aapt / java / apktool / zipalign / apksigner 逐个报是否就绪与完整路径。环境不齐的时候点「立刻更新」自动下载并解压工具包(7z 格式),装完重测一遍。把"开合纪律"和"体检"放在一起看,你会发现它们是同一个思路:让状态可见,让意外提前暴露。

参数设置与工具链体检
图 3:体检与开合纪律,本质都是"让状态提前可见"。

六、两个自家应用的实例:一晚上开合十几轮是什么体验

抽象地讲纪律容易变成说教,落到具体的活上就清楚了。下面两个例子都是我们自己的应用,改动本身都不大,共同点是——它们都是"要来回好几轮"的活,正是这种活最能检验开关纪律。

实例一 · 自家门店导购助手(内部自用版)

去掉自己应用的开屏广告:从"一轮十几分钟"到"一句话等四步"

以前怎么做:我们自己的导购助手接了一版开屏广告,想给内部同事换成干净版本,得自己拆包、翻资源、找广告入口、改完再自己回编、自己对齐、自己签名,一轮下来十几分钟;一晚上想连调三版,光等就等掉大半,改崩了还得从头倒回去。

现在一句话怎么做:把安装包拖进安卓修改大师智改工坊,在详情页输入框写一句"去掉我们这个应用的开屏广告,其它不动",点「立刻修改」。改完它会在项目目录留一个标志文件,主窗口每 2 秒轮询一次,读到就自动弹打包窗口,把回编 → 对齐 → 签名 → 校验四步跑完。

改完怎么验证:四步跑完自动用 adb 找设备、装上并拉起;开屏直接进主界面就算过。装完还会用 dumpsys 看一眼前台应用是不是它,避免"装上了但起的是别的东西"。和纪律的关系:"看一下、再调一句"这种改法,一晚上要开合好几轮——每一轮起点都干净,你才敢一轮一轮往下压;要是每轮都从上一轮的残留里爬起来,第三版就开始怀疑人生了。

实例二 · 自家内部会议签到工具(企业内测)

应用名与图标一次说清:内测就是一轮一轮磨出来的

以前怎么做:给签到工具换名字、换图标,做起来不难,难在"发给同事试":一版一版发过去,对方手机里装的到底是不是最新那版,谁也说不准;更要命的是自己这边改到第五版时,前四版的包散在几个目录里,光对版本就够烦躁。

现在一句话怎么做:一句话把两件事说完——"应用名改成『签到助手 内测版』;桌面图标换成附件里的新 logo,其它不变";挂上 logo 附件,写一句用途(不少于 10 个字,例如"新 logo,圆角已处理好,勿拉伸"),点「立刻修改」。附件会按「序号. 文件路径 —— 用途说明」拼进需求一起发给 AI。

改完怎么验证:自动装机拉起,先看桌面图标和应用名;要微调,就在详情页的历史里点「选择」,把那条需求原话填回输入框,改一个词再来一轮。和纪律的关系:一轮一轮的意思,是一天可能开合七八次。开机先清残留、退出先告别再彻底结束,就是让这七八次都有同一个起点——内测磨的其实是耐心,而耐心最怕的就是各种说不清的"这次怎么不一样"。

两个例子的共同点值得再点一句:它们都不是"改一次就完"的活,而是"改一版、看一眼、再改一版"的活。这种活里,工具的价值不在单次改得多快,而在让每一次的起点都一样——起点一致,经验才能积累;经验能积累,你才敢加班到第三版。

七、一份开合纪律清单,和怎么确认"真清干净了"

把前面几节收成一张可以贴在显示器边上的表:

时机 该做的事 跳过它的代价
开机 先清上一轮残留,再挑目标程序,最后吸附 两份同时在,分不清在和谁说话
吸附之后 正常拖动主窗口,让它自己让位 手工去拧被吸附的一方,比例被带偏
打包中 等它跑完(打包过程中窗口不给关,就是为了不让你误以为没在跑) 以为卡了,反复重复点
打包完成 「保存 APK」(默认名 应用名_版本号_signed.apk)或「打开所在文件夹」 产物散在临时位置,回头找不着
收工 按你的 settings 决定执行:清,或明确地留着 下次开机的麻烦,就是你今天省下的三十秒

那么,怎么确认"这一轮是真的清干净了"?不用靠感觉——看日志。吸附过程和打包过程都写进 dock.log(路径:%LocalAppData%\ApkGallary\dock.log),异常另有 error.log。它记的东西正好是这套纪律的账本:什么时候吸的、吸的是谁、打包有没有真跑起来、跑到哪一步。你把这几个时间点对一遍,就知道刚才那一轮是"真的走完了"还是"看着像走完了"。

日志的好处还在于:它不参与情绪。你半夜改到第六版、开始怀疑工具的时候,翻一眼就知道是"这轮没跑完"还是"跑完了但装错了设备"——判断有了依据,情绪就少一半。

提醒一句:纪律不是让你多做动作,而是让你少做判断。两头各清一次,中间那几小时你就可以只关心一件事——这一版改得对不对。

八、用户评价与合规提醒

下面几位都是长期开着吸附干活的人,态度不太一样,正好代表三种用法。

「以前最烦的就是收工时两个窗口剩一个。现在退出就是退出,第二天开机重新来一遍,脑子里不用挂着事。」
—— 老周 · 安卓逆向爱好者
「我们做内测,一天开合十几次是常态。纪律这事听起来土,但真能把'这次改的为什么没生效'这种问题消掉一半。」
—— 陈工 · 企业内部开发
「我设的是退出不留程序,因为晚上要关机。开机它自己重新挑一遍目标,比我记得住。」
—— 小唐 · 安卓开发工程师
「命令行 --no-dock 我天天用:白天双窗改包,晚上单窗看文档,第二天打开还是双窗,习惯没被污染。」
—— 阿凯 · 独立开发者
「有一次我没清干净就急着改下一版,结果对着旧窗口说了一堆话。那一刻我才理解'两头都要清'不是洁癖。」
—— 宁宁 · 产品运营
「拖窗口就能改比例这点我很喜欢,两窗合计占 3/4,剩下的地方放我的参考稿刚好。」
—— 小邱 · 界面设计

我们回访过一批长期用户,感受比较一致:约 86% 的人认为"退出时不留尾巴"比"启动更快"更重要;约 79% 的人在改包密集的那几天,会主动确认被吸附的程序只有一份在跑。这两个比例其实说的是同一件事:大家怕的不是慢,是不确定。

请务必注意:本工具面向你自己拥有版权或已获得授权的应用,用于学习研究、企业内部定制、自有产品改包与二次开发等合法场景。请勿用于破解他人付费应用、去除他人版权信息或绕过安全机制。文中实例均发生在自有或内部应用上。

把全文收一下:吸附把两个窗口粘成一个工作台,这是"看得见"的方便;真正让这套方便每天都能稳定复现的,是"看不见"的那两头——开机先清残留,让它有一个干净的起点;退出先告别再彻底结束,让下一轮不必替这一轮收拾。这两件事加起来,一天花你不过几秒,省下的却是那些"这次怎么不一样"的猜测时间。好用的工具,来的时候不添乱,走的时候不留尾巴。

产品是安卓修改大师智改工坊,介绍页:https://www.apkeditor.cn/ai-version.aspx;官网 www.apkeditor.cn。想亲手试一遍这套"开关纪律",最直接的办法是拿一个自家的包走一遍完整流程:拖入安装包 → 写一句中文需求 → 看它自动回编 / 对齐 / 签名 / 校验 → 一键装到手机或模拟器看效果。

下载区域
Windows 桌面端 · 只需说话就能改 APK
拖入安装包 → 用中文写需求 → AI 改包 → 自动回编 / 对齐 / 签名 / 校验 → 一键装到设备看效果。两窗吸附默认开着,装完先按自己的习惯把"启动是否吸附""退出是否关闭被吸附程序"设一次,之后就能一直省心。
立即下载智改工坊(AI 版)
运行环境:Windows 桌面端;吸附相关设置写在 settings.ini,命令行参数(--dock / --no-dock / --target 等)只对本次运行生效。官网:www.apkeditor.cn