@expo/repack-app

中文文档
0.10.4发布于 2026/09/29MITTypeScriptCommonJS近 30 天下载 64.1万

Expo 应用程序的重新包装工具

中文使用文档
文档目录6 节
  1. API 文档
  2. CLI 使用量
  3. 程序用途
  4. 配置选项
  5. 环境变量
  6. 电视应用

@ expo/ 重新包装- app

Expo 应用程序的重新包装工具

API 文档

CLI 使用量

repack-app [options] [project-root]

选项

  • -p, --platform <platform> (需要): 重新包装应用程序的平台android 或者说 ios(中文(简体) )
  • --source-app <path> (需要):源应用程序文件的路径(Android的APK/AAB,iOS的IPA)
  • --android-build-tools-dir <path>: Android 构建工具目录的路径
  • -w, --working-directory <path>: 工作目录的路径
  • -o, --output <path>: 输出文物的路径
  • -v, --verbose: 启用动词记录

Android 特定选项

  • --ks <path>: 键盘文件的路径
  • --ks-pass <password>: keystore 密码( 支持的格式 : pass:<password>, (中文(简体) ), env:<name>, (中文(简体) ), file:<file>(中文(简体) )
  • --ks-key-alias <alias>: keystore 密钥别名
  • --ks-key-pass <password>: keystore 密钥密码( 支持的格式 : pass:<password>, (中文(简体) ), env:<name>, (中文(简体) ), file:<file>(中文(简体) )

iOS 特定选项

  • --signing-identity <identity>: 代码签名身份( Fastlane 后端, 只有 macOS )
  • --provisioning-profile <path>: 提供配置文件的路径
  • --certificate <path>: 路径 a .p12 签名身份。 符号为 符号 而不是快跑道,通过 WASM 进行中——不需要 Xcode 或密钥链,所以它也在 Linux 上工作
  • --key-password <password>: 密码 .p12 签名身份

套装选项

  • --embed-bundle-assets: 强制嵌入捆绑资产
  • --bundle-assets-sourcemap-output <path>: 在指定的路径生成源图( 使用 --embed- bundle- assets)

程序用途

import { repackAppAndroidAsync, repackAppIosAsync } from '@expo/repack-app';

// For Android
await repackAppAndroidAsync({
  platform: 'android',
  projectRoot: '/path/to/project',
  sourceAppPath: '/path/to/source.apk',
  // Optional configurations
  workingDirectory: '/path/to/working/dir',
  outputPath: '/path/to/output.apk',
  verbose: true,
  androidSigningOptions: {
    keyStorePath: '/path/to/keystore.jks',
    keyStorePassword: 'pass:password', // or 'env:KEYSTORE_PASS' or 'file:/path/to/pass'
    keyAlias: 'alias',
    keyPassword: 'pass:key-password', // or 'env:KEY_PASS' or 'file:/path/to/key-pass'
  },
  androidBuildToolsDir: '/path/to/build-tools',
  exportEmbedOptions: {
    sourcemapOutput: '/path/to/sourcemap',
  },
  env: {
    // Additional environment variables
  },
});

// For iOS
await repackAppIosAsync({
  platform: 'ios',
  projectRoot: '/path/to/project',
  sourceAppPath: '/path/to/source.ipa',
  // Optional configurations
  workingDirectory: '/path/to/working/dir',
  outputPath: '/path/to/output.ipa',
  verbose: true,
  // Sign with fastlane and a macOS keychain identity (requires Xcode)
  iosSigningOptions: {
    signingIdentity: 'Apple Development: Name (Team ID)',
    provisioningProfile: '/path/to/profile.mobileprovision',
    keychainPath: '/path/to/keychain', // Optional
  },
  // ...or with zsign and a .p12, which needs no Xcode and runs on Linux:
  // iosSigningOptions: {
  //   backend: 'zsign',
  //   certificatePath: '/path/to/identity.p12',
  //   keyPassword: 'p12-password',
  //   provisioningProfile: '/path/to/profile.mobileprovision',
  // },
  exportEmbedOptions: {
    sourcemapOutput: '/path/to/sourcemap',
  },
  env: {
    // Additional environment variables
  },
});

配置选项

在方案使用API时,有下列选项:

常见选项

  • platform:'android' QQ'ios' - 重新包装应用程序的平台
  • projectRoot: 字符串 - 项目根目录的路径
  • sourceAppPath: 字符串 - 预建应用文件的路径(APK/AAB/IPA)
  • workingDirectory?: 字符串 - 临时文件的工作目录
  • outputPath?: 字符串 - 输出应用文件的路径(默认为) projectRoot/repacked.apk 或者说 projectRoot/repacked.ipa(中文(简体) )
  • verbose?: boolean - 启用动词记录
  • exportEmbedOptions?: ExportEmbed 选项 - 嵌入JS捆绑的选项. 指定时, 重新包装将生成捆绑资产 .
  • skipWorkingDirCleanup?: boolean - 跳过工作目录清理
  • env?: 记录 < 字符串, 字符串 > -- 环境变量

Android 特定选项

  • androidSigningOptions?: Android 签名选项 - 签名 Android app的选项
    • keyStorePath: 字符串 - 键盘文件的路径
    • keyStorePassword: 字符串 - keystore 密码( 支持的格式 : pass:<password>, (中文(简体) ), env:<name>, (中文(简体) ), file:<file>(中文(简体) )
    • keyAlias?: 字符串 - Keystore 密钥别名
    • keyPassword?: 字符串 - Keystore 密钥密码( 支持的格式 : pass:<password>, (中文(简体) ), env:<name>, (中文(简体) ), file:<file>(中文(简体) )
  • androidBuildToolsDir?: 字符串 - Android SDK 构建工具目录的路径
  • 何时 sourceAppPath 是一个 .aab,重新包装用途 bundletool 从 PATH 转换为通用APK 并仍然输出 APK.

iOS 特定选项

  • iosSigningOptions?: IosSigning Options - 签名iOS应用程序的选项. 受歧视的工会 backend数字 :

    backend: 'fastlane' 带快车道的标志 resign 动作和一个 macOS 键链身份,所以它需要 Xcode :

    • signingIdentity: 字符串 - 代码签名身份
    • provisioningProfile: 字符串 QQ 记录 < string, string > - 提供配置文件的路径
    • keychainPath?: 字符串 - 密码符号的密钥链文件路径

    backend: 'zsign' 标志 符号 正在通过 zsign -wasm (英语)。没有Xcode,键链,或外部二进制,因此它也用于Linux:

    • certificatePath: 字符串 - 路径 .p12 签名身份,由Keychain Access导出或从苹果开发者门户网站下载。 它将私钥与证书链,包括iOS安装时需要的Apple WWDR中间体一起持有
    • keyPassword?: 字符串 - 密码保护 .p12
    • provisioningProfile: 字符串 QQ 记录 < string, string > - 提供配置文件的路径

环境变量

  • ANDROID_SDK_ROOT: Android SDK 根目录的路径(Android built需要)
  • bundletool: Android 所需的路径 .aab 投入
  • UNSTABLE_REPACK_APP_ICON: 设定为 1 或者说 true 启用实验应用程序图标重新包装

电视应用

App图标再包装支持Apple TV和Android TV. 重新包装从源头检测到一个 TV 应用程序 文物 - UIDeviceFamily 在 iOS 中 Info.plist中,和倾斜后发射装置条目 AndroidManifest.xml 因此,没有额外的设置选项。 当源程序是电视应用时, 重新包装也会在内部运行 expo prebuild 与 EXPO_TV=1。 。 。 .

重新包装不会生成电视图像 。 它会重用什么 expo prebuild 写入,所以图标来自 页:1 @react-native-tvos/config-tv 插件选项 :

  • 苹果电视: appleTVImages,这需要所有七个图像。 没有它,资产目录就没有 .brandassets,并重新包装保留源图标并记录警告.
  • 安卓电视: androidTVBanner 财务报告和审定财务报表 androidTVIcon。 。 。 .

版本与发布记录

@expo/repack-app 共发布 63 个版本,首次发布于 2024/05/02;过去 12 个月发布了 24 个版本。

版本发布日期距今
0.10.4latest2026/09/291 个月前
0.10.32026/09/032 个月前
0.10.22026/09/022 个月前
0.10.12026/08/292 个月前
0.10.02026/08/212 个月前
0.9.02026/08/212 个月前

关于 @expo/repack-app 的常见问题

@expo/repack-app 是什么?

Expo 应用程序的重新包装工具

如何安装 @expo/repack-app?

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

@expo/repack-app 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@expo/repack-app 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@expo/repack-app 可以商用吗?

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

@expo/repack-app 的下载量有多少?

根据 npm 官方下载统计,@expo/repack-app 在 2026/10/14 – 2026/11/12 这 30 天内被下载 640,507 次,日均约 21,350 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@expo/repack-app 还在维护吗?

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