Uni-app跨平台打包完整指南:Android与iOS全流程解析

Viewed 0

Uniapp作为跨平台开发框架,其打包流程涉及环境准备、证书配置、打包方式选择及平台适配等关键环节。本文系统梳理Android与iOS双平台打包流程,结合云端与本地两种打包方式,提供从开发到发布的完整解决方案。

环境准备与项目配置

开发工具安装

  • HBuilderX:安装最新版作为核心IDE。
  • Android环境:安装Android Studio及JDK,并配置ANDROID_HOME环境变量。
  • iOS环境:需使用macOS系统安装Xcode,并注册Apple开发者账号(年费$99)。

项目基础配置

manifest.json中设置关键参数,例如应用ID、名称、版本及权限声明。示例如下:

{
  "appid": "你的应用ID",
  "name": "应用名称",
  "version": {
    "name": "1.0.0",
    "code": 100
  },
  "permissions": [
    "<uses-permission android:name=\"android.permission.CAMERA\"/>"
  ]
}

证书管理与配置

Android证书生成

  • 云证书(开发阶段):通过DCloud开发者中心自动生成,有效期100年,适合测试环境。
  • 自签名证书(发布阶段):使用keytool命令生成,例如:
    keytool -genkey -v -keystore my-release-key.keystore \
      -alias my-release-key -keyalg RSA -keysize 2048 -validity 10000
    
    参数说明:-keystore指定证书文件名,-alias为证书别名,-validity为有效期(天)。

iOS证书申请流程

  1. 生成证书请求文件(.certSigningRequest)。
  2. 在Apple开发者后台申请开发证书(Development)和发布证书(Distribution)。
  3. 导出.p12文件并配置描述文件(.mobileprovision)。

打包方式详解

云端打包(推荐)

操作步骤

  1. 右键项目 → 发行 → 原生App-云打包。
  2. 选择平台(Android/iOS)。
  3. 上传对应证书文件。
  4. 等待构建完成(约3-5分钟)。

优势:无需配置本地环境,自动处理依赖关系,适合快速迭代开发。

本地打包(深度定制)

Android本地打包流程

  1. 下载Android离线SDK。
  2. 在Android Studio中导入SDK示例项目。
  3. 替换HBuilderX生成的资源文件。
  4. 修改build.gradle配置,例如添加签名配置:
    android {
      signingConfigs {
        release {
          storeFile file("my-release-key.keystore")
          storePassword "your_password"
          keyAlias "my-release-key"
          keyPassword "your_password"
        }
      }
      buildTypes {
        release {
          signingConfig signingConfigs.release
          minifyEnabled false
        }
      }
    }
    

iOS本地打包流程

  1. 下载iOS离线SDK。
  2. 在Xcode中配置Bundle ID与证书匹配,并选择正确的描述文件。
  3. 生成IPA文件:通过Product → Archive → 提交到App Store。

平台特定配置

Android配置要点

  • 包名(Package Name):采用反向域名格式(如com.example.app)。
  • ABI过滤:在build.gradle中指定支持架构,例如:
    android {
      defaultConfig {
        ndk {
          abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
      }
    }
    
  • 渠道包配置:在manifest.json中设置渠道标识。

iOS配置要点

  • Bundle ID:与Apple开发者后台保持一致。
  • 设备支持:必须勾选支持iPhone或iPad中的至少一项。
  • 权限声明:在Info.plist中添加必要权限描述,例如相机权限:
    <key>NSCameraUsageDescription</key>
    <string>需要相机权限以拍照</string>
    

常见问题解决方案

打包失败处理

  • 依赖冲突:删除node_modulespackage-lock.json后重新执行npm install
  • 证书错误:检查证书文件路径和密码是否正确。
  • 资源过大:启用图片压缩和分包加载功能。

iOS安装问题

  • 无法验证完整性:确保设备UDID已添加到描述文件,并重新下载描述文件更新。

Android兼容性问题

设置合理的minSdkVersiontargetSdkVersion,例如在配置中:

{
  "android": {
    "minSdkVersion": 19,
    "targetSdkVersion": 33
  }
}
0 Answers