React Native实战(二):Android的打包
原文地址: http://www.csdn.net/article/2015-09-30/2825835-react-native-2 关于打包 打包目的 除了热部署,我们知道,APP 运行的时候不应再从 Debug Server 获取资源。分发应用时 JS 资源应该被打包到 APP 中。 另外对外发布的安装包,资源中的业务代码的混淆也是必须的。 React Native 打包方式 目前 iOS 应用可用 react-native bundle 命令进行打包,同时对 Android 的支持工作也已经开始了。但在目前 npm 中最新的版本(0.11.4)暂时还不支持。 最新的代码中看似已经支持了,但还没最终发布。等正式发布支持了,我另写一篇文章介绍使用 react-native bundle 命令进行打包。 目前对于 Android 的 React Native 应用,可用 react-native-gradle 插件进行打包。该插件灵活配置打包参数,使用 Gradle Task 将资源打包到资源文件夹。 但 官方计划使用 react-native bundle 命令进行打包,并且有放弃对 Gradle 插件支持的倾向。 都使用 react-native bundle 进行打包,对开发人员来说,只要掌握一套打包命令即可。但是对于 Android 的开发者来说,插件方式似乎更符合平时的开发习惯。各位自行取舍。 React Native 开发目前非常活跃,代码变迭频繁,本文所讨论的代码版本为:https://github.com/facebook/react-native/tree/0ff3a421c9adbe4137e07e158c9812062b34ea5a 编译插件 借助插件 react-native-gradle: com.facebook.react:gradleplugin:1.0.+可完成混淆及资源打包。 然而这个插件并没有发布到 JCenter 或者 Maven Centry。需要自己编译,然后发布到本地 Maven 库。源码在 react-native-gradle目录下。按照 文档编译安装: mac-2:react-native-gradle srain$ gradle build install 我们可跳过测试用例,直接安装。虽然官方提供的测试用例本身有问题,无法进行测试,但我亲测可用。 题外话,对于给出的解释,显得非常不讲究,目前整个项目处于高度活跃中,文档和实际功能严重脱节,很多不一致的地方。 看来任何团队都会面临项目压力,变得节奏不再优雅啊,所谓的理想团队都是瞬时态。 mac-2:react-native-gradle srain$ gradle install mac-2:react-native-gradle srain$ ll ~/.m2/repository/com/facebook/react/gradleplugin/ build.gradle 配置如下: [cpp] view plaincopy [cpp] view plaincopy react { devParams { skip true dev true inlineSourceMap false minify false runModule true } releaseParams { skip false dev false inlineSourceMap false minify true runModule true } } 上面 react 项中的配置已经在注释中说明。其中,packagerCommand 官方给出的文档描述有误。 devParams 和 releaseParams 分别 debug 版本和 release 版本的参数。它们各有五个参数: 参数意义如下: dev: 等同于全局变量 DEV,React Native 核心类库的开发选项。 每次打包,插件都会根据配置,决定是否打包以及以怎样的配置打包资源。 Demo 这里是一个 Demo: https://github.com/liaohuqiu/ReactNativeTestGradlePlugin。 Demo 主要演示了 build.gradle 的配置,用 Android Stuido 打开即可运行,不要修改 Dev Setting 中的 Debug Server,因为资源都已经打包,不再在从 Debug Server 下载。可以解开 debug.apk 看 assets 目录下的文件。 其中包含了一个编译安装 react-native-gradle 到本地 Maven 库的脚本,运行即可。 react-native bundle 命令简介 命令用法如下: mac-2:AwesomeProject srain$ react-native bundle –help Options: react-native bundle –minify 本文写于旅途,从洛杉矶到旧金山的 greyhound 大巴车上。时间仓促,水平有限,如有谬误,还请纠正,原始文档在这里。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |