Amap Work With Code Push
我们 app 用了高德地图和 codepush,iOS 里面之前用的高德地图 sdk 的 5.x 版本,最近想升级到最新的 6.6.0 发现和 codepush 出现了 symbol 的冲突,主要是两个函数 aes_decrypt_key128
和 aes_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 的方式会好一点,安装的还是对方发布的。