博客> RN加载下载的bundle文件的一些小坑
RN加载下载的bundle文件的一些小坑
2017-11-20 23:24 评论:0 阅读:320 superjunjun
UINavgationController 自定义UITabBar

在最近 公司的项目 爱上岗里 用到了 几个模块是需要加载RN组件的。有几种不同的加载方式 1.最开始用的是访问在线的index.ios.bundle文件,完全没有问题,缺点是每次都需要去加载,组件过大,加载的就比较慢。 2.直接下载zip文件放到本地沙盒,只下载一次,当版本改变时重新下载,这个时候index,ios.bundle加载本地的图片资源时会出现问题,主要是路径的问题 修改方法如下

修改 在React下有RCTImage 有RCTLocalAssetImageLoader.m 里的加载本地图片方法
在RCTUtils.m有 RCTBundlePathForURL 这个方法修改加载路径

NSString *documentPath = [NSHomeDirectory() stringByAppendingString:@"/Documents"];
NSString *picSuffix = [[path componentsSeparatedByString:@"/Documents"] lastObject];
NSString *jointPath = [NSString stringWithFormat:@"%@%@",documentPath,picSuffix];

这个修改源码后会导致加载工程中的index,ios.bundle时加载不出图片 修改RCTImageFromLocalAssetURL 方法中 判断一下如果是工程中的文件 if ([imageName containsString:@"xxx.app"]) { NSString imageNamed = [imageName componentsSeparatedByString:@"/"].lastObject; image = [UIImage imageNamed:imageNamed]; // image = [UIImage imageWithContentsOfFile:imageName]; } else { NSData imageData = [NSData dataWithContentsOfFile:imageName]; image = [UIImage imageWithData:imageData]; }

这样就ok啦 超级烦人这个玩意儿

收藏
0
sina weixin mail 回到顶部