react-native fastlane自动化构建分发应用管理工具for iOS and Android

关于RN的相关资料,教你一步步开发react-native企业级应用

ReactNative开发企业级电商APP应用,环境搭建->开发工具->重点知识库->基础框架构建->iOS/Android上线

应用完成开发后,讲讲自动化构建fastlane,react-native fastlane自动化构建分发应用管理工具for iOS and Android

简单来说fastlane能为我们做些什么?

1、通过命令行 fastlane ios appstore / fastlane android google 即可将应用打包上传至App Store或Google应用市场

2、如果还处于内测阶段,fastlane ios debug / fastlane android debug 可以将应用打包上传至蒲公英pgyer上测试

----- -------------------- -------------------- -------------------- ---------------

先来看看我们的RN应用目录

一切开始的第一步:

brew cask install fastlane

进入RN项目根目录,执行 fastlane init (fastlane for react-native官方文档)

然后会生成fastlane目录和Gemfile文件,cd fastlane 编辑对于Fastlane文件来自定义打包命令

文件说明:

Appfile:设置开发者账号信息,如 Developer Portal Team ID 或 ITunes Connent Team ID等

app_identifier("com.wood.appname") # The bundle identifier of your appapple_id("[email protected]") # Your Apple email address

#itc_team_id("133456152") # iTunes Connect Team IDteam_id("UD5YXYYV23") # Developer Portal Team ID

Fastlane:定义打包动作,例如 lane appstore ,就可以在命令行执行fastlane appstore来做某些事情

# fastlane配置文件,定义fastlane可执行的动作

default_platform(:ios)

def build_sign_app(mode="release")  # register_devices应用内测阶段,注册苹果设备ID,可以扫码下载  register_devices(      devices_file: "./fastlane/devices.txt",      team_id: "UD5YXYYV23",      username: "[email protected]",      platform: "ios"  )  configuration = "Release"  dirPrefix = "Release_"  if mode == "debug"    configuration = "Debug"    dirPrefix = "Beta_"  end  # match应用签名,自动生成证书并上传至私有git仓库,保证安全  match(type: "adhoc", force_for_new_devices: true)    build_app(    export_method: "ad-hoc",    project: "./ios/yourapp.xcodeproj",    configuration: configuration,    scheme: "yourapp",    clean: true,    output_directory: "./build/output/#{dirPrefix}#{Time.now.strftime(‘%Y%m%d%H%M%S‘)}",    output_name: "rn-yourapp.ipa"  )end

def upload_to_pgyer(desc="", mode="release")  description = "正式环境"  if mode == "debug"    description = "测试环境"  end  # pgyer上传至pgyer进行内测  pgyer(    api_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxx",    user_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxx",    update_description: "#{desc}\n#{description}"  )end

def sign_appstore  increment_build_number(xcodeproj: ‘./ios/yourapp.xcodeproj‘)  match(type: "appstore", readonly: true)end

# 所有lane动作开始前都会执行这里的命令,例如指定打master上的包或执行project cleanbefore_all do |options|  #ensure_git_branch  #ensure_git_status_clean  #git_pullend

############################################### iOS #############################################platform :ios do  desc "构建一个测试环境版本上传至pgyer"  lane :debug do|option|    build_sign_app(mode: "debug")    upload_to_pgyer(desc: option[:desc], mode: "debug")  end

  desc "构建一个正式环境版本上传至pgyer"  lane :release do|option|    build_sign_app    upload_to_pgyer(desc: option[:desc])  end

  desc "构建一个正式环境版本上传至AppStore"  lane :appstore do|option|    sign_appstore    build_app(      export_method: "app-store",      project: "./ios/yourapp.xcodeproj",      scheme: "yourapp",      clean: true,      output_directory: "./build/output/AppStore_#{Time.now.strftime(‘%Y%m%d%H%M%S‘)}",      output_name: "rn-yourapp.ipa"    )    upload_to_app_store(app_identifier: "com.ddt.yourapp")    commit_version_bump(message: ‘Bump build‘, xcodeproj: ‘./ios/name.xcodeproj‘)    push_to_git_remote  end

end

############################################### Android ##########################################platform :android do

  desc "构建一个测试环境版本上传至pgyer"  lane :debug do|option|    gradle(task: ‘clean‘, project_dir: ‘android/‘)    gradle(task: ‘assemble‘, build_type: ‘Debug‘, project_dir: ‘android/‘)    upload_to_pgyer(mode: "debug")  end

  desc "构建一个正式环境版本上传至pgyer"  lane :release do|option|    gradle(task: ‘clean‘, project_dir: ‘android/‘)    gradle(task: ‘assemble‘, build_type: ‘Release‘, project_dir: ‘android/‘)    upload_to_pgyer(desc: option[:desc])  end

  desc "构建一个正式环境版本上传至AppStore"  lane :playstore do|option|    gradle(task: ‘assemble‘, build_type: ‘Release‘, project_dir: ‘android/‘)    upload_to_play_store    git_commit(path: [‘./android/gradle.properties‘], message: ‘Bump versionCode‘)    push_to_git_remote  end

end

Deliverfile:它属于fastlane工具集中的一个模块,用于配置上传App Store功能(本教程暂未用到)

Matchfile:证书管理,配置应用信息和git仓库地址,会自动生成签名证书来给应用签名,随后将证书上传至git私有仓库中保证安全。私有仓库这个要特别注意,保证你在命令行git clone your.git 可以download你的证书仓库,需要配置你的git.email/username --global,因为这个命令不会提示你输入密码、要设置username什么的,这些前置工作不到位直接就挂了,如果你有多仓库的话,参考:

Mac上Git多仓库管理(GitHub上有多个账号多个仓库如何配置ssh)

git_url("[email protected]:xxx/react-native-fastlane.git")

