跳到主要内容

打包

云打包

  1. 安装 EAS CLI

    npm install -g eas-cli
  2. 注册并登录 Expo 账户

  3. 配置项目构建

    • 输入以下命令,选择 Android 平台即可。

      eas build:configure
  4. 构建 Android 包

    • 默认构建 AAB 包(上传 Google Play):

      eas build --platform android
    • 构建 APK(可直接安装):

      eas build -p android --profile preview

本地打包(EAS方式)

本地打包(原生方式)

1. 安装 Android Studio

  1. 下载安装

    • 按照官网提示依次安装 SDK 工具和必要组件。

    • 安装完成后,记住 SDK 的安装路径(例如:D:\data\sdk,默认位置是:C:\Users\<你的用户名>\AppData\Local\Android\Sdk),后续需要用到。

  2. 配置环境变量

    • 打开 系统属性 → 高级 → 环境变量

    • 系统变量 中新增:

      变量名:ANDROID_HOME
      变量值:D:\data\sdk
    • Path 中新增:

      %ANDROID_HOME%\platform-tools
      %ANDROID_HOME%\tools
      %ANDROID_HOME%\tools\bin
    • 保存设置。

  3. 验证安装

    • 打开命令行,执行:

      echo %ANDROID_HOME%
    • 如果输出 SDK 路径,则说明配置成功。

2. 安装 jdk17

  1. 下载安装

    • 下载对应版本解压即可。
    • 安装成功后,记住 jdk 的安装路径,后续需要用到。
  2. 配置环境变量

    • 打开 系统属性 → 高级 → 环境变量

    • 系统变量 中新增:

      变量名:JAVA_HOME
      变量值:D:\devtool\jdk\jdk-17.0.16+8
    • Path 中新增:

      %JAVA_HOME%\bin
    • 保存设置。

  3. 验证安装

    • 打开命令行,执行:

      java --version
    • 如果输出 jdk 的信息,则说明配置成功。

3. Expo 项目启用 Prebuild

  1. 生成原生项目

    npx expo prebuild

    然后执行完毕后,会生成 android 目录。

  2. 清除并重新生成原生项目

    npx expo prebuild --clean

    会删除已有的 androidios 目录,然后重新生成。

打包体积优化

方法一:找到 android/gradle.properties 文件,找到 reactNativeArchitectures ,根据需要删除即可

reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64

方法二:原生方法,在 android/app/build.gradle 文件中添加或修改以下配置:

android {
// 其他配置...

splits {
abi {
enable true // 启用按 CPU 架构拆分
reset() // 重置默认架构列表
include 'arm64-v8a', 'armeabi-v7a'
universalApk false // 是否生成包含所有架构的通用 APK(false 表示只生成分架构的独立包)
// 还有一个 exclude 配置是排除指定架构的
}
}

// 其他配置...
}

说明:

  • enable true:启用架构拆分功能。
  • reset():清空默认的架构配置,避免重复。
  • include:指定要生成的架构包,比如只打 arm64-v8aarmeabi-v7a
  • universalApk false:不生成通用包(即包含所有架构的 APK)。

举例:

执行打包命令后,将生成多个包,例如:

app-arm64-v8a-release.apk
app-armeabi-v7a-release.apk

每个 APK 只包含对应架构的二进制文件,体积更小。

如果把 universalApk 设置为 true,则只会生成一个:

app-universal-release.apk

这个包能在 arm64-v8aarmeabi-v7a 架构的设备上运行,但体积最大。