appdrop

中文文档
0.8.0发布于 2026/11/03MITES Module零依赖

通过AppDrop链接共享iOS、Android和Mac应用

中文使用文档
文档目录8 节
  1. Android和Mac
  2. 同一应用程序的构建
  3. 更新应用程序
  4. Apple Vision Pro发布
  5. Mac的构建
  6. 你的AppDrop账号
  7. 对于脚本和代理
  8. 选项

AppDrop

通过链接共享iOS、Android和Mac应用。上传一个 .ipa, .apk, .aab, .apks, 或包含Mac的ZIP文件 .app. 你也可以上传 appdrop.app /下降.

npx appdrop path/to/App.ipa
# https://appdrop.app/d/k3m9x2p7qa

对于iOS版本,接收者打开他们iPhone上的链接,连接 簇应用 一次,签署应用程序 用他们自己的苹果ID,然后安装它。一切都发生在电话上;否 Mac,电缆或配置文件与他们的设备是必需的。

Android和Mac

npx appdrop build/App.apk
npx appdrop build/App.aab
npx appdrop build/App.apks --force
npx appdrop build/MyApp.app   # macOS: packages the bundle with ditto
npx appdrop build/MyApp.zip

安卓和Mac下载跳过苹果登录和iPhone配对。AppDrop保存 原始签名文件和包/包标识符。未签名的Android版本 接收一个appdrop管理的签名,并保留一个加密的每链接密钥 用于将来更新的私有存储。

  • APK: 在Android上打开下载并按照安装程序操作。安卓可能会问 你可以允许浏览器安装应用程序。已经签署的apk将被验证和分发。无符号的apk 自动签名。更新需要相同的包ID和签名密钥。
  • :艺术展 AppDrop构建一个通用的APK,并用链接的托管密钥对其进行签名。 接收方下载一个normal .apk. 通用APK只包含功能 适合熔接的模块;依赖于按需播放模式的应用可能会 需要一个专门的APK构建。
  • apk: 从bundletool或兼容的 出口国。发布失败 apks_requires_force 除非 --force 是 显式地提供。浏览器上传要求 分发APK集. 使用拆分APK安装程序打开它,例如 应用程序管理器. Android的普通浏览器 安装程序无法自行安装拆分集。AppDrop从 基本APK验证所有分离的签名身份,并保留已签名的身份 档案不变。完全无符号集使用托管密钥进行签名。 这不会将拆分合并为一个独立的APK。
  • 麦克: 上传一个包含一个的ZIP文件 .app,或通过 .app 到 命令行。接收方将其解压缩并移动到应用程序。现有的 保留开发者身份签名及公证;AppDrop不签名, 公证,或者绕过看门人。不支持DMG和PKG上传。

下载将共享链接保存到浏览器的应用程序库。下载不是 记录为已确认的安装。自动安装、更新和 更新仍然是iOS功能。

同一应用程序的构建

有些人可以保留几个链接到同一个应用程序(一个bundle ID)在他们的 图书馆,如分馆的旁建 main他们的手机上有一个 因此,AppDrop会在一个应用程序替换另一个应用程序之前询问,而且只询问已安装的应用程序 自动更新。为了区分它们,每个链接都显示一个标签:git 运行CLI的分支,或者 --label:

npx appdrop build/App.ipa --label "onboarding redesign"

更新应用程序

每个链接都有一个 更新链接, https://appdrop.app/d/<id>/manage#<key>. 保持它的私密性:任何拥有它的人都可以将新版本发布到共享链接,所以 CLI只打印共享链接。在创建链接的计算机上,通过 分享链接到 --update;密钥保存在 ~/.appdrop/drops.json. npx appdrop links 打印更新链接,您可以在浏览器中打开该链接 上传新版本,或传递到另一台计算机上的CLI:

npx appdrop build/App.ipa --update https://appdrop.app/d/k3m9x2p7qa/manage#…

新文件必须保持相同的平台和bundle/package标识符。 Android上传也必须保留相同的签名者证书指纹。APK 当最终APK使用相同的密钥时,AAB上传可以相互更新。 AppDrop验证服务器上的实际文件;客户端声明的签名是 不可信的。更改后的密钥将失败 android_signer_changed,即使 --force. 无效签名失败 invalid_android_signature,而不是 被当作未签名的。根据已发布的链接检查现有链接 在此策略下的第一次更新之前提交文件。 对于iOS版本,安装了较早版本的用户再次打开共享链接时,会看到“可用更新”。 然后用浏览器的苹果ID重新注册并安装 回忆说。iOS保存应用程序的数据。

Apple Vision Pro发布

iPhone/iPad连接也可以携带同一款应用的原生Apple Vision Pro 构建。发布visionOS .ipa 链接的更新链接:

npx appdrop build/AppVision.ipa --update https://appdrop.app/d/k3m9x2p7qa/manage#…

它必须使用与链接的应用相同的bundle标识符(将visionOS添加为 应用程序的目标在Xcode中的目的地保存它)。它不能代替 iPhone/iPad构建:Apple Vision Pro从链接安装visionOS构建, 而所有其他设备都在使用iPhone/iPad。各有千秋 版本;以相同的方式再次发布以更新它。一个visionOS应用的图标 屏幕显示为圆形,就像Apple Vision Pro一样。类中读取平台 构建的信息。Plist,并在上传成功后检查它。