type("development") # The default type, can be: appstore, adhoc, enterprise or developmenttype("adhoc")type("appstore")

app_identifier(["com.ddt.yourapp"])username("[email protected]") # Your Apple Developer Portal username

Pluginfile:fastlane插件,社区提供了数不清的插件供我们使用

依次添加安装这些插件后会自动生成此文件

fastlane add_plugin versioning 
# Autogenerated by fastlane## Ensure this file is checked in to source control!

gem ‘fastlane-plugin-versioning‘gem ‘fastlane-plugin-appicon‘gem ‘fastlane-plugin-changelog‘gem ‘fastlane-plugin-pgyer‘ 

devices.txt:iOS应用内侧时扫码下载,在内的设备id才可以下载最多设置100台设备,苹果企业级账号没有这个限制,如何获取设备ID和相关信息

Device ID   Device Namea5e2118eebdad4c85011ade6919c22bbcxxxxxxx   我的iPhone X 按照这个格式添加设备 

执行命令

fastlane ios debug/release/appstore

fastlane android debug/release/playstore

原文地址:https://www.cnblogs.com/wood-life/p/10649619.html

时间: 2024-11-04 18:17:29

react-native fastlane自动化构建分发应用管理工具for iOS and Android的相关文章

React Native工程中TSLint静态检查工具的探索之路

建立的代码规范没人遵守,项目中遍地风格迥异的代码,你会不会抓狂? 通过测试用例的程序还会出现Bug,而原因仅仅是自己犯下的低级错误,你会不会抓狂? 某种代码写法存在问题导致崩溃时,只能全工程检查代码,这需要人工花费大量时间Review代码,你会不会抓狂? 以上这些问题,可以通过静态检查有效地缓解! 静态检查(Static Program Analysis)主要是以不运行程序的方式对于程序源代码进行检查分析的技术,而与之相反的就是动态检查(Dynamic Program Analysis),通过实

前端自动化构建——需求和工具选择

今天突然心血来潮,想把前端的一些人工工作流程自动化,其实之前已经在用grunt进行自动化构建,但总是觉得还是有些事情未做好.首先说说,前端平时需要做那些自动化吧: 1. 先讲HTML,每个项目每个页面都需要统一的头部,其他标题,关键字,作者等meta自行修改,body部分每个页面各自填充,但使用的框架统一. 2. CSS,我使用的是less来编写,所以需要编译成css,另外,编译过程,一些css属性需要自动添加浏览器前缀,例如border-radius,属性最好自动按照类型排序,一些css的编写

系统自动化配置和管理工具:SaltStack

http://os.51cto.com/art/201308/409041.htm SaltStack                2 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等. 参见 其他文档 下载Salt文档的副本: · PDF · ePub 查看之前的Salt版本文档请访问 http://salt.readthed

11.20 yum:自动化RPM包管理工具

yum(Yellow dog Updater Modified)是多个Linux发行版的软件包管理器,例如Redhat RHEL.CentOS和Fedora.yum主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系. yum [option] [command] [package] yum  [选项]   [指令]    [软件包] 参数选项          解释说明 y                 确认操作 -nogpgcheck       忽略GPG验证 -

React—Native开发之 Could not connect to development server(Android)解决方法

写在最前面: 本来,我是有一篇博客 RN开发之BUG 总结(持续更新) 来专门总结自己在React-Native开发中遇到的各种BUG 以及其解决办法的. 但是,由于 Could not connect to development server是我深恶痛绝的一个超级大BUG. 为什么这么说呢? 因为这个BUG并不容易在网上找到解决方法.网上确实有这个BUG,但是大部分都是解决IOS开发中遇到的,一 些老外的网站中也在讨论这个问题,好不容易找到点和我问题相似的,还并没有给出确定的解决方案,实在是

用React Native编写跨平台APP

用React Native编写跨平台APP React Native 是一个编写iOS与Android平台实时.原生组件渲染的应用程序的框架.它基于React,Facebook的JavaScript的库,为的是构建用户接口,而并不是以浏览器为目标,它是以手机平台为目的. 换句话说,假设你是一个web开发人员,你能够使用React Native去编写干净.高速的移动APP,而且能够体会到熟悉的框架和单个的JavaScript的代码库. 在这之前,我们已经听到用诸如Cordova或者是Titaniu

【React Native开发】React Native进行签名打包成Apk

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50525976 本文出自:[江清清的博客] (一)前言 [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 前几节课程我们对于React Native的一些基础配置,开发工具以及调试,Android项目移植做了相关讲解,今天一起来学习一下另外一个比较重要的知识点,就是React Nativ

React Native:使用 JavaScript 构建原生应用 详细剖析

数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用——就在今天,Beta 版的仓库释出了! 基于 PhoneGap 使用 JavaScript 和 HTML5 开发 iOS 应用已经有好几年了,那 React Native 有什么牛的? React Native 真的很牛,让大家兴奋异常的主要原因有两点: 可以基于 React Native使用 JavaScript 编写应用逻辑,UI 则可以保持全是

【Node.js学习笔记】使用Gulp项目自动化构建工具

刚接触node.js,对前端的一些东西还不是很清楚,据说Gulp这东西很强大,先来看看从网上抄的一段关于自动化构建的描述: 在为数众多的中小型软件作坊中,不存在自动化构建和发布工具.构建.交付准备环境.代码发布全由手工完成,同样还有运行测试.备份旧版本.新版本打标签以及许多其他重复的事情.毕竟你可能认为这全是非常简单的工作,集成开发环境通过按钮或快捷键就可构建项目,你开启两个窗口拖放少许文件或文件夹即可完成网站发布.但当你在维护代码库和应用时所有这些事情加在一起,这里几分钟,那里几分钟,最终会浪