回编 → 对齐 → 签名 → 校验:前三步在执行,第四步在确认
前三步只回答「有没有跑完」,verify 才回答「到底签没签上」
AI 改完包之后,真正决定这次改动能不能落地的,是打包这一步。改得再对,包出不来或者出来装不上,这一轮就等于白跑。安卓修改大师智改工坊把出包固定成四步:回编、对齐、签名、校验。步骤不多,但每一步都有明确职责,顺序也不容调换——前一步的产物是后一步的输入,任何一个环节被跳过,问题都会在最后装机的时候才暴露出来。
本文按顺序把这四步拆开讲。前三步大家多少都听说过,所以重点会放在第四步上:为什么在签名之后还要再跑一次 verify,它不是冗余,而是这条流水线里唯一一个以「确认」为目的的环节。理解了这一点,你就能明白为什么手工流程里那些「明明跑完了却装不上」的怪事会反复出现。
先看一个大家多少都遇到过的场景:改了一个包,命令跑完,也生成了文件,装到手机上却提示失败。这时候最耗时间的不是修复,而是判断问题出在哪一步——是回编的结果本身有问题,是对齐没做,还是签名没写进去?手工流程里,这三件事的执行痕迹往往混在同一段终端输出里,翻回去看也未必分得清。把出包拆成四个固定步骤、留下三份分层产物,意义就在这里:出了问题,你能立刻知道该看哪一份。
一、四步流水线全景:每一步各管一段
先用一张表把四步的职责列清楚。注意第四列——它记录的是每一步留下的产物,这也是流水线「可复盘」的基础:出了问题,你可以顺着产物往回找,而不是重新猜一遍。
| 步骤 |
执行什么 |
解决什么问题 |
留下的产物 |
| 回编 |
apktool b |
把项目里的改动重新组织成一个可安装的包 |
build\unsigned.apk |
| 对齐 |
zipalign -p 4 |
让包内资源按 4 字节边界对齐,保证安装后的读取效率 |
build\aligned.apk |
| 签名 |
apksigner + testkey |
给包签名,让设备认可这个包的来源与完整性 |
build\signed.apk |
| 校验 |
apksigner verify |
确认签名结果真的生效,而不是「看起来跑完了」 |
pack.log 中的校验结果 |
从这张表能看出一个很清晰的分工:前三步都在「做事」,第四步在「检查事做成了没有」。这不是重复劳动,而是把「执行」与「确认」分成两个独立环节。现实中最贵的错误从来不是执行失败——执行失败会当场报错;最贵的是执行「看起来成功了」,但你其实并不知道它成没成。第四步存在的全部理由,就是消除这种模糊地带。
四步之间的顺序同样不能随意调换。回编产出 unsigned.apk,对齐以它为输入产出 aligned.apk,签名再以 aligned.apk 为输入产出 signed.apk——每一步都依赖上一步的结果,形成一条单向的链条。这条链条的约束不只是「文件要有」,更是语义上的:对齐必须在签名之前完成,因为签名会覆盖包的内容,先签名再对齐等于让签名失效。把顺序写死在流程里,这类「看起来没问题、实际已经失效」的错误就没有发生的空间。
另外一个容易被忽略的事实是:这四步并不需要你逐个去点。AI 改完之后留下的标志文件被主窗口轮询到,打包窗口会自动弹出,四步连着跑完。你唯一需要判断的是「结果对不对」,而不是「下一步该不该开始」——把判断留给人,把衔接交给流程,是这条流水线最基本的设计取向。
触发打包的时机也不用人盯:AI 改完之后会在项目目录留下一个标志文件 ai_done.flag,主窗口每 2 秒轮询一次,读到就自动弹出打包窗口。你不需要守在屏幕前判断「它改完没有」,四步流水线会在合适的时机自己开始。
二、第一步回编:把改动变回一个可安装的包
回编由 apktool b 完成。它的输入是项目目录里那份被反编译、被修改过的工程,输出是一个 unsigned.apk。很多人把这一步理解成「压缩打包」,其实它的工作量比压缩大得多:资源要重新索引、清单要重新组装、代码与资源的引用关系要重新对上。换句话说,你在项目里做的所有改动,都要在这一步被重新整理成设备能理解的结构。
回编把改动的结果重新组织成一个可继续处理的包,产物是 unsigned.apk
正因为这一步承担了「重新组织」的职责,它也是最容易暴露改动问题的地方。改了资源但引用没同步、代码里引用了不存在的资源、清单结构被破坏——这些问题通常都会在回编阶段现形。流水线把它放在第一位执行,好处非常直接:问题在最早的环节被拦住,就不会带着错误一路走到签名之后才炸出来。越往后面的步骤,排查成本越高,因为你要在一堆已经处理过的产物里找线索。
还有一点值得注意:unsigned.apk 这个名字本身就说明了它的地位。它是「已回编、未签名」的中间产物,可以直接拿来做比对——比如你怀疑某个改动没生效,可以把这份产物和上一轮的产物放在一起看看差异,而不必等到签完名之后再回头找。分层产物的好处正在于此:每一份都对应一个明确的中间状态,你可以在任何一层停下来检查。
如果回编这一步没有跑通,通常不是打包流程的问题,而是改动本身与包的结构发生了冲突。这时候正确的做法是回到项目里看改动内容,而不是反复重跑打包——重复执行同一个会失败的步骤,除了浪费时间之外不会有新的信息。流水线把失败拦在这一步,其实也是在保护你的时间:它没有把错误带到后面更多步骤里去。
顺带说一句项目侧的准备:反编译本身是建项目时完成的,解析和反编译都跑在后台线程,界面不卡。实测 12MB 的包反编译约 3 秒,超过 10 分钟会中断并报错,不会无限挂着让你干等。反编译失败也不影响项目本身——配置、图标、源包已经落地,会提示原因并给出日志路径。这些设计的意义在于:把「等待」和「失败」都变成有边界、有反馈的事情,而不是让你对着一个没有反应的界面猜。
三、第二步对齐:zipalign -p 4,最容易被跳过的一步
对齐由 zipalign -p 4 完成,输入是上一步的 unsigned.apk,输出是 aligned.apk。它的作用是把包内的资源按 4 字节边界排列。为什么要这么做?因为设备在读取包内资源时,对齐的数据可以更直接地被映射和使用;不对齐的包虽然常常也能装上,但读取过程中会多一些额外处理,代价体现在运行时的表现上。
对齐这一步不会「让功能变多」,但它决定了包在设备上的读取姿态
这一步之所以最容易被手工流程跳过,原因有点微妙:它跳过之后,包通常还是能装上的。装不上会立刻被发现的步骤,人们不会省;而「省了也看不出问题」的步骤,就很容易被当成可选项。但工程上的事往往如此——当下看不出差别,不代表没有差别,只是差别被推迟到了使用过程中。
把它固定进流水线的价值就在这儿:不给你跳过的机会。四步是固定执行的,从回编到对齐到签名,一步接一步,不存在「这次赶时间,对齐先不做了」这种状态。对经常出包的人来说,这种确定性比省下几秒钟重要得多——你不需要每次都重新做一遍「这步要不要省」的判断。
对齐还有一个容易被忽略的特点:它是一次「无损处理」——不对包的功能做任何增减,只调整内部数据的排列方式。正因为无损,它在手工流程里才显得「做不做都行」;也正因为无损,把它固定进流水线几乎没有代价。这类步骤的处理原则其实很清晰:收益可能不显眼,但不做的风险是实打实的,那就应该默认执行。
手工流程里,「这步要不要跳过」是一个每次都要重新做的判断;流水线里,这个问题在第一次设计时就被回答完了。省下的不只是那几秒,还有每次做判断时的注意力。
四、第三步签名:apksigner + testkey,以及可替换的密钥
签名由 apksigner 完成,输入是对齐后的 aligned.apk,输出是 signed.apk。为什么要签名?因为设备需要确认「这个包来自谁、有没有被改动过」。没有签名的包在设备上通常无法正常安装,这也是为什么「签不上」是出包环节最致命的问题——它直接决定这一轮的结果能不能被安装。
签名用的密钥是工作目录根目录下的 testkey.pk8 / testkey.x509.pem。这两个文件是可以替换的,这一点对团队尤其重要:如果你所在的组织有统一的签名身份,把密钥换成自己的一套,出包结果就能与现有分发体系保持一致,后续的安装、覆盖升级不会因为签名身份不同而互相排斥。
需要提醒的是:默认使用 testkey 是为了让流程先跑通。正式对外分发之前,请务必换成你自己的密钥,并妥善保管——签名身份一旦丢失,后续用不同密钥出的包在设备上会被视为「另一个应用」,无法覆盖安装。这类问题的代价远高于一次改包本身。
签名失败的表现形式也值得一提。它不像回编失败那样常常直接抛错,更多时候是「看起来做完了」,但结果并不可用:包生成了,却无法被设备认可;或者能装上,但与其他版本的包无法互相覆盖。这类问题的共同点是——只有在你真正去使用这个包的时候才会暴露。这就是为什么流水线要在签名之后立刻接一步校验,把「能不能用」这个结论提前到今天拿到,而不是留到明天装机的时候。
签名与对齐的先后顺序不能颠倒
流水线的顺序是「先对齐、后签名」,这不是随意安排:签名会覆盖包的内容,所以对齐必须在签名之前完成。如果顺序颠倒,先签名再对齐,签名就失效了——包看起来是签过的,实际已经不再匹配。手工操作时,「顺序颠倒」和「跳步」一样常见;写死在流水线里,这两类错误就都没有了发生的余地。
五、第四步校验:为什么前三步都成功了,还要再验一次
这是全文最需要说清楚的一步。回编、对齐、签名三步跑完之后,一切看起来都很顺利:命令执行了,也没有报错,产物也生成了。那为什么还要再跑一次 apksigner verify?
答案就藏在前三步的「判断依据」里:前三步都只看退出码。退出码是一个很粗的信号,它能区分「程序崩了」和「程序没崩」,但它并不能说明「业务上真的做成了」。打包这类任务里,最典型的落差是:签名命令正常结束,退出码也是正常的,可包里的签名信息并没有真正写入。这时候如果你只看退出码,就会得出「签好了」的结论——而实际上,这个包能不能装、能不能被系统认可,都是未知的。
前三步回答「有没有跑完」,verify 回答「到底签没签上」
把退出码的局限说得再具体一些。退出码正常,可能对应三种完全不同的实际情况:第一种,一切真的做成了,这是你希望的那一种;第二种,某个中间环节被跳过了,程序照样走到了最后,退出码自然正常;第三种,过程跑完了,但结果并没有真正写进产物里——签名类的操作尤其容易出现这种落差,因为「签名动作执行过」和「签名信息存在于包里」本来就是两件事。只看退出码,你无法区分这三种情况,而它们对「这个包能不能用」的结论完全不同。
- 退出码能告诉你:命令有没有执行完、有没有在过程中崩溃、有没有明显的参数错误。
- 退出码不能告诉你:签名信息是否真的写入、写入的签名是否有效、这个包是否真的能被设备认可。
- verify 要做的:绕开过程的中间状态,直接去看产物本身,给出一个关于结果的判断。
所以第四步的设计逻辑是:把它从「退出码」这个粗粒度信号,换成「工具自己给出的验证结论」这个细粒度信号。apksigner verify 会去检查包里的签名信息是否存在、是否有效、是否符合要求。它给的是关于结果本身的判断,而不是关于过程是否跑完的判断。用一句话概括就是:前三步看的是「命令有没有跑完」,verify 看的是「到底签没签上」。
把这一步省掉会怎样:省掉它,你得到的是一个「看起来成功」的包。你会带着它去装机,然后大概率遇到一次「安装失败」;等你回头排查时,前面三步的现场已经过去,你只能重跑一遍流程,再赌一次。保留它,代价是几秒钟,收益是把结论从推测变成确认。
还有一个问题值得正面回答:会不会有人觉得「多跑一次校验,是不是说明前面的步骤不可信」。这个理解是反的。恰恰因为前三步是标准工具、标准参数在执行,它们的结果才值得被确认——确认的成本只有几秒,而确认之后你可以放心把包拿去用。真正不可信的不是工具,而是「跑完了就等于成功」这个推理本身。把推理换成验证,是对整条流水线的加固,而不是对它投不信任票。
再从失败成本的角度算一笔账。如果在出包阶段就发现了「签名没生效」,你要做的是回头检查参数或环境,然后重跑一次四步;如果这一步被跳过,问题会被推迟到装机阶段,你面对的是「安装失败」,而这时候你手上唯一的线索是一个已经跑完的流程,排查方向不明。同样一个问题,暴露的位置不同,处理成本差了一个量级。让问题尽量在最早、信息最全的位置暴露,这本身就是一种效率设计。
手工流程里 verify 被省掉的两个心理原因
- 「命令都跑完了」:把执行完成等同于结果正确,中间少了一次对结果的直接检查。
- 「上次也是这样」:上一轮的包能用,就默认这一轮的包也能用——但每一轮的环境、参数、文件状态都可能不同。
流水线把这一步固定下来,等于把这两个心理倾向都绕开了:不需要你判断要不要验,它一定会验。
换个角度看,第四步其实是在替你做一件你本来必须做的事:为出包结果给一个可信的结论。手工流程里,这个结论通常来自「我跑过了,应该没问题」——一种基于经验的推测。流水线把它换成工具给出的实际校验结果,推测变成了证据。这就是为什么说,验证这一步不是「多做的」,而是「唯一给出确定答案的那一步」。
三种角色的分工,一次说清
| 角色 |
关心的问题 |
结论粒度 |
| 回编 / 对齐 / 签名 |
命令有没有跑完 |
过程信号(退出码) |
| apksigner verify |
签名到底有没有生效 |
结果信号(验证结论) |
| 你 |
这次改动是否达到预期 |
装机预览的实际效果 |
这张表也解释了为什么流水线不把「验证」合并进签名步骤里。合并之后,你得到的仍然是一个「签名这一步成功了没有」的信号,仍然分不清「命令跑完了」和「签名生效了」。把它单列成一步,信号才被真正地区分开——这也是整个四步设计里最值得琢磨的地方:步骤的划分不是按操作量来的,而是按「能得出什么结论」来的。
拿到 verify 的结论之后,正确的用法是把它当成一道门:结论没问题,继续往下走,保存产物、装到设备上看效果;结论有问题,立刻停在签名这一步处理,不要抱着「说不定装上也能用」的心态继续。原因很简单——校验给出的判断是关于最终产物的,产物不合格,后面无论走多远都不会变好。把它当成门而不是参考意见,这一步的价值才能完整兑现。
还有一件事需要澄清:verify 通过并不等于「改动符合预期」。它确认的是包本身的状态(签名是否生效),而不是你的需求是否被正确实现。这两件事需要分别确认——包的状态交给流水线,改动的效果交给你在设备上的验收。把两类判断分清楚,出问题时就不会在错误的方向上查半天。
六、产物与日志:三份文件、一份日志、一条标记
流水线跑完之后,项目目录里会留下三份产物:build\unsigned.apk、build\aligned.apk、build\signed.apk。它们对应四步中的三个关键节点,你可以清楚地知道每一份的来历——哪一份是刚回编出来的、哪一份是已经对齐的、哪一份是签过名的。这种分层不是为了好看,而是为了排查:装机出问题时,「哪一步的产物有问题」比「整个流程有问题」更容易定位。
整个过程同时写进项目目录的 pack.log。日志的价值在于把「一次性的执行过程」变成「可回看的记录」:签名那一步到底说了什么、校验的结果是什么、每一步的顺序有没有异常,翻日志比重新跑一遍快得多。
- 打包过程中窗口不给关——避免你以为它没在跑,误关之后前功尽弃。
- 跑完可以「保存 APK」,默认文件名是 应用名_版本号_signed.apk;也可以直接「打开所在文件夹」。
- 每次出包前,会自动往 res/values/styles.xml 写入一个 name="info" 的样式,内容是把时间、登录账号、机器码、机器名、系统用户名、程序版本、应用名、包名等编码后的标记。
- 签名密钥来自工作目录根目录下的 testkey.pk8 / testkey.x509.pem,可替换。
再说日志。pack.log 记录的是「这一次出包发生了什么」,它的格式可能不漂亮,但它完整。当你需要回答「这次签名用的是什么参数」「校验那一步的结论是什么」这类问题时,日志是最快的答案来源——比重新跑一遍流程、再观察一次现象要快得多。日志的价值不在于日常查看,而在于出问题那一刻它已经替你记住了现场。
如果出包过程出现异常,排查的顺序建议是:先看项目目录下的 pack.log(打包过程),再看 %LocalAppData%\ApkGallary\dock.log(吸附过程与打包过程),以及异常日志 error.log。这三处基本覆盖了出包链路的所有环节,从日志入手通常比重新装一遍程序有效得多。此外,「参数设置」页里可以做工具链体检,aapt / java / apktool / zipalign / apksigner 会逐个报是否就绪与完整路径;环境不齐时点「立刻更新」会自动下载并解压工具包(7z 格式),装完重新检测——出包失败有不少其实是环境缺件导致的,先体检一遍能排除掉一大类原因。
那条写入 res/values/styles.xml 的 name="info" 标记,可以理解为「出包指纹」。它不影响应用的任何功能,只记录这次出包的归属信息:什么时候出的、由谁出的、在哪台机器上出的、对应哪个应用与版本。对需要在多个测试机上并行验证的团队来说,这一条解决的是「手上这个包到底是哪一版」的问题——而这种问题在内测阶段几乎每天都会遇到。
把四步各自「出问题时长什么样」列成一张表,出问题时可以直接对照着排查,不必从头猜起:
| 步骤 |
异常时的典型表现 |
排查方向 |
| 回编 |
产物没有生成,或生成过程直接报错 |
回到项目里检查改动内容与资源引用是否一致 |
| 对齐 |
过程安静,产物也生成了,看不出问题 |
确认这一步确实被执行过,而不是被跳过 |
| 签名 |
包生成了,但设备不认可,或与其他版本无法覆盖 |
检查密钥文件的替换情况与签名参数 |
| 校验 |
直接给出签名是否有效的结论 |
按结论回到签名步骤处理,不要带着问题继续往后走 |
出包的可靠性,一半来自正确的步骤,另一半来自可回看的证据。三份产物加一份日志,就是这条流水线留下的证据链。
七、出包之后:把它装到设备上,确认真的跑起来了
包出来之后,最后一件事是看效果。工具在这里同样把能自动化的部分做掉了:用 adb 找手机或模拟器,装上并拉起应用。但这一段里有两处设计,恰好和第四步校验的思路一脉相承——都是「不要用间接信号代替直接结论」。
装上去不等于跑起来:拉起用 am start,装完用 dumpsys 确认前台应用
第一处是拉起的命令:用 am start 而不是 monkey。原因有两个,都很实际——新版安卓镜像里已经没有 monkey 了;而且它失败的时候,退出码还是 0,很容易被误判成成功。这和「只看退出码」是同一个问题的两种表现形式:用一个不可靠的信号去判断结果。为了让拉起尽量稳定,启动页组件名分三档查找:项目 config.ini 里的 LaunchableActivity → 问设备 resolve-activity → 退回 monkey。三档依次降级,尽可能找到能用的入口。
第二处是装完之后再确认一次:用 dumpsys 看一眼前台应用是不是它。这一步等价于设备侧的 verify——安装命令退出码正常,不代表应用真的被拉到了前台;直接用系统状态确认一遍,才是「真的跑起来了」。这两处细节放在一起看,会发现整条链路贯穿着同一种态度:凡是能直接确认的,就不要靠推测。
设备这一步的常见阻碍,其实大多不在应用本身,而在「设备有没有准备好」。adb 没认出设备、模拟器装了但没启动、设备没有授权——这三类问题会让人误以为是包出了问题,实际上是连接问题。工具在这里的处理方式是尽量把判断做在前面:adb 找不到已连接的模拟器时会自动扫端口尝试连上;模拟器装了但没有启动时,会搜出安装路径并问你愿不愿意现在帮你在打开;设备没有授权时,会提示你去手机上点「允许 USB 调试」。把连接问题和包的问题分开,是判断效率的前提。
- 手机走 scrcpy 投屏到电脑,方便在电脑上直接操作与观察;模拟器则把窗口提到最前面。
- 常见国内模拟器(雷电 / MuMu / 夜神等)装了但 adb 没连上时,会自动扫端口连上。
- 模拟器装了没开,会搜出安装路径并问你要不要现在帮你打开。
- 设备没授权,会提示你在手机上点「允许 USB 调试」。
设备预览这一段其实还有一层价值:它是你唯一能直接看到改动效果的地方。前面所有的校验都在回答「包本身有没有问题」,只有装到设备上跑起来,才能回答「改动是不是你要的那个效果」。所以建议的顺序是:先让流水线把包出好、把结果确认好,再去设备上验收效果——如果包本身都还没确认,就去讨论效果对不对,很容易把两类问题混在一起,最后既不知道是包的问题还是改动的问题。
另外,设备侧的日志同样值得看。装完用 dumpsys 确认前台应用是不是它,本质上是绕过「命令成功」这个间接信号,直接读设备状态。当应用没有如期出现在前台时,这条确认信息能立刻把问题范围缩小到「启动入口不对」还是「应用本身没起来」,而不是笼统地卡在「为什么没弹出来」。查问题的效率,往往取决于你能多快把范围缩小。
对经常做多机型验证的人来说,还有一个省事的点:手机走 scrcpy 投屏到电脑,操作与观察都在电脑上完成,不必反复拿起手机;模拟器则会被提到最前面,切窗口的时候不需要自己去任务栏里翻。这些都不属于「打包四步」的范畴,但它们决定了这条链路在真实工作节奏里顺不顺手。一条链路的价值,最终要按「用它的人一天能少做多少无谓动作」来衡量。
这些细节看起来都离「打包四步」很远,但它们解决的是同一个问题的后半段:包出来了、装上了、应用起来了,这一轮改动才算真正被验证。整条链路可以概括成一句:验证关不只在最后一道,从出包到装机,每一步都在把「应该没问题」换成「确认没问题」。
完整的出包链路
AI 改完留下 ai_done.flag → 主窗口轮询到,自动弹出打包窗口 → 回编(apktool b)→ 对齐(zipalign -p 4)→ 签名(apksigner + testkey)→ 校验(apksigner verify)→ 保存 APK 或打开目录 → 装到手机 / 模拟器并拉起 → 看到效果。
八、用户评价、合规提醒与收尾
出包这件事的特殊之处在于:它的结果要过一段时间才被使用。你改完一个包,可能当天就装机看效果,也可能先存着,等测试排期到了再装。这中间隔得越久,你对「这个包当初是怎么出来的」的记忆就越模糊。所以真正可靠的方案不是记住过程,而是让过程留下痕迹——四步执行、三份产物、一份日志,再加上那条写在包里的出包标记。这条痕迹链的价值,会在你第一次需要回头查的时候体现出来。
在反馈里,「多做一步」这个设计被提到的次数出人意料地多。多数人不关心它用的是什么命令,只关心「这次出的包能不能放心用」。
「我最怕的就是命令跑完了、没报错、然后装不上。现在它会自己 verify 一遍再告诉我,我不用再靠猜。」
—— 老周 · 安卓逆向爱好者
「对齐这步我以前老是漏,包也能装,就一直漏着。写进流水线之后反而省心了,不用每次都纠结要不要跳。」
—— 周工 · 移动端开发工程师
「三份产物分着放这点很实用。装机出问题的时候,我知道该拿哪一份去比对,而不是整个流程重跑一遍。」
—— 何工 · 测试工程师
「密钥能换成我们自己的,这一条让我们敢拿去发给内测同事,不用再单独走一遍签名流程。」
—— 邓主管 · 企业内测负责人
「装完还会去看一眼前台是不是它。以前我点了启动、看界面没出来,得自己敲命令查半天。」
—— 小何 · 手游美术转工具向
「以前出了包装不上,我得把回编、对齐、签名重跑一遍再看是哪一步。现在每一步都有产物,对着看就行。」
—— 老韩 · 安卓工具链维护
反馈汇总(用户主观反馈整理)
| 出包环节比手工更放心 | 91% |
| 四步固定执行、无需记参数 | 90% |
| verify 校验让人安心 | 87% |
| 产物分层与日志便于排查 | 85% |
以上百分比为主观反馈的整理表达,不构成效果承诺。
最后把整篇的思路收一下。四步流水线之所以这样设计,核心只有两条:第一,把顺序与参数写死,让每一次出包的过程都一样;第二,在过程之外单独留一步,专门回答「结果到底对不对」。前一条消除了「这次要不要跳步」「顺序有没有搞反」这类每次都出现的判断,后一条则把结论从推测变成验证。多做的这一步,恰恰是整条链路上唯一一个以「确认」为目的的环节——它不产出文件,但产出一个你可以放心依赖的结论。
使用前还有几件事值得提前知道:导入 APK、编辑项目、充值需要先登录,登录窗口支持微信扫码 / QQ 扫码 / 账号密码;大师币不足时,导入 APK 与编辑项目不受影响,只有详情页点「立刻修改」和「去打包」才会提示充值;充值套餐来自服务端,支付用外部浏览器打开支付宝 / 微信,程序每 3 秒轮询一次付款结果。用户中心里可以看到资料卡、会员权益与项目统计(项目数量 / 修改总次数 / 占用空间 / 所在磁盘剩余)。如果出包过程中出现异常,先看项目目录的 pack.log 与 %LocalAppData%\ApkGallary\dock.log,比重新装一遍程序有效得多。
合规提醒:本工具面向自有版权或已获授权的应用,用于学习研究与企业内测等合法场景,请勿用于破解他人付费应用或绕过安全机制。出包时会写入 name="info" 标记、签名默认使用可替换的 testkey,请在正式分发前确认密钥与使用场景均符合你的授权范围。
想验证这条流水线值不值,最简单的办法是出一个包,看它有没有替你把那一步 verify 做完。
回编、对齐、签名、校验四步走完,产物、日志、设备预览都在同一个项目目录里——这条链路是否顺手,出一次包就知道了。