expo本地化react-native项目,并打包iOS项目发布
本地化
首先需要进入到项目根目录下,检查app.json文件是否已经配置,主要检查一下项:
"ios": {
"supportsTablet": true,
"bundleIdentifier": "开发者账号",
},
检查正常后执行:
expo eject
项目将开始准备本地化,这时候会出现三个选项,大概意思就是询问你想本地化成什么项目,这里选择的ExpoKit,这个操作可能会比较漫长,操作完成后项目会多出ios和android文件夹。
这里只记录iOS打包过程
接下来需要先安装CocoaPods
sudo gem install cocoapods
安装完成后
cd ./ios
pod install
这又是一个很漫长的过程,可能会出现一些资源包请求超时,可以执行一下命令
brew install git-lfs
git lfs install
pod update again
还有些需要命令行翻墙的情况,如果你使用的是zsh
vi ~/.zshrc
加入以下配置
alias pon='export http_proxy=127.0.0.1:1087;export https_proxy=$http_proxy'
alias poff='unset http_proxy;unset https_proxy'
alias git_pon='git config --global http.proxy http://127.0.0.1:1087;git config --global https.proxy https://127.0.0.1:1087'
alias git_poff='git config --global --unset http.proxy;git config --global --unset https.proxy'
注意端口号设置正确
source ~/.zshrc
pon
git_pon
测试是否成功
curl -I https://google.com
<!--成功-->
HTTP/1.1 200 Connection established
HTTP/2 301
location: https://www.google.com/
content-type: text/html; charset=UTF-8
date: Mon, 26 Aug 2019 09:45:33 GMT
expires: Wed, 25 Sep 2019 09:45:33 GMT
cache-control: public, max-age=2592000
server: gws
content-length: 220
x-xss-protection: 0
x-frame-options: SAMEORIGIN
构建成功会输出
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 47 dependencies from the Podfile and 55 total pods installed.
在Xcode中打开构建成功的ios文件,开始build,这个时候需要在项目目录下执行yarn eject 这条命令是在eject的时候创建的文件中自动生成的,因为这个是我们已经是一个本地化的项目了,所以需要按照这个命令执行程序,配置地址。
打包
因为网上已经很多react-native项目发布iOS平台的贴,但是又比较老了,这里贴一个老版教程,有些没讲到的可以参考:iOS App打包上架超详细流程(手把手图文教你)
工具:
- Apple开发者账号
- Xcode
打开 苹果开发者中心(最好是手机热点开启供电脑访问,局域网我基本没有访问成功过),登陆上述的开发者账号
Account-> Certificates, Identifiers & Profiles -> Identifiers -> App IDs -> 填写你的描述信息和 ID名,并且在下方选择这个ID需要的服务,如 iCloud,Push Notifications,按需开启。
创建完成回到 Identifiers,从列表进入刚才创建的ID,下方配置你的服务证书(我只配置了2项):
iCloud -> Configure -> 选择对应项。
Push Notifications -> Configure -> 这里需要根据需求配置证书,有两个场景(开发,发布) -> Create Certificate -> Choose File -> 打开本地钥匙串访问程序,钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书 -> 填写好相应信息 -> 存储到磁盘 -> 在choosefile中选择刚才生成的请求文件 -> Download -> 打开到钥匙串。
至此,证书和ID已经配置完成,但是还需要配置相关描述文件。
Account-> Profiles ->
新建 -> 根据你当前的ID类型确定你的选项,Ad Hoc是调试内测版,如果是上架ID,就选择App Store -> 选择对应ID -> 选择你需要包括在此配置文件中的证书 -> 选择可安装的设备(没有的话就在Devices添加) -> 输入文件名称 -> Download -> 双击打开在Xcode
打开Xcode:
Project - Info -> Configurations -> 添加宏(dev pro test )
打开目录下的info.plist文件:
Bundle display name - $(Bundle_Name)
Targets -> BuildSettings -> Packaging -> Product Bundle Identifier -> 根据不同的环境配置不同的ID
Targets -> BuildSettings -> Use-Defined -> 添加环境变量名称 -> Bundle_Name -> 各个环境配置好。
Product -> Scheme -> ManageScheme -> 添加 -> 输入scheme名称 -> 编辑刚才添加的scheme.
我主要更改的是:
Run(就是平时运行的配置) -> info -> Build Configuration -> 选中对应的scheme 。
Archive(构建,发布) -> info -> Build Configuration -> Archive Name -> 就是你要打包出来的包名。
==!!EXShell.plist文件中的manifestUrl 对应的地址,现在应该是我们本地调试地址,有需要的话应该更改成不同环境的线上地址。==
当前设备选择 -> Generic iOSDevice.
Product -> Archive.
打包完成后,选择export。
可以通过Xcode上传到App Store,但是我选择的是Application Loader,需要开发者账号生成一个app的生成专用密码,选取你的app,即刻上传(需要先在App Store Content中添加你的app信息,不然会上传失败)。
关于推送配置
首先需要先行创建好一个Identifier
到 Certificate,创建你的Certificate证书,根据场景选择类型
本地调试--选择iOS App Development
发布到蒲公英或者App Store -- 选择Apple Push Notification service SSL (Sandbox & Production)
到Profiles,创建你的Profile描述文件
本地调试--选择iOS App Development
发布到蒲公英或者App Store -- 选择Ad Hoc
以上是我自己在项目中实验得出的总结,有问题的希望大家指出~