Android-RN混合开发系列(二、RN本地与远程环境库的搭建)

经过了上一讲Android-RN混合开发系列(一、Android项目内RN的环境)的介绍,相信对于RN混合开发项目有了一定的了解了,这一讲标题RN项目中分离出Android项目,换个思路,我们其实就是初始化一个Android项目,并在里面配置RN即可。

首先要思考清楚一个问题,假设公司已经有很多个完整的大型App了,那很显然,我们不可能初始化一个RN项目,以RN项目为主体来进行开发,这样的话Android和Ios项目需要修改的地方就太多了,比如git仓库就得大改,其次每一个项目都要配置RN环境等等。本着简约原则,这里我提供一个思路(我现在公司的开发方式):

1.初始化一个新的Android项目,配置RN环境。
2.当有一个App(假设是一个叫WU的App)需要使用到RN模块的时候,在上述新初始化的项目中新建一个library。
3.在library中写完交互逻辑之后,打包成aar文件并上传到公司或者私有的maven库上。
4.在WU项目内像引入三方库一样引入即可。

根据一贯的尿性,这里我只会讲第1点。2,3,4我会在后续文章中讲解。

是的吧!!!!!

1.Android项目中配置RN本地环境

首先用AndroidStudio打开刚刚RN项目里面的android项目,直接运行,发现竟然运行成功了,这是什么情况???

仔细思考一下,Android项目跟RN项目之间的关联,好像就只有Android项目的build.gradle这一个文件夹中的一个配置有关,其中引用了react-native的三方库,so,我们初始化一个Android项目,加入RN项目里面Android项目的两个build.gradle的那两个配置,这里再放一下代码别搞错了:
app模块的build.gradle

api ('com.facebook.react:react-native:0.55.2') {
    exclude group: 'com.android.support'
}

项目的build.gradle

maven {
      // All of React Native (JS, Android binaries) is installed from npm
      url "$rootDir/../node_modules/react-native/android"
}

这里注意一下,在项目的build.gradle中添加本地maven库的配置的时候,@rootDir代表的是Android的根目录,然后去原来的RN项目里面,将node_nodules/react-native/android目录下面的那个react-native的库拷贝过来就好了,然后路径自己改一下,能引用到即可。

2.Android项目中配置RN的远程环境

为什么要说配置远程环境呢???
因为神奇的facebook,对于rn的远程maven环境,只维护到0.20.1版本,后面竟然不再维护了。好吧,开发没一点难度怎么行呢?
对于遇到的各种bug我就不这说了,坑都是前人踩的,后来的人直接跳过去就好了。

心里立马有了思路,我们进入reactnative的本地环境库,看到有一个aar,一个jar,一个pom,那么很自然地就想到了将aar传到maven上面(后面会有专门一节讲解如何打包aar已经如何上传到maven的方式),再引入不就好了,这里我只能说呵呵了。我遇到的问题:
1.报Soloader找不到,这个库怎么会没有呢?
看了一个react-native库下面的pom文件,里面是有引入soloader的啊,如下图

都是骗人的,根本没有引入

既然这样不行,那我单独给它引入行不?
加入以下一句:

implementation 'com.facebook.soloader:soloader:0.1.0'

编译没问题了,运行之后跳转到RN模块时候,又报libjsc.so库找不到,肯定哪里出现了问题,这样一直处理何时是个头啊。。。经过了我无数次的尝试,发现本地RN环境库内的pom文件列出的那些三方库,在我将他们上传到远程库之后,根本没有下载成功,意味着这种方式,缺少很多三方库,那自然会报很多错了。

最终在无数次的反编译react-native.0.55.2.aar和react-native.0.55.2.sources.jar之后惊讶的发现,aar里面有一个classes.jar文件,竟然跟react-native.0.55.2.sources.jar解压之后长得几乎一模一样,aar直面只缺少了一个soloader库,嗯,到这里就感觉自己恍然大悟了。这说明我们可以抛弃jar,直接使用aar就好了,只不过要加上implementation 'com.facebook.soloader:soloader:'这么一句话,至于这个库的版本自己在pom文件内查看。

当然我尝试了将aar和pom文件传到maven库上无数次之后发现,是有问题的,pom文件内的三方库基本都是下载失败的,翻墙也不行。就算编译成功了,最后运行也是各种报错。

最终,我只将aar传到了maven上面(这个放在本地也可以,只是我不想看到任何一个aar出现在我的项目目录里面),然后打开pom文件,将里面所有的三方库手动引入,再之后,将当前Android库打包成aar上传到maven上面。一个RN的远程库就这样给完成了。搞了好几天,每天各种尝试,终于给解决了。

我不是

下面是我远程环境库的配置(有详细介绍):

RN远程库配置,配置完上传maven就可以引用啦

最终我的项目结构是这样的:

1.app模块作为一个测试库
2.rncommon作为RN环境库
3.多个交互库(每一个交互库对应一个App)

每一个库都是修改完直接上传到maven上面,互相之间互不影响无关联。
当App想要用到某个交互库的时候,直接引入即可,不需要在APP内配置任何RN环境。

到此为止已经配置完成了。下一节讲一下交互的代码(官方文档上面有讲解,看官方文档也可以)。

有疑问的可以在评论里面问我,虽然不敢说自己技术有多牛,但是毕竟配这个环境解决了很多坑,还是有一些心得可以借鉴的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342