Expo打包介绍

1,508 阅读2分钟

eas 构建

  1. 注册expo dev账号
  2. 安装eas-cli
npm install -g eas-cli
# or
yarn global add eas-cli
  1. 登录 eas login
  2. 配置 eas
eas build:configure
  1. eas 配置介绍
{

  "build": {
    // profile name
    "development": { 
      "developmentClient": true, // 是否开启调试模式,开启后会打包成一个自定义的expo client
      "distribution": "internal", // 分发机制,内侧包 则开启"distribution": "internal"
      "ios": {
        "simulator": true   // ios 模拟器包需要开启simulator, 否则认为是真机包,模拟器无法安装,安卓则不需要,真机模拟器可通用一个包
      }
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  }
}

  1. eas构建

    • andriod
    eas build --profile development --platform android
    eas build --profile development --platform android --message "Some message"
    
    • ios
    # ios 真机调试包,需先安装证书(模拟器不用)执行命令, 扫码注册后,则在打包时会提示选择device,使用空格键多选
    eas device:create
    eas build:resign (使用已有包)(复用构建 build,通过 space 多选设备)
    

    image.png

    eas build --profile development --platform ios
    eas build --profile development --platform ios --message "Some message"
    
    
    • all
    eas build --profile development  --platform all
    
  2. eas脚本本地构建(ios 为例)

     eas build --profile local --platform ios --local
    
  3. 安装已构建好的包

     # 建议之间去expo.dev download 也可使用命令行下载
     eas build:run -p ios
     eas build:run -p android
    
  4. eas 发布

eas submit --platform ios
  1. testfilght

config-plugin使用

常见问题解决

eas 打包资源下载不下来问题解决

问题描述: 在使用地图组建 react-native-amap3d 时,依赖高德地图底层AMap3DMap的ios包,常常下载超时,导致服务编译多次失败 解决方案如下:

  1. 将AMap3DMap下载到本地
  2. 配置podspec
require "json"

Pod::Spec.new do |s|
  s.name         = "AMap3DMap"
  s.version      = "9.6.2"
  s.summary      = "MAMapKit 3D for iOS."
  s.homepage     = "http://lbs.amap.com/api/ios-sdk/summary/"
  s.license      =  { :type => 'BSD' }
  s.authors      = "lbs.amap.com"
  s.social_media_url = "https://lbsbbs.amap.com/forum.php?mod=forumdisplay&fid=38"
  s.documentation_url = "https://a.amap.com/lbs/static/unzip/iOS_Map_Doc/AMap_iOS_API_Doc_3D/index.html"
  # 这里使用本地路径或者使用自己的服务器路径
  s.source       = { :http => "file:///Users/expo/workingdir/build/test/AMap_iOS_3DMap_Lib_V9.6.2.zip" }
  s.source_files = "MAMapKit.framework/**/*.{h}"
  s.platforms    = { :ios => "9.0" }
  s.pod_target_xcconfig = { 'ARCHS' => "$(ARCHS_STANDARD)" }
  s.public_header_files = "MAMapKit.framework/Headers/*.h"
  s.resources = "MAMapKit.framework/AMap.bundle"
  s.vendored_frameworks = 'MAMapKit.framework'
  s.frameworks = "QuartzCore", "CoreLocation", "SystemConfiguration", "CoreTelephony", "Security", "OpenGLES", "CoreText", "CoreGraphics", "GLKit"
  s.libraries = "z", "c++"
  s.dependency 'AMapFoundation', ">=1.8.0"
end

  1. 配置expo-build-properties
    "plugins": [
      [
        "expo-build-properties",
        {
          "ios": {
            "extraPods": [
              {
                "name": "AMap3DMap",
                // zip包文件所在目录
                "path": "../test",
                // 制定podspec 这里不能使用json格式,必须使用.podspec格式
                "podspec": "../test/AMap3DMap.podspec"
              }
            ]
          }
        }
      ],
      ...