pakeplus打包APK全流程详解:从环境配置到签名安装
先说一个很多人问我的问题“pakeplus打包apk”到底是个什么玩法简单讲pakeplus可以把一个网页应用直接打包成一个安卓APK装到手机上就像个原生App一样用。它的底层是TauriRust到了移动端就借用系统自带的WebView来承载页面所以打出来的包非常小——很多场景下只有几MB比Electron那种动辄上百MB的方案舒服太多。这篇文章我就把自己从环境配置到出包的完整过程包括踩过的坑、改过的参数、安装时遇到的问题全部整理出来给想用pakeplus打包APK的朋友一个可以直接对着操作的路子。先说清楚pakeplus适合谁用。如果你手里有一个现成的Web项目、管理系统、导航页、工具站想把它变成手机上能全屏运行、有独立图标、还支持消息推送或桌面式体验的App又或者你只是玩技术想让自己的博客、相册、RSS阅读器有个“App形态”那pakeplus都是很顺手的工具。它不适合做重型原生功能不适合需要大量后台计算的应用本质上它给的是“壳”核心体验还是Web。1. pakeplus到底是什么为什么我推荐用它打包APK1.1 从Pake到PakePlus一个Web应用变成手机App的捷径Pake这个项目最初火起来是因为它用Rust调用系统WebView把网页打包成桌面客户端Windows、macOS、Linux都能用而且打包产物很小。PakePlus则是在Pake基础上把移动端补齐了让你能把同样的网页直接构建成安卓APK并且加入了Android平台需要的适配逻辑比如WebView版本管理、系统返回键处理、深链支持、多开窗口、隐藏地址栏等。这套思路的核心在于“壳”足够轻。它不像Cordova或Capacitor那样要带上一整套JS桥接框架和插件体系也不像Electron那样整个塞一个Chromium进去。Tauri在桌面端用系统的WebView在安卓端同样用的是系统WebViewRust只负责开一个本地服务、拉起WebView、再监听一些生命周期事件。你可以把这个壳理解成“浏览器标签页的全屏模式”只是这个标签页有自己的图标、自己的进程看起来就是一个独立App。这里有个重要差异要提前说因为安卓的WebView版本取决于手机系统低版本安卓手机上跑老旧的WebView兼容性会有问题。一般建议在Android 8以上使用这样WebView基本都是Chromium内核80版本以上绝大多数现代Web特性都能正常跑。1.2 相比WebView套壳、Electron、Capacitor的优势很多人自然会问我直接用Android Studio写一个WebView加载一个URL不就是套壳吗为什么要绕一圈用pakeplus理论上确实可以但你留意过这种方式做出来的东西缺多少东西吗没有独立的WebView数据目录管理、没有返回键和菜单键配置、没有深链唤起、没有签名打包链路、没有版本管理。这些如果全部自己写即使是最简版也要几百行原生代码更别说后续要适配不同屏幕、不同系统版本。我把几个主流方案放在一起对比你能更直观看出差异方案打包体积跨平台原生能力开发成本对Web项目友好度手写WebView套壳很小仅安卓需自己写桥接高一般Electron100MB桌面为主强低高但移动端不支持Capacitor中等iOS/Android/桌面强插件生态丰富中高pakeplus很小桌面Android基础能力够用极低很高Electron官方根本不支持打包APK你做的Electron应用想上安卓必须另起炉灶。Capacitor虽然也能把Web项目打包成APK但它默认还是一套完整的混合应用框架工程结构比pakeplus重。我实测过同一个纯前端工具站Capacitor打包出来大概20MB到30MBpakeplus反而只有5MB上下启动速度也明显快。pakeplus因为在Rust层做了端口和WebView管理页面加载完成之后掉帧和卡顿都很少体感和原生WebView体验几乎没有差别。如果你问“pakeplus有没有缺点”当然有。它最大的短板是原生插件体系不够丰富像需要调用摄像头、文件系统、蓝牙这类场景pakeplus目前给的接口没那么多需要自己写Rust层的命令或者改用Capacitor。如果是游戏项目比如cocos creator、unity2022这种也别指望pakeplus那是游戏引擎自己的打包流程。2. 打包前环境准备工具链和配置项一次讲清2.1 需要安装的依赖和版本对照很多人打包失败根本不是pakeplus的问题而是环境没配对。Android的构建链路牵扯到JDK、Android SDK、NDK、Rust工具链任何一环版本不对都会在中途报一些看着莫名其妙的错。我整理了一份经过验证的版本组合按这个来至少不会踩版本级的坑依赖推荐版本说明Ruststable建议1.75以上太低版本可能编译不了Tauri的crateNode.js18以上打包脚本依赖Node环境Java JDK17Android Gradle Plugin 8.x要求JDK1711会出现不兼容Android SDKAPI 34对应Android 14Build-Tools34.0.0太老可能无法处理新签名NDKr25或以上Tauri编译原生库需要pnpm8以上pakeplus官方仓库用pnpm管理依赖在Windows上Android SDK建议装在%LOCALAPPDATA%\Android\Sdk然后手动配置两个环境变量ANDROID_HOME和NDK_HOME。macOS和Linux则常装在~/Library/Android/sdk和~/Android/Sdk。你要是不确定自己装没装对在终端里敲一行命令验证echo $ANDROID_HOME echo $NDK_HOME如果输出是空的后面编译到原生库时大概率会报“NDK not found”之类的错误。JDK的配置也一样要确保java -version输出的确实是你安装的17而不是系统自带的11或8。因为JAVA_HOME指错地方导致Gradle一直编译失败的案例我见过太多次了这里务必检查一遍。2.2 项目配置文件的核心参数解释环境准备好之后真正影响APK形态的是tauri.conf.json这个配置文件。pakeplus在项目根目录的src-tauri/tauri.conf.json位置里面最核心的几个字段多数人第一次看会有点懵我按实际作用拆开讲。{ productName: MyWebApp, tauri: { bundle: { identifier: com.example.mywebapp }, allowlist: { all: true } } }productName决定安装到手机上显示的应用名称。bundle.identifier是包名这个一旦定下来后面发布最好不要改因为改包名相当于换了一个应用用户更新时会变成“安装新应用而不是覆盖更新”。identifier建议用反向域名风格比如个人项目写com.yourname.xxx别用默认的com.tauri.dev之类否则上架市场或者在多台设备间做签名一致性校验时都会有问题。配置文件里还有一个很关键的url字段这个决定WebView启动时加载哪个页面。你可以填一个线上地址也可以填本地文件路径。如果你希望APK完全离线运行就把Web项目整个打包进资源目录如果只是做个在线工具的壳直接填线上URL即可。pakeplus还支持同时注册多个窗口每个窗口可以加载不同的页面这个在需要“多开”场景下很好用比如同时打开两个账号的后台。深链配置也是多数人忽略的。如果你希望别人用myapp://open?pagehome这样的链接直接唤起你的App并跳转到对应页面需要在配置里注册URL Scheme。注册之后WebView里收到的深链参数可以通过Rust层传给前端JS前端再根据参数做路由处理。这块配置不复杂但值得在打包前想清楚要不然后期想加整个过程要重新构建一遍。3. 实操打包流程从拉取代码到生成APK3.1 克隆项目并修改目标站点介绍完概念和配置下面说一下我实际操作时走的完整流程。首先把pakeplus仓库拉到本地git clone https://github.com/arlen-nev/pakeplus.git cd pakeplus这里对仓库版本有个建议优先选最新release而不是main分支。因为main分支可能处于开发状态依赖版本变动比较频繁用release版本配合文档里的锁定依赖能少掉很多莫名奇妙的问题。接下来按你自己的需求修改配置。比如我要打包一个团队内部用的导航网站就把src-tauri/tauri.conf.json里的url从默认的实例站点改成自己的目标地址。同时把productName改成项目实际名称把bundle.identifier改成自己的域名反写。如果目标网站对User-Agent有依赖比如要识别成移动端页面在pakeplus里还可以设置自定义User-Agent这个细节很实用否则你可能打开的是桌面版页面布局全乱了。改完配置后先安装前端依赖我用的是pnpmpnpm install这一步可能会卡一会儿因为要拉Tauri相关的Rust crate。国内网络环境下Crates.io下载慢是常态可以通过环境变量设置国内镜像源来缓解比如配置RUSTUP_DIST_SERVER和CRATES_IO_MIRROR指向镜像地址。如果没有配置镜像就耐心等第一次编译拉取时间可能超过10分钟别误以为卡死。3.2 执行Android打包命令依赖装好之后接下来是生成Android工程接着构建APK。不同版本的pakeplus命令略有差异我用的流程是npm run tauri android init npm run tauri android build --apk第一条命令会在src-tauri/gen/android下面生成完整的Android工程结构包括app/src/main/AndroidManifest.xml、build.gradle等。这条命令只要执行成功说明Rust层的环境基本没问题了。第二条命令才是真正跑Gradle构建把Rust侧编译好的原生库和WebView壳一起打成APK。如果你只改了Web地址之类的配置不需要重新执行init直接build就行因为配置会被同步到已生成的Android工程。但如果改了包名、应用图标这类原生层的东西建议把gen/android目录删掉重新init一次避免旧配置残留。构建完成后APK的输出位置一般在src-tauri/gen/android/app/build/outputs/apk/universal/里面会有app-universal-release-unsigned.apk或app-debug.apk这样的文件。debug包可以直接安装release包是未签名的后面还需要自己签名才能装到手机上这一步很多人会漏掉下面重点说。3.3 签名与APK输出位置签名这块其实不复杂但坑最多。如果你只是自己测试安装debug签名就够了系统会在首次构建时自动生成一个~/.android/debug.keystore安装时直接用debug包。但你如果想要发给别人、传应用市场就得用正式签名。生成自己的签名文件首选keytool命令JDK自带不需要额外安装keytool -genkeypair -v -keystore my-release.keystore -alias mykey -keyalg RSA -keysize 2048 -validity 10000执行过程中会让你输入组织名称、地域信息最重要的是记住keystore密码和alias别名后面每次签名都要用。生成好之后用apksigner签名。apksigner在Android SDK的build-tools目录下路径类似$ANDROID_HOME/build-tools/34.0.0/apksignerapksigner sign --ks my-release.keystore --ks-key-alias mykey --ks-pass pass:你的密码 app-universal-release-unsigned.apk签名完成之后建议用apksigner verify --verbose验证一下签名。验证输出会列出v1、v2、v3签名方案新版本安卓要求v2以上如果你的APK只有v1签名在Android 11以上安装时会提示“解析包出现问题”或拒绝安装。这里还要多说一句很多人喜欢用所谓的伪签名工具或在线签名工具来快速给APK签名图省事。我劝你千万别用在不信任的在线工具上传APK因为APK里可能包含你的应用源码、接口地址、密钥信息传到陌生平台等于把你的家底亮给别人。离线签名几行命令就搞定了完全没必要冒险。4. 打包后安装和分发签名、降级、解析失败的坑4.1 install_failed_version_downgrade 问题排查APK拿到了安装却翻车这是后台私信问得最多的类型。最常见的报错是install_failed_version_downgrade字面意思是“安装失败版本降级”。出现这个报错通常因为手机上已经装了比你当前APK版本号更高的同一个应用。pakeplus在每次构建时versionCode来自配置文件里的version字段。如果你打包时没有手动提升版本两次重新构建后versionCode是一样的甚至因为改了配置变得更低就会提示降级。解决办法简单粗暴要么先卸载手机上的旧版本再装新的要么把配置里的version从0.1.0改为0.1.1或更高重新构建。如果你是做灰度测试频繁更新安装包建议把版本号自动化和构建流程绑定每次构建自动加一。否则哪天你连着测了五六个包手机一换马上就会遇到这个报错。4.2 APK解析包出现问题的常见原因“解析包出现问题”在热搜词里出现频率很高这个错误提示笼统但原因其实就那么几类我一一列出来下载的APK不完整传文件过程中被截断或者网盘中转站下载后文件大小变了安装包校验不过。这种情况直接把APK从电脑重新传一次到手机对比一下文件大小就能确认。系统版本太低APK的minSdkVersion高于你手机的安卓版本。pakeplus默认的minSdk一般不低于23Android 6.0如果手机太老确实装不上。可以在Gradle配置里把minSdkVersion调低但调低后WebView兼容性风险会上升。架构不匹配如果打包时只生成arm64架构而手机是32位系统同样会解析失败。pakeplus的universal包默认包含多种ABI但如果手动指定了单一架构就需要和你的设备匹配。伪签名或签名损坏APK在传输或二次处理过程中签名信息被破坏安装时会直接报解析失败。重新签名即可。碰到解析失败先用aapt dump badging xxx.apk命令查看APK的包信息确认minSdkVersion、targetSdkVersion、native-code这几项基本能定位大部分问题。aapt在build-tools目录下也有和apksigner在同一级。4.3 第三方渠道、APK反编译与安全提醒打包好的APK分发通常除了自己扫码安装也会挂到应用宝、APKPure这类第三方平台或者直接放到网盘。这里要提醒一句第三方平台下载的APK很多会经过平台方重新签名如果平台方的签名方案和你的不一致用户在更新你的正式包时也会提示版本降级或签名不一致导致应用无法覆盖安装。有些人喜欢拿到APK先在线反编译看看别人用了什么配置这不难理解。但我的建议是对于自己开发的APK尽量在本地进行反编译审查而不要把安装包随便上传到在线反编译网站因为APK里的代码虽然混淆了但资源文件、接口域名、SDK Key这种信息是明文的等于把自家应用的技术细节暴露给了平台。pakeplus的APK本身不复杂想看WebView加载地址直接解压APK后在assets目录里找配置文件就行。很多人在网上问“apk怎么反编译”“apk解密”其实对于这种壳应用核心就是一个JSON配置文件根本用不上专业的逆向流程。这也是pakeplus这类方案的好处代码摊开看也是透明的你不需要在壳层面做太多安全对抗把精力放在Web端自身的鉴权和接口防护上才是正事。5. 踩坑实录与性能优化经验5.1 编译期踩过的坑这一节全是实操经验每一个人都是我真实遇到过的。先说NDK版本如果你的NDK版本太老或者太新编译Rust原生库时会出现C标准库链接错误。最开始我用的是NDK r21结果Tauri编译报了一堆undefined reference后来换成r25才稳定。如果你也一样建议先把NDK版本和pakeplus文档要求的对齐。第二个坑是Gradle第一次构建时下载依赖慢。Android构建要拉很多Maven依赖国内网络访问Google仓库经常超时失败后重试又是漫长等待。解决办法是配置镜像源。在项目根目录的build.gradle里把google()和mavenCentral()替换成阿里云镜像仓库或者配置gradle.properties里的distributionUrl指向国内镜像下载Gradle发行版构建速度能提升几倍。第三个坑是R8混淆。Tauri生成的release包默认开启资源压缩也就是ProGuard/R8。在部分情况下R8会把WebView里用到的JS接口类裁剪掉导致安装之后页面白屏。如果出现这种情况建议在proguard-rules.pro里加上保留WebView相关类的规则或者直接把minifyEnabled false关掉。牺牲一点包体积但换来了稳定性。5.2 APK体积优化与加载速度优化pakeplus打包出来的APK基础体积已经很小了但如果你的Web页面本身很大APK也会变大因为本地资源会被一起打进去。优化思路有两个方向。一是Web端资源做拆分首屏只加载关键内容其它异步加载这样WebView渲染速度也会更快。二是配置里不要打包不必要的ABI如果你确认用户只使用arm64设备只保留arm64架构的库体积还能再减不少。加载速度方面最影响体验的不是壳而是网络。如果加载的是线上URL首屏白屏时间取决于网络和站点性能。我的做法是把首屏的核心HTML和CSS直接打进APK的本地资源WebView启动时先加载本地壳页面再在后台异步拉取线上数据这样用户打开App的瞬间至少能看到界面框架不会有一片白。另外pakeplus支持配置WebView的缓存模式建议开启缓存让已加载过的静态资源在下次启动时直接走本地缓存能明显减少二次启动的加载时间。如果你在Web端已经配了Service Worker那是更理想的缓存方式壳层不需要额外干预。5.3 功能扩展深链、多开与本地数据封装很多人以为pakeplus只能做一个“浏览器书签”其实它可以做的远不止这些。深链唤起我在前面提过配合Web端的路由处理可以实现扫码直接打开App并跳转到指定页面这在做运营活动时特别有用。多开支持是我用得很爽的一个功能。比如你有两个不同账号需要同时挂在后台就可以定义两个窗口每个窗口带独立的用户代理和本地存储目录互不干扰。这在手机端实现起来比想象的还简单pakeplus已经把多窗口的状态隔离做好了你只要在配置文件里声明前端再按窗口ID做区分就行。本地数据封装这块我实际测试过一个场景把一个纯离线的计算工具Web页面打包成APK然后用Rust层做一个简易的配置存储接口页面里通过JS调用Rust写入和读取配置。这样一来App即使完全没有登录系统和后端接口也能在本地保存用户偏好。这种轻量级原生能力对工具类应用来说够用了。另外如果你看到网上有人讨论“基于termux封装的本地手机端apk”其实那是在手机上直接跑构建环境打包。我自己试过一次体验不太舒服termux环境配置复杂编译速度也远不如电脑。如果不是特殊需求建议还是回到电脑上操作或者直接用GitHub Actions云端构建提交代码后自动出包省时省力。最后再分享一点个人体会pakeplus打包APK这个事难点从来不在命令本身而在环境、签名、版本管理这些“看不到”的细节。我刚开始折腾时也是前两遍全卡在NDK和签名上第三遍才顺利出包。沉住气把环境的版本对齐把签名流程跑通后面再做任何打包需求基本就是改改配置、敲两行命令的事。希望这篇东西能帮你少走我走过的弯路。

