阅读

解决RN集成Realm-js时iOS编译不通过

编者按: 数据库Realm,是用来替代sqlite的一种解决方案,它有一套自己的数据库存储引擎,比sqlite更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,在原生端和RN端都可以使用,受限于众所周知的网络状况,iOS在集成Realm过程中会通过脚本下载一些文件,如果下载不了,就编译不过,这时候需要采用一些特殊手段来完成集成任务。

请先尝试用最新版本的RealmJS集成,如果编译通过,则不用往下看了,本方案用于解决如下编译错误。

iOS集成编译了很久遇到以下错误:

Downloading core failed. Please try again once you have an Internet connection

解决方法如下:

1. 进入node_modules文件夹,编辑download-core.sh文件,打印download_core函数下的TMP_DIR、TAR变量

cd node_modules/realm/scripts/
vim download-core.sh
download_core() {
61 local DIR=$1
62 local VERSION=$2
63 local DOWNLOAD_FILE=$3
64 local SERVER_DIR=$4
65 local UNTAR=$5
66 local UNTARRED_DIR=$6
67 echo "Downloading dependency: $DIR $VERSION"
68
69 local TMP_DIR="${TMPDIR:-/tmp}/$DIR"
70 echo ${TMP_DIR} //打印
71 local TAR="$TMP_DIR/$DOWNLOAD_FILE"
72 echo ${TAR} //打印
73 local TMP_TAR="$TAR.tmp"
74
75 mkdir -p "$TMP_DIR"
76
77 if [ ! -f "$TAR" ]; then
78 echo "https://static.realm.io/downloads/$SERVER_DIR/$DOWNLOAD_FILE"
79 curl -f -L -s "https://static.realm.io/downloads/$SERVER_DIR/$DOWNLO AD_FILE" -o "$TMP_TAR" ||
80 die "Downloading $DIR failed. Please try again once you have an Internet connection."
81 mv "$TMP_TAR" "$TAR"
82 else
83 echo "Using cached $DIR from TMPDIR"
84 fi

2. 执行./download-core.sh download_core命令,可以看到具体的下载链接

https://static.realm.io/downloads/core/realm-core-2.8.6.tar.xz

和存放路径

/var/folders/4l/0gg5fn414knb4ynqh336k7hh0000gn/T//core

用safari翻墙下载,目前版本是realm-core-2.8.6.tar.xz,
执行命令将文件放入相关目录下

mv realm-core-2.8.6.tar.xz /var/folders/4l/0gg5fn414knb4ynqh336k7hh0000gn/T//core

3. 再执行./download-core.sh download_core命令

提示正在下载realm-sync-cocoa-1.10.5.tar.xz文件,并给出了下载链接,ctrl+c取消,

然后继续用safari翻墙下载,

目前版本是realm-sync-cocoa-1.10.5.tar.xz,
下载好以后,

目录地址和realm-core-2.8.6.tar.xz一样,只是把core替换成sync,也就是如下地址

/var/folders/4l/0gg5fn414knb4ynqh336k7hh0000gn/T//sync

将realm-core-2.8.6.tar.xz放入上述sync文件夹

4. 再次编译,iOS编译通过


鼓励一下

如果觉得我的文章对您有用,请土豪扫右侧二维码打赏2块钱,帮我买杯咖啡,您的支持将鼓励我继续创作!”


关于Kovli Studio

Kovli Studio是本人全栈开发历程中部分作品的展示平台。作品从衣食住行娱乐等各角度为用户提供实用、高品质、高颜值、高性价比的品质生活方案,欢迎使用。