Mac的构建

同样的链接也可以携带应用的Mac版本。发布压缩后的文件 .app (或 .app(在macOS上为您压缩), .dmg 或者 .pkg 到更新链接:

npx appdrop build/App.app --update https://appdrop.app/d/k3m9x2p7qa/manage#…

然后mac电脑从链接下载,就像上传一样:AppDrop不会 重新签署Mac应用程序,所以用开发者ID签署并公证它才能打开 没有任何警告。它必须是相同的应用:相同的bundle标识符,或者Mac 催化剂的 maccatalyst. 一个。其他设备都是iPhone/iPad Mac版本有自己的版本。

重用当前发布的构建号(CFBundleVersion或Android的 versionCode)失败之前 正在上传,出口代码为1。增加IPA中的构建号,或者显式地增加 允许重复使用 --force:

npx appdrop build/App.ipa --update <update-link> --force

仍然只需要更改显示版本 --force. 与 --json,一个 拒绝打印 { "code": "reused_build_number", "error": "…" } 发送到stdout 并退出1;Stderr还解释了如何继续。强制成功更新 包括一个 warnings 数组中的JSON结果。 --force 允许构建号重用和拆分归档警告;仍然需要管理键和匹配的包标识符。

npx appdrop links 打印共享的每个应用程序的共享和更新链接 从这台机器。要让代理接管一个应用程序,给它一个更新链接。与 --json,一个 新链接的 manageUrl 和 manageKey 都打印一次,这样一个脚本就可以存储 它们是秘密; --key 和 $APPDROP_MANAGE_KEY 使用普通共享 链接,并且密钥也保存在 ~/.appdrop/drops.json ($APPDROP_HOME)。

你的AppDrop账号

npx appdrop login

将此计算机链接到您的AppDrop帐户。它打印一个链接;任意打开 您登录appdrop的设备。App,审批,命令 完成。这台电脑上已经共享的所有应用都会加入这个账户,所以 从那时起,每个人都分享或更新了吗?您帐户中的应用程序将显示 appdrop。App /帐户,你在那里管理他们登录,没有他们的更新 链接。 npx appdrop logout 断开电脑连接;应用程序保留在帐户中。

无需登录,每次上传都会提示 npx appdrop login, --json 结果 说 "account": "not-linked". 它们还包括 claimUrl的链接 一个应用程序到你的账户,只需点击一下。与更新链接一样,它也可以 发布到应用程序,所以要保密。连接的计算机 --json 结果 说 "account": "added" 代替。

登录信息保存在 ~/.appdrop/account.json ($APPDROP_HOME),可读 只有你。它可以添加和管理应用程序,没有其他功能,并且可以使用一年或更长时间 直到你从appdrop.app/account的Computers下移除电脑。

对于脚本和代理

只有链接指向stdout (progress指向stderr),所以它可以被捕获:

url=$(npx appdrop build/App.ipa)

--json 打印详细信息:

{"url":"https://appdrop.app/d/k3m9x2p7qa","manageUrl":"https://appdrop.app/d/k3m9x2p7qa/manage#…","id":"k3m9x2p7qa","revision":1,"name":"My App","bundleId":"com.example.app","version":"42","shortVersion":"1.2.0","size":31457280,"hasIcon":true,"manageKey":"…"}

当文件不是受支持的应用程序或上传失败时,退出代码是非零的。 Android/Mac JSON结果还包括 artifactType: apk, apks,或者 macos-zip. Android的结果还包括 androidSigning 是否带有SHA-256证书指纹,以及密钥是否由appdrop管理。

选项

选项
--update <link>将应用作为现有应用的新版本发布。采用更新链接或共享链接+ --key.
--key <key>关键是,当 --update 给出一个共享链接(也 $APPDROP_MANAGE_KEY)。
--json将结果打印为JSON。
--force允许分裂 .apks 发布的构建号的归档和重用;永远不要更改签名者。
--origin <url>使用另一个AppDrop服务器 $APPDROP_ORIGIN)。
-h, --help显示帮助。

上传文件最大可达500mb .ipa 可以签名或不签名,因为它是 为每个收件人重新签名。已经签名的Android应用程序和Mac应用程序将保留其现有签名。 AppDrop读取应用程序的名称、标识符、版本和可用的PNG图标来显示 在它的页面上。CLI没有依赖项。

0.3之前的版本支持iPhone和Mac (npx appdrop <code>)。 配对现在是通过Tuft在iPhone上进行的,所以这个命令就消失了。

版本与发布记录

appdrop 共发布 14 个版本,首次发布于 2026/09/02;过去 12 个月发布了 14 个版本。

版本发布日期距今
0.8.0latest2026/11/03今天
0.7.22026/10/286 天前
0.7.12026/10/277 天前
0.7.02026/10/277 天前
0.6.02026/10/2212 天前
0.5.22026/10/2014 天前

关于 appdrop 的常见问题

appdrop 是什么?

通过AppDrop链接共享iOS、Android和Mac应用

如何安装 appdrop?

在项目目录运行 npm install appdrop,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 appdrop,可以用 npx appdrop 直接运行。

appdrop 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/appdrop 是否存在。

appdrop 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

appdrop 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

appdrop 可以商用吗?

appdrop 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

appdrop 还在维护吗?

最新版本 0.8.0 发布于 2026/11/03(今天);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/09/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。