相关新闻

DEMATEL-ISM构建飞行员安全能力结构模型:从因果关系到层级递阶

DEMATEL-ISM构建飞行员安全能力结构模型:从因果关系到层级递阶

一个让我憋了很久的疑问:飞行员的“安全能力”到底是什么?技术好、起落多、考试全过,都不等于安全能力强。真正把这个问题想清楚,是我在重新梳理课题模型时才有的感觉——答案藏在因素之间的“关系”里。这个课题从文献调研到模型…

2026/10/9 4:18:42 阅读更多 →
多智能体协作架构实战:规划、执行与验证的角色编排

多智能体协作架构实战:规划、执行与验证的角色编排

“agency-agents”这个标题,我第一次看到时以为是某个组织机构的项目代号,后来才意识到它说的是一套多智能体(Multi-Agent)协作架构。这几年大模型能力越来越强,单Agent能做的事也越来越多,但真要把一个复杂…

2026/10/9 4:18:42 阅读更多 →
PLC品牌选择实战指南:需求分析、学习路线与排坑经验

PLC品牌选择实战指南:需求分析、学习路线与排坑经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 4:18:42 阅读更多 →

最新新闻

oneTBB concurrent_hash_map 非成员二元比较运算符(operator== / operator!=)详解

oneTBB concurrent_hash_map 非成员二元比较运算符(operator== / operator!=)详解

