只需说话,就能让应用变成你想要的样子
安卓修改大师智改工坊 · Windows 桌面端 · 拖入安装包,用中文写需求
先把本文的主角交代清楚。安卓修改大师智改工坊是一款 Windows 桌面工具,把「改 APK」压缩成一句话:拖入安装包,用中文写需求,AI 改 smali 与资源,改完自动回编、对齐、签名、校验,最后一键装到手机或模拟器上看效果。它的介绍页在 https://www.apkeditor.cn/ai-version.aspx,官网是 www.apkeditor.cn。
绝大多数改包教程都在教「怎么改」,很少有人认真讲「改完怎么装、怎么验」。可实际干活的时候,卡人的往往不是改,而是最后那一下:包打好了,装上去提示签名冲突;装是装上了,打开一看还是旧图标;换台机器装,报版本太低装不进去。这些问题的答案,一半写在工具的装机链路里,一半取决于你做的那个选择 —— 这一轮到底是覆盖安装,还是卸载重装。
这篇文章分四块讲:第一步先分清覆盖安装与卸载重装各自在做什么、适合谁;第二步把工具从「列设备」到「复核前台应用」的整条链路拆开,逐步说清每一步在验证什么;第三步讲覆盖安装被拒的三种典型冲突怎么判断;第四步给一张两栏决策表和「干净验证一次」的理由。最后配两个自家应用的实例,把这三件事串起来看一遍。
同一个改好的包,「覆盖」和「卸载重装」是两条不同的路:一条留住数据,一条换来干净
一、这是两次决策,不是一次点击
先说清楚一个容易混的地方:工具的「打包后自动运行」替你做了一串动作 —— 找设备、装包、拉起应用、把画面送到你眼前,全程不用敲命令。但这条流水线上有两个决策,工具替不了你:
决策一:这一轮,用覆盖安装还是卸载重装?
覆盖安装快、保留数据,但会保留旧状态;卸载重装慢、清数据,但状态干净。默认永远先走覆盖,只有覆盖走不通、或者你主动要求「干净」的时候,才轮到卸载重装。
决策二:验证到什么程度算过关?
「装上了」和「改对了」是两回事。看一眼桌面图标是验证,把应用打开、确认它真的在前台跑起来也是验证,把整个链路的日志对一遍还是验证 —— 三档成本不同,用哪一档取决于这次改动的分量。
先把两条路的本质讲清楚。它们的差别不在「命令不同」,而在系统怎么处理应用已经存在的那份数据:
| 对比项 |
覆盖安装(install -r) |
卸载重装(uninstall + install) |
| 应用数据 |
保留:登录态、本地设置、本地缓存都还在 |
清空:那个应用的本地数据全部被抹掉 |
| 速度 |
快:一次替换,通常几秒到十几秒 |
慢:两次操作,重装后往往还要重新登录、重配 |
| 对改动的「可归因性」 |
弱:旧状态可能混进来,出问题要多问一句「是不是旧的在捣乱」 |
强:变量只剩你的改动,效果好不好就是改动本身说了算 |
| 换签名之后能不能装 |
不能:签名不一样一定会被系统拒绝 |
能:卸载之后就是一次全新安装 |
| 适合谁 |
日常迭代:改一次、装一次、看一眼,节奏快 |
里程碑与排查:发版前、疑难问题、交给别人之前 |
有个说法很贴切:覆盖安装像给运行中的服务打热补丁,卸载重装像冷启动重装。 热补丁快,但你面对的是一台「已经被用过」的机器;冷启动慢,但面对的是一个干净的初始状态。两种都不可替代 —— 问题从来不是哪个更好,而是这一轮你更需要哪一个。
还有一条容易被忽略的物理事实:覆盖安装省下的是「你这个应用」的数据准备时间,不是省下系统的时间。所以覆盖安装真正的价值有两块:一是数据不用重建(对内部工具、测试机尤其值钱),二是同一个包反复装、反复看效果时,节奏不断。这也解释了为什么默认策略必须是覆盖 —— 日常干活里,你九十次装机里可能只有一次需要「干净」。
二、装机链路拆开看:每一步都在替你验证一件事
勾上「打包后自动运行」,工具会在打包完成后自动往下走。这条链路一共六步,每一步解决的是一个具体的怀疑,而不是「顺手多做的事」。懂它,你才知道失败的时候该看哪一条。
第 1 步:adb 列设备 —— 先确认「装给谁」
工具第一件事是 adb devices -l,把当前连着的手机和模拟器列一遍,并逐台看状态:
- device:可用,能装包;
- unauthorized:设备连上了,但没在手机上点「允许 USB 调试」。工具会明确提示你解锁手机、在弹窗里点允许,然后再点一次「去打包」;
- offline:设备在列表里但通不了,一般是模拟器刚起来或者被别的 adb 版本占着;
- 同时连着手机和模拟器时,两边都会装,不会二选一 —— 这对「手机上看真机效果、模拟器上看大屏效果」的团队很实用。
国内模拟器大多不在设备列表里,因为它们要先用 adb connect 连进来。工具在这里做了两层处理:先问系统「这台模拟器的进程正在监听哪些端口」,逐个端口试连;认不出来才退回按各家惯例端口扫一遍(雷电 5555 起、MuMu 7555 起、夜神 62001 起……)。为什么先问进程、再扫惯例端口? 因为端口是可以被用户改的,也是会随实例数变化的(雷电每个实例 +2),惯例表只能当兜底,不能当答案。
这一层里还有两个很克制的细节,值得单独说。第一个是「连错了要擦干净」:模拟器除了 adb 端口还监听别的端口,扫端口时会连上一些「其实不是 adb 端口」的口,adapter 里会留下一条 offline 的假设备。工具的收尾会把「我们刚连出来的、状态是 offline 的回环设备」断开,不脏你的 adb 列表。第二个是「同一台机器只装一次」:adb 可能把同一台模拟器报两遍 —— 规范的 emulator-5554 和我们 connect 进去的 127.0.0.1:5555 其实是同一台(5554 加 1 就是它的 adb 端口)。不去重的话,同一台模拟器会被装两次,安装过程白白多跑一轮。
第 2 步:装包 —— 默认覆盖,遇到三种拒绝才退让
装包这条命令的形式是 install -r,-r 就是「替换已存在的应用、保留数据」。它被拒的时候,工具按三档退让(下一章展开):版本降级加 -d、调试包加 -t、签名冲突则如实汇报并征求你的同意。
这里有一个所有写自动化的人都踩过的坑:adb 的失败原因不能从「最后一行」读。它会先甩一句「Performing Streamed Install」,真正的失败原因写在带 Failure [INSTALL_FAILED_...] 的那一行里。工具是去输出里挑那一行,再翻译成人话 —— 例如把它翻译成「设备上已经装了签名不一样的同名应用,装不上去。先把它卸掉再点一次」。这就是为什么你能看到一句能读懂的原因,而不是一句「装不上:Performing Streamed Install」。
第 3 步:拉起应用 —— 为什么是 am start 而不是 monkey
装完要打开它,这一步的「教科书做法」是 monkey,但工具不用 monkey 当主力,理由很硬:新版 Android 镜像里已经没有 monkey 这个命令(实测某模拟器的 Android 12 镜像里直接是 monkey: inaccessible or not found),更麻烦的是它失败的时候退出码仍然是 0 —— 光看退出码会把「根本没打开」误判成「打开成功」。于是表现就是「装上了但没动静」,你还以为是改坏了。
工具用的是 am start -W -n 包名/Activity。这里 -W 是关键:它让 am 等应用真正启动完再返回一段可判读的结果,而不是「命令发出去了」就算完。
第 4 步:组件名三档查找 —— 拉起的目标从哪来
要用 am start 就得知道「入口 Activity 是谁」。工具按三档找,顺序就是可靠性顺序:
- 第一档:项目 config.ini 里的 LaunchableActivity。这是导入 APK 时用 aapt 从包里读出来的启动页,最准,也最省事;
- 第二档:问设备。用
cmd package resolve-activity --brief 包名(Android 7 以上都有),从返回文本里挑出「没有空格、带斜杠、包含包名」的那一行 —— 那是设备自己给的答案;
- 第三档:monkey 兜底。前两档都拿不到才退回 monkey,纯粹是为了兼容老设备,而且它「命令不存在」也会被当成失败如实报出来,不会假装成功。
这一套的工程意义在于:它不依赖任何单一来源。 分包包、被改过清单的包、老设备上的包,任何一档失效都还有下一档,全失效才告诉你「只能手动点开应用」。
第 5 步:判定「算不算启动成功」
am 的返回不是给你看的,是给程序判的。工具判两件事:输出里有没有 Error:、Exception、Permission Denial、unable to resolve、not found 这类字样(有就判失败,并把那一行原文给你);有没有 Status: ok(不是 ok 就说明设备回了别的状态)。老设备上的 am 可能没有 -W 那套输出,这时不硬判,先当起来了 —— 因为后面还有第 6 步兜着。
第 6 步:dumpsys 复核前台应用 —— 这是最后一道防线
这是整条链路里最值钱的一步。工具会跑一次 dumpsys activity activities,在输出里找 topResumedActivity(老系统上是 mResumedActivity)这一行,看它是不是你的包名。
「命令返回成功」和「应用真的显示出来了」是两回事。 有的机型会拦一下、有的应用起来之后自己又切回了桌面(比如它检测到环境不对主动退出),这时候 am 可能没报错,但屏幕上的确没有你的应用。dumpsys 读的是系统对「当前前台是谁」的判定,这一眼才算数。
工具对这个结果的处理也很有分寸:如果应用起来了但没到前台,不算失败,只记一笔日志。因为「切回桌面」有时是应用自己的行为,不是装包或拉起的失败;把它判成失败会导致包里明明没问题却给出吓人的报错。技术上的诚实,有时候就是「报你知道的,而不是报你想当然的」。
链路最后还有一段锦上添花:手机走 scrcpy 把屏幕投到电脑上,模拟器则把它的窗口提到最前面(按进程名、窗口类名、标题关键字三条线索认窗口)。为什么要做这一步?因为「验证」这件事必须发生在你眼前 —— 装到了设备上但你看不见,等于没验证。
列设备 → 装包 → 拉起 → 复核前台 → 送到眼前:每一步都消灭一个具体的「不确定」
把这六步收成一张表,你就能在失败的时候一眼定位:
| 步骤 |
它证明的事 |
它证明不了的事 |
| adb 列设备 |
设备在线、可装(device) |
设备够不够空间、包合不合法 |
| install -r |
包被系统接受并落地了 |
改动有没有生效(可能被旧缓存盖住) |
| am start -W -n |
启动命令被系统执行了 |
应用是不是真的停在屏幕上 |
| dumpsys 复核 |
它确实是当前前台应用 |
界面内容对不对(那要你自己看) |
| scrcpy / 置顶 |
效果真的送到了你眼前 |
与「覆盖安装是否干净」无关 —— 这一条要靠你决策 |
三、覆盖安装被拒的三种典型冲突:怎么判断、怎么办
覆盖安装不是每次都能过。被拒的时候,错误行里通常带着一个以 INSTALL_FAILED_ 开头的常量名,它就是判断依据 —— 不需要猜,也不需要反复重试。工具已经替你处理了其中两类,第三类必须你自己拍板。
冲突一:VERSION_DOWNGRADE —— 设备上装着更高的版本号
典型场景:测试机上装的是应用商店里那份(比如 v9),你手上打的是自研分支的 v6,版本号比它还低。系统默认拒绝「降级」。工具的做法是自动加一次 -d 允许降级重装(数据保留),装成了会在结果里注明「设备上是更高版本,按降级覆盖安装」。你要注意的是「允许 ≠ 应该」:降级之后,应用自己存的数据是「更高版本写过的」,如果那个版本升级时动过数据格式,降级版本读它就可能出问题 —— 这种情况下更稳的做法是卸载重装。
冲突二:TEST_ONLY —— 这是个带调试标记的包
有些包在清单里带着 android:testOnly 标记(构建系统用它防止调试包被当成正式包分发)。系统会拒绝这种包。判断依据就是错误行里的 TEST_ONLY;工具会自动加 -t 再装一次,通常就过了,不需要你做什么。
冲突三:UPDATE_INCOMPATIBLE —— 签名不一样(这个只能你决定)
设备上那个应用的签名,和你刚打的包的签名不是同一套(最常见的原因:设备上装的是商店版本,你手上是自签版本)。这种情况没有退让空间 —— 覆盖安装永远过不去,唯一的出路是先卸载。 工具会把它翻译成人话「设备上已经装了签名不一样的同名应用,装不上去」,同时弹一个确认窗口问你要不要「卸载并重装」,并且明确告诉你:卸载会清掉那个应用的数据。
为什么签名不一样就一定装不上?因为 Android 用签名来回答一个问题:「现在要替换的这个包,和已装的那个,是不是同一个作者发的?」 答不上来(签名不一致),系统就拒绝替换 —— 这是保护用户不被冒名顶替包刷掉的机制,不是可以绕开的步骤。也正因为这条机制存在,卸载重装才是那个「唯一出路」:卸载是一次删除,删除之后再安装就只是普通的新装。
除了这三种「冲突」,还有一种纯粹的资源问题也会让安装失败:INSTALL_FAILED_INSUFFICIENT_STORAGE。工具会直接告诉你「设备存储空间不够了,清一点空间再试」—— 这种情况别去卸载,它跟应用本身没关系。
版本降级可以退让、调试标记可以退让,签名冲突没有退让空间
四、两栏决策表:这一轮到底选哪条路
原理讲完,落到操作上就一句话:平时覆盖,关键时刻干净一次。 下面这张表按「你的处境」来组织,不需要记命令,对着自己的场景找一行就行。
| 你的处境 |
怎么选 |
为什么 |
| 改个图标、改句文案,想看效果 |
覆盖安装 |
改动面小、可归因,没必要付重建数据的代价 |
| 测试机上还有别人/你自己的测试数据 |
覆盖安装 |
卸载重装会清数据,别人回来发现数据没了,比装不上更糟 |
| 遇到签名冲突 |
必须卸载重装 |
没有别的路;先在弹窗里确认,再让它自动走完 |
| 要发版 / 交给别人 / 上培训演示 |
干净验证一次 |
消除「旧状态在捣乱」这个变量,别人复现不了的问题大多是它 |
| 效果看着不对,说不清是改漏了还是旧缓存 |
干净验证一次 |
一次干净验证就能把「是不是缓存」这个问题永远划掉 |
| 只是想快速连改五轮、每轮看一眼 |
全程覆盖 |
节奏优先;最后收尾时再补一次干净的 |
还有一个「第三选项」值得知道:换一台干净的设备(或新建一个模拟器实例)来做验证,本质上是把「卸载重装」的成本转移到了另一台机器上 —— 你既能得到干净状态,又不动手头这台的数据。手边有闲置模拟器的时候,这是最舒服的干净验证法。
顺手把「决策二」也定下来:验证的三档成本
前面说验证也有决策,这里给一个可以直接照用的分档:
| 档位 |
你做什么 |
够用的场景 |
| 第一档:看一眼 |
装机、拉起、扫一眼屏幕上的结果 |
连着改五轮、每轮只想确认「这次比上次好」 |
| 第二档:走一遍 |
从桌面点进去,把这次改动的相关页面手动过一遍 |
改的是启动页、图标、应用名这类「看得见」的东西 |
| 第三档:干净走一遍 |
卸载重装(或换设备)之后,再走第二档 |
交给别人之前、排查说不清的问题时 |
这三档都不需要额外工具:第一、二档的「装机 + 拉起 + 投屏」链路工具已经替你跑完,你只要看;第三档无非是多点一次弹窗里的「卸载并重装」。真正要动脑的只有一件事:这一轮值不值得升档。 我的经验是「改动面越大、越接近交付,档位就越高」,而当你自己都说不清现象是不是缓存造成的时候,直接上第三档,别犹豫 —— 猜的时间比装的时间贵得多。
安装方式决定成本,验证档位决定结论的可信度 —— 两个选择都要自己拍板
工具在这条路上替你做掉的三件琐事
- 不用记包名。 卸载需要包名时,工具从项目的 config.ini 里取(导入时用 aapt 读出来的),你不需要回想它叫什么;
- 卸载—重装—拉起是一条连着的动作。 你在弹窗里确认之后,它会自动卸载旧版本、重新装、再拉起应用,连模拟器窗口置顶/手机投屏都接着做完,不用你回到「再点一次去打包」;
- 失败提示里直接给下一步。 签名冲突的提示里连命令行都写好了(
adb uninstall <包名>),想自己动手的也能照抄。
五、为什么「改完必须干净验证一次」
现在讲本文最想说服你的那件事。很多人改完包、覆盖装上去、扫一眼没问题,就认为「这个包没问题了」。如果是自己一个人用、只在这台机器上用,这没问题;但如果这个包要交给别人、要上测试清单、要进内部分发,你欠它的是一次干净验证。
理由有三条,一条比一条实际。
第一条:覆盖安装会留下「无法归因」的空间。 覆盖安装保留的不只是数据,还有系统里围绕这个应用积累下来的一堆旧状态。效果不对的时候,你面对的是一个「多变量」的现场:是改动没生效?是旧状态在起作用?还是两者叠加?每多一个变量,排查时间就不是多一半,而是翻几倍 —— 因为你要做的第一件事变成了「先复现,再排除」。
第二条:干净验证把变量收敛到只剩你的改动。 卸载之后,那个应用在设备上的痕迹被清空,再装上时它是一个「第一次出现」的应用。这时候如果还出问题,问题就一定在包里;如果一切正常,那么之前看到的「异常」就必然来自旧状态。一次干净验证,买到的不只是一个结论,而是「以后不用再怀疑这一层」。
第三条:干净验证是给「别人」做的。 你手上的设备有历史,别人的设备没有。你覆盖着装完看着好好的,到了同事那台新手机上可能就露出问题 —— 而你还得回头解释「我这明明是好的」。干净验证(换台设备 / 卸载重装)就是在替你模拟「第一次装上这个应用的人」。这个成本,比被人在群里追问两小时要低得多。
什么时候「必须」干净验证一次(清单)
- 这次改动要交给别人(发包、放内部下载页、给别人测试);
- 改动涉及图标、应用名、启动页这类「经常被系统缓存」的内容,且你怀疑它没生效;
- 出现过一个「说不清」的现象,而你想一次性判它是包的问题还是环境的问题;
- 这是这一批改动的最后一轮 —— 收尾那一轮值得多花五分钟。
反过来说,什么时候不必干净验证:改动只影响某个你自己一眼就能看到的页面、设备就是你自己的、而且你下一轮马上就要再改 —— 这时候覆盖安装的「快」才是你真正需要的东西。取舍的标准始终是同一句话:这一次的结论要给谁用。
平时覆盖求快,收尾干净一次求稳 —— 两种安装方式对应两种验证的严谨度
六、两个自家改包实例:把决策走一遍
下面两个例子都来自我们自己和同事的日常场景,改的都是自家应用、自家素材。重点看三件事:以前怎么做、现在一句话怎么做、改完怎么验证。
实例一:自家「记账助手」换图标,同事测试机上走覆盖安装
以前的做法。 设计那边给来新 logo 之后,是这么一条流水线:apktool 解包 → 把图标按 mdpi 到 xxxhdpi 逐档替换进 mipmap 目录(漏一档就会在部分机型上出现新旧图标混用)→ 回编 → 手动 zipalign → 手动用 apksigner 签名 → adb install -r 装到同事那台测试机上 → 手动在桌面上找到应用点开。整套十来分钟,而且是在编辑器、命令行、文件管理器三个窗口之间来回切着完成的。装机这一步还有个隐含要求:必须用 -r,因为那台测试机上存着同事两周的测试数据,卸了就得重录。
现在一句话。 把自家安装包拖进安卓修改大师智改工坊,在需求框里写「把应用图标换成附件里的新 logo,应用名改成『记账助手 2.0』」,把新 logo 作为附件加进去、写明用途(附件说明要求不少于 10 个字,就是为了避免「这文件干什么用的」只能靠猜),点「立刻修改」。AI 改完会自动弹打包窗口,四步跑完;勾着「打包后自动运行」的话,接着就是找设备、装包、拉起、投屏一条龙。
改完怎么验证。 这一轮用的是覆盖安装(默认就是 install -r),同事的数据没动;装完工具自动用 am start -W -n 把应用拉起来,再用 dumpsys 确认过前台确实是它 —— 手机屏幕通过 scrcpy 就投在电脑上,桌面图标和应用名一眼就能核对。验证的落点很明确:桌面上显示的是最终结果,不存在「资源改了但没生效」的盲区。
实例二:内部「巡检打卡」换签名,走一次卸载重装
以前的做法。 那是公司内部给巡检同事用的工具应用。有一阵子设备上装的是早期通过商店渠道装的版本,后来团队改成自签分发,签名就对不上了。表现是:包怎么装都装不上,报一行 INSTALL_FAILED_UPDATE_INCOMPATIBLE。当时的处理是手动两步:先 adb uninstall 包名(包名还得先去翻文档或者猜),再 adb install,最后自己伸手把应用点开。如果当时正好有同事在用那个应用记录数据,还得先问一句「你那边数据要不要先导出来」。
现在一句话。 同样是一句话需求加一次打包;装包这一步被系统拒绝之后,工具把 INSTALL_FAILED_UPDATE_INCOMPATIBLE 翻译成「设备上已经装了签名不一样的同名应用,装不上去」,并弹窗问要不要「卸载并重装」 —— 弹窗里说清了代价:会把那个应用的数据清掉。你确认之后,卸载、重装、拉起会自动连着做完。
改完怎么验证。 这一轮是干净的:设备上那个应用的所有痕迹都清掉了,装上去的是一次全新安装 —— 这正是实例一里说的「干净验证」。装完照例自动拉起、dumpsys 复核前台、手机投屏;团队那边再做一遍内部测试清单即可。顺带说一句:这次之后,那个应用的签名就统一了,往后同类改动回到覆盖安装的常规节奏,不会再碰到这个冲突。
两个例子放在一起看,正好是本文的两条结论:覆盖安装负责日常的「快」,卸载重装负责关键时刻的「准」;而验证这件事,工具只能替你做到「装上了、起来了、在前台」,最后那一眼「效果对不对」,永远是你自己的事。
七、用户评价:他们在装机这一步踩过的坑
「以前最怕的是『装不上但不知道为什么』,反正就是一行 Failure。现在它会明确告诉你签名不一样,还问我要不要卸了重装,我心里就有底了。」
—— 老陈 · 小型工作室安卓开发
「我们测内部应用最烦的就是数据被清。默认就是覆盖安装,同事的测试数据保住了,这一点比我原来手动敲命令省心太多。」
—— 阿凯 · 企业 IT 运维
「装完还会用 dumpsys 看一眼前台是不是它 —— 这个细节让我改掉了『装了就以为起来了』的老毛病。」
—— 小林 · 高校实验室助研
「我就一台测试机,以前装到一半报错还得回去翻教程。现在它连『设备上是更高版本』这种情况都替我处理了,自动加参数重装。」
—— 周舟 · 个人开发者
「养成习惯之后,每次要交给别人之前我一定先卸了重装一遍。看着多花五分钟,但省掉了『你那能跑我这不行』的扯皮。」
—— 王工 · 自动化设备厂商软件组
装机环节反馈汇总(来自内部试用与技术交流群的问卷整理)
- 约 七成 试用者表示日常只用覆盖安装,只有在签名冲突或要交付时才会走卸载重装;
- 被问到「最有用的一条提示」时,选得最多的是签名冲突那段大白话和它给出的下一步;
- 过半数的人表示,是看了 dumpsys 复核前台这一步之后,才开始习惯「装完确认应用真的在跑」;
- 模拟器用户里,提到最多的一句是「设备列表里看不到它、但工具自己去连上了」。
合规提醒:本工具面向自有版权或已获得授权的应用,适用于学习研究、企业内测、自有应用迭代等合法场景。请勿用于破解他人付费应用、绕过安全机制或未获授权的分发;也不要用它去替换、冒充他人应用。文中所有实例均基于自有应用与自有素材。
八、结语:把「装上去」当成一次有结论的验证
把这篇收成三句话:覆盖安装和卸载重装不是「新旧两种做法」,而是两种成本结构 —— 一个用旧状态换速度,一个用时间换干净;三种典型冲突各有判断依据,其中只有签名冲突必须你亲自拍板;而「干净验证一次」是给交付对象做的,不是给自己做的。
理解了链路,你会发现工具替你把「列设备 → 装包 → 拉起 → 复核前台 → 送到眼前」这几步都做成了不需要思考的动作,剩下的两个决策就变得很轻:这一轮求快还是求净,这次结论要不要给别人用。
于是你打开安卓修改大师智改工坊时的体验,就是那句口号描述的样子:只需说话,就能让应用变成你想要的样子 —— 你负责说要改什么、要验到什么程度,剩下的命令、参数、判断,交给这条链路就好。
产品介绍页与下载入口:https://www.apkeditor.cn/ai-version.aspx(官网 www.apkeditor.cn)。
只需说话,就能让应用变成你想要的样子
Windows 桌面端 · 拖入 APK · 中文写需求 · 自动回编 / 对齐 / 签名 / 校验 · 一键装机看效果
立即下载智改工坊(AI 版)
环境要求:Windows 桌面系统;预览效果需要手机(打开 USB 调试)或一台安卓模拟器