我保持中立态度,说不定框架中的dlopen、dlsym、、、 现在fb的人已经改rn框架了,想告诉你们提前做好升级rn版本的准备

深圳金马
@深圳金马
深圳金马 发布的帖子
-
react native 差异热更新js&apk,我感觉好多人需要
中文网自己写了一个,我也写了一个,我楼下那个也写了一个(反正我觉得我写的是最好的,大牛读下代码就知道了),啥都不说先上项目地址
https://github.com/shenzhenjinma/react-native-horse-push
具体原理看优酷视频第46分钟开始 http://v.youku.com/v_show/id_XMTUxOTE5MzQwNA==.html流程图这样的
集成了灰度部署,但是需要再后端实现,这里因为没有时间就先写差异更新, 文档肯定写的不好,我有空再写详细点,有啥问题加qq群389969823 就不装逼写那么多英文了,给国人看的都中文吧 这是一个中国式的react native更新 他包含 apk 与 js的差异更新 并且支持灰度部署,需要通过后端实现。 这个插件已经在app端实现了所有需要的功能了,后端我还在写,如果你很急可以根据你的业务逻辑写下你的后端,到时候后端会放出。 这里我会给你后端如何返回数据的一个简单demo。
业务流程图
把这个项目下载下来,在你的程序引入这个依赖包
在安卓的assets文件夹下面放置你的js bundle文件,文件名一定要为 horse.push.js,就是我们的基础,因为我们的差异更新必须有一个基础包,在你发布到时候的时候你可以内嵌一个最新的jsbundle包就可以了
创建安卓程序的application (in Application.java)
public void onCreate() {
HorsePush.getInstance(getApplicationContext(), "http://you.server/horsepush", "you_channel");// <------ 加入这个代码
}
修改 MainActivity (in MainActivity.java)
protected void onCreate(Bundle savedInstanceState) {
startActivity(new Intent().setClass(getApplicationContext(), HorsePushStartPage.class));// <------ 加入这个代码,使用启动屏
}protected String getJSBundleFile() { return HorsePush.getJSBundleFile(this); // <------ 加入这个代码告诉rn通过本地启动 } protected void onResume() { HorsePush.reCheckUpdate();//<------每次从后台返回都会尝试更新 }
}
生成差异文件通过 bsdiff生成,这两天没空,我会更新的,很简单的你自己研究下bsdiff的用法
Usage每次打开app的时候都会请求你在application里面写的接口,由接口返回更新数据,数据格式如下,
每次会吧自己的app版本号和渠道号和js的md5传送给服务器,由服务器返回的数据决定是差异更新还是完整更新,
如果差异更新里面字段有内容就用差异更新进行更新,{
"code": 200,
"msg": "获取成功",
"data": {
"javaVersionCode": 0,
"javaVersionInfo": "发现新的apk版本",
"javaForceUpdate": false,
"javaPatchDownlink": "http://you.server/patch.apk",
"javaDownlink": "http://you.server/newversion.apk",
"javaDownlinkMd5": "you apk md5",
"jsVersionInfo": "欢迎使用xxx,点击确定进入最新版",
"jsForceUpdate": false,
"jsPatchDownlink": "http://you.server/patch.js",
"jsDownlink": "http://you.server/newversion.js",
"jsDownlinkMd5": "you js md5",
"startpageimg": "http://you.server/startpageimg.jpg",
}
} -
RE: react-native热更新js脚本
@鸿杰 说:
新,肯定离不开版本号,各家的版本号格式不同,意义也不一致,比较流行的版本号由3到4个数字组成,其中用.隔开,比如1.23.53、2.343.12.34,基于react-native开发产品,我个人觉得比较合理的版本号应该由4个数字组成,从左到右,第一位数字表示大版本号,当有重大更新时,该位数字加一,第二位数字是react-native的版本号,第三位数字表示发布的次数,发布正式版时,该位数字为偶数,发布测试版时,该位数字为奇数,在研发时,内部测试版和对外发布的正式版一定是有所区别的,那么我们通过判断该位的奇偶性就能很方便地区分对待了,最后一位数字表示了版本管理工具的版本号,比如我们目前使用svn来管理项目版本,每次提交时svn都有一个自增的版本号,将这个版本号记录在产品的版本号中,可以方便我们通过svn的log查询到对应的修改内容。
了解了版本号中各个数字的意义之后,那么我们接下来说说如何实现js代码的热更新。
热更新的大致流程如下:我怎么感觉这个和我那么像?https://github.com/shenzhenjinma/react-native-horse-push
-
多语言适配组件(文字和图片支持多语言)
某个朋友说他们要把app弄到东南亚去,需要用到多语言,于是半夜睡不着写了一个多语言组件,文字和图片是可以根据多语言自动变的,放到github上下面的地址就是,res目录里面
https://github.com/shenzhenjinma/react-native-horse-push/tree/master/react/res -
Techparty-广州-2016年3月ReactNative专场沙龙【直播】
做好心理准备,这么多图片小心卡爆你浏览器,要不要关掉无用程序?
!
Techparty-广州-2016年3月ReactNative专场沙龙直播地址:
时间 3月26号 13:30
保利威视直播: http://live.polyv.net/watch/101116.htm
斗鱼直播: http://www.douyutv.com/techparty新的一年开始了。Techparty(珠三角技术沙龙)广州和深圳的活动继续搞起来了。 广州的2016年3月的沙龙主题为React Native。
Facebook 在 React.js Conf 2015 大会上推出了基于 JavaScript 的开源框架 React Native。React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替 DOM 元素来渲染等。
主题
0:开场自我介绍
主题一:《React Native如何应用在工程中》
吴宗倬 - 就职于微信。
主题简介:
React Native 优势和劣势,通讯原理。 前端和终端开发介绍。以及React Native嵌入微信iOS。
主题二: 《React Native快速开发最佳实践》
Gold Horse(黄泽彬) - 广州linux网 站长(百度搜:广州linux 或者 广州 react native) reactnative.cn管理员之一 就职于广州臻贝,10年web,seo搜索引擎优化,逆向开发,5年app、pc、linux、爬虫、开发。
主题简介:
Supercell百多人的团队每年就开发十几个项目,但真正赚钱的就那么几个。作为一个商业的APP应用开发亦是如此,(['React Native','十几人的开发团队','快速开发','事半功倍'])=>{return '新的蜕变'}。
主题三: 《在Rails项目中使用React JS》
RainChen(陈林燏) - 现任广州Beansmile 技术总监,10年web开发、8年ruby on rails开发经验,主持开发过各种系统,目前专注敏捷团队管理。
主题简介:
分享如何在rails项目中集成reactjs,遇到的问题和解决方法。
中场休息
主题四:《珠三角技术沙龙app开发的React Native实践》
赖勇浩 - 珠三角技术沙龙(Techparty)发起人之一,老程序员,齐昌网络总经理。
主题简介:
珠三角技术沙龙app发布在即,这个通过React Native实现“一套代码,两个平台”梦想的项目在开发过程中踩过哪些坑,这个论坛型的app又经历了怎么样的演变,欢迎你来到沙龙,为你揭晓。
主题五: 《React with TypeScipt》
卢建晖 - 微软Windows Development MVP,华南师范大学网络教育学院程序开发总监,从事教育行业的移动应用。多年的跨平台开发经验,为不同行业提供Xamarin/Cordova/ReactNative的解决方案。
主题简介:
利用Typescript 快速编写ReactJS,结合Visual Studio Code编写和部署ReactJS应用。
主题六: 《Realm - 替代 SQLite 的跨平台移动数据库》
荆雷 - 悉尼大学计算机硕士,多年软件开发经验。曾致力于多媒体、计算机视觉等领域的研发。现专注于 JavaScript 全栈开发,对 Meteor 和 React 兴趣浓厚。曾就职于 UTStarcom, 澳洲西悉尼大学 MARCS 听觉实验室 (现 MARCS 学院) 等机构。
主题简介:
Realm 是一个移动数据库,可运行于手机、平板和可穿戴设备上。其目标是代替 SQLite 和 CoreData。2016 年 2 月,Realm release 了 React Native 版本。其性能完爆 SQLite 和 AsyncStorage。Realm 不仅性能优异,也很简单易用,更重要的是契合了 React Native 的 reactive pattern 和 unidirectional data flow. 所以是一个必须关注的下一代移动数据库。
抽奖环节
拍照留念
活动结束
沙龙长期赞助商: 'Coding', 'UC', 'UCloud', '七牛', '融云'
并由七牛提供的精美奖品
报名方式:
活动时间:2016年03月26日(周六)下午 13:30 - 17:30
费用:50元 (场地咖啡费用)
地点:广州某咖啡厅,后续通知