并发编程高性能计算 【免费下载链接】oneTBB oneAPI Threading Building Blocks (oneTBB) 项目地址: https://gitcode.com/gh_mirrors/on/oneTBB 点击查看 免费下载 导读 本文聚焦 oneAPI Threading Building Blocks(oneTBB)中 oneapi::tbb…

2026/10/9 4:49:04 阅读更多 →
Claude Code 命令速查手册:高频命令、快捷键与高效工作流

Claude Code 命令速查手册:高频命令、快捷键与高效工作流

1. 为什么需要一个命令速查手册刚接触 Claude Code 的人,十有八九会经历这么一个阶段:装好了,敲了个claude进去,然后对着那个闪烁的光标发呆——接下来该干嘛?官方文档当然有,但文档是线性的,从…

2026/10/9 4:49:04 阅读更多 →
ESP32 SoC与模组选型指南:从芯片架构到量产料号

ESP32 SoC与模组选型指南:从芯片架构到量产料号

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 4:49:04 阅读更多 →
Claude Code Mods扩展开发:工具挂载与终端界面渲染实战

Claude Code Mods扩展开发:工具挂载与终端界面渲染实战

1. 从终端里的AI助手说起:为什么需要给它加装工具和界面很多人第一次接触命令行里的AI编程助手时,感受往往是矛盾的。一方面,它能理解自然语言、能读写文件、能执行命令,确实比传统补全工具强出一大截;另一方面&#x…

2026/10/9 4:49:03 阅读更多 →
SSM框架2025年真实处境与Spring Boot渐进式迁移实战

SSM框架2025年真实处境与Spring Boot渐进式迁移实战

直接开写 说实话,每次在技术群里看到有人问“SSM框架还能打吗”,我就知道问这问题的十有八九是两种人:一种是刚接手了祖传项目、天天被XML配置折磨得想跑路的年轻开发,另一种是还在用SSM做老系统维护、看着外面的技术新闻越来越焦…

2026/10/9 4:49:03 阅读更多 →
LRE框架:重构AI智能体的时间感知与因果记忆机制

LRE框架:重构AI智能体的时间感知与因果记忆机制

1. 这不是“给AI加个备忘录”,而是重构智能体的时间感知能力很多人第一次看到“AI智能体记忆管理”这个词,下意识会想:不就是让大模型多存点上下文、加个向量数据库当外挂硬盘吗?我试过——在某个模拟项目X里,给一个任…

2026/10/9 4:48:03 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →