Amap Work With Code Push

我们 app 用了高德地图和 codepush,iOS 里面之前用的高德地图 sdk 的 5.x 版本,最近想升级到最新的 6.6.0 发现和 codepush 出现了 symbol 的冲突,主要是两个函数 aes_decrypt_key128aes_encrypt_key128

高德地图是不开源的,万幸我们有 codepush 的源码,所以思路是只需要把 codepush 里面冲突的函数改个名字就好了。

改代码很简单,主要是怎么和项目集成。我用的是 patch-package ,做法如下。

package.json 的 scripts 增加一个 postinstall

 "scripts": {
  "postinstall": "patch-package"
 }

然后就是改 node_modules/react-native-code-push 下面的文件,改完之后,执行一下 yarn patch-package react-native-code-push 会生成一个类似 patches/react-native-code-push+5.5.1.patch 的文件,确认一下这个文件里面是不是包含了你修改的内容。

这就可以了,以后执行 yarn install 的时候会自动打这个 patch。

这个方式比 fork 一份对方的代码好一点,有时候有些代码发到 npm 的是编译之后的版本,fork 之后也不好用,除非你也发布一个。用 patch 的方式会好一点,安装的还是对方发布的。