ReactNative打包发布流程、自动化上传第三方测试平台

news/2024/7/20 22:17:17 标签: android, ios, react native

Android

Android要求所有应用都必须先使用证书进行数字签名,然后才能安装。为了通过Google Play商店分发您的Android应用,需要使用发布密钥对其进行签名,然后再将其用于以后的所有更新。

生成证书

android/app下执行

keytool -genkey -v -keystore my-release-key.keystore  -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

在生成过程中需要填写一些信息。

androidgradleproperties_14">修改 android/gradle.properties

android.useAndroidX=true
android.enableJetifier=true
 MYAPP_RELEASE_STORE_FILE=my-release-key.keystore // 生成证书的名字
MYAPP_RELEASE_KEY_ALIAS=my-key-alias // 生成证书的别名

编辑 android/app/build.gradle文件添加如下代码

android {  
    ...  
    defaultConfig { ... }  
    signingConfigs {  
        release {  
            storeFile file(MYAPP_RELEASE_STORE_FILE)  
            storePassword pass  
            keyAlias MYAPP_RELEASE_KEY_ALIAS 
            keyPassword pass  // 证书密码
        }  
    }  
    buildTypes {  
        release {  
            ...  
            signingConfig signingConfigs.release  
        }  
    }  
} 

关于安全性的注意事项: MAC开发可以配置免明文密码输入,通过把证书访问密码写入系统钥匙串里面。每次build时通过自动读取钥匙串中的密码。设置链接。

def getPassword(String currentUser, String keyChain) {
def stdout = new ByteArrayOutputStream()
def stderr = new ByteArrayOutputStream()
exec {
    commandLine 'security', '-q', 'find-generic-password', '-a', currentUser, '-s', keyChain, '-w'
    standardOutput = stdout
    errorOutput = stderr
    ignoreExitValue true
}
//noinspection GroovyAssignabilityCheck
    stdout.toString().trim()
}

def pass = getPassword("android_keystore","android_keystore")

设置Android版本

android/app/build.gradle中,设置对应的版本号versionName,versionCode

打包Android Release包

cd android
./gradlew bundleRelease // aab
./gradlew assembleRelease // apk
./gradlew assembleRelease // 打包并安装

Android App Bundle 格式发布应用,就需要使用Google Play 应用签名(翻墙访问)。

aab 新的应用发布格式 Android App Bundle 是一种更有效的方式来构建和发布您的应用。Android App Bundle 让您可以更轻松地以更小的应用程序大小提供出色的体验,从而支持当今各种各样的Android设备。切换很容易。您无需重构代码即可从较小的应用程序中受益。适用于Android Studio 3.2或更高版本以及Unity 2018.3 beta版。

Google Play的新应用服务模式称为动态传递,然后使用您的应用包为每个用户的设备配置生成并提供优化的APK,因此他们只下载运行您的应用所需的代码和资源。您不再需要构建,签署和管理多个APK来支持不同的设备,用户可以获得更小,更优化的下载。

如何使用Android APP Bundles

环境要求:Android Studio 3.2+
代码配置:
在app中的build.gradle文件中的android闭包中添加如下代码:

android {

    ......

    bundle {
        density {
            // Different APKs are generated for devices with different screen densities; true by default.
            enableSplit true
        }
        abi {
            // Different APKs are generated for devices with different CPU architectures; true by default.
            enableSplit true
        }
        language {
            // This is disabled so that the App Bundle does NOT split the APK for each language.
            // We're gonna use the same APK for all languages.
            enableSplit true
        }
    }
}

将density、abi、language中的enableSplit设置为true,这样在生成apk时就可以通过屏幕分辨率、cpu架构、语言进行拆分。

修改完毕之后,进行同步,现在,您可以构建App Bundle。转到Build> Build Bundle(s)/ APK(s)并选择Build Bundle(s)

以.apk打出来的release包路径 android/app/build/outputs/bundle/release/xxx 并且可以将其上传到android应用平台。

IOS

IOS打包发布之前需要创建一个APPID,对应需要创建app账号和相应的创建权限。

创建APPID

1587353896789.jpg

1587353966193.jpg

1587353991230.jpg

1587354048130.jpg

检查下刚创建的bundle id

1587354106070.jpg

将创建的bundle填入xcode identity

1587354158779.jpg

配置开发证书和发布证书

1587353966193.jpg

将创建好的证书加入到钥匙串。

添加测试设备

  1. 在【Certificates,IDs&Profiles】中点击【Devices】进入设备管理界面。
  2. 点击【+】号,注册科调试设备,如图:

打包ipa包

点击Product --> Archive,按钮,生成发布文件。当app发布文件上传到AppStore的发布网站后,未发布提交前,若重新打包上传,必须要更换其Build的版本号,否则上传时会报错。

上传发布文件

点击【Validate App】按钮,校验安装包。

1587361886694.jpg

标记1 : 验证当前的App

标记2:发布/导出App

发布新版本、新应用

登录到Apple开发平台,进入到 App Store Connect。

1587362127032.jpg

添加新应用

1587362154218.jpg

点击新建app,填写应用名称、平台、语言、SKU等。

1587362167913.jpg

创建应用后,在App信息页面填写上App的基本信息(产品需要准备好)。然后点击添加版本或平台。

1587362572498.jpg

添加要发布的版本之后, 填写版本信息。包括App预览图和截屏(有截图尺寸要求,具体参见详细的截屏要求)。版本的宣传文本、描述等重要信息。(产品和UI需要准备好对应的版本更新信息、截图)

1587362701488.jpg

在上传完发布包之后 可以在构建版本中选择上传之后的版本。

1587362843340.jpg

1587362927086.jpg

App审核的信息

如果app有登录,需要供用户名和密码,以便审核人员登录App进行验证。并提供下开发的联系信息。方便及时收到审核反馈。
1587363056402.jpg

检查当前版本的提交信息无误之后,就可以提交审核。审核的进度有邮件提醒。

自动打包

配置上传蒲公英托管平台进行测试分发

蒲公英

首先先安装依赖

# Npm
npm install react-native-upload --save-dev

# Yarn
yarn add react-native-upload --dev

生成配置

npx upload-init

执行命令后会在项目根目录中创建一个upload.json文件,并生成以下内容:

// 未用到的配置,可以置空不填写,也可以直接删除
{
    // 上传到蒲公英
    "pgy": {
        // 上传凭证,访问链接 https://www.pgyer.com/account/api ,复制Api Key
        "pgy_api_key": "",
        // App安装方式,共有两种   2:密码安装,3:邀请安装
        "pgy_install_type": 2,
        // App安装时的访问密码,选择 "2密码安装" 时,访问密码必填
        "pgy_install_password": "123456",
        "ios_export_plist": "./ios-export/ad-hoc.plist"
    }
}

自动打包上传


npx upload-pgy

// 填写更新日志
npx upload-pgy --log "增加xxx功能"

// 忽略平台
npx upload-pgy --no-android
npx upload-pgy --no-ios

// android默认打包release版本,可以改成debug版本
npx upload-pgy --variant=debug

// 默认上传所有生成的android apk文件,可以使用正则表达式指定文件名称

npx upload-pgy --apk=app-release.apk
npx upload-pgy --apk=x86_64
npx upload-pgy --apk=release-[0-9]

只打包不上传


// 同时打包androidios
npx upload-build --ios-export-plist path/to/xxx.plist

// 安卓默认打包release版本,可以改成debug版本
npx upload-build --ios-export-plist path/to/xxx.plist --variant=debug

// 单独打包android
npx upload-build --no-ios

单独打包ios
npx upload-build --no-android --ios-export-plist path/to/xxx.plist

开发过程中要注意

  • 每次打完包上传app store、google play之后,iosandroid对应平台的build号需要增加,这是因为在提交应用商店选择对应的build版本号不允许重复。
  • 上传第三方测试平台,养成每次build构建之后添加对应的更新描述,增加对应的build号,方便以后的回归测试、查看打包记录和版本对应更新信息。

转载请注明原出处:Vincent’Blog 打包发布ReactNative流程、提测


http://www.niftyadmin.cn/n/1640945.html

相关文章

深入学习 React Hooks

React Hooks Hook 是 16.8新增特性。 hooks 优势 能优化类组件的三大问题能在无需修改组件结构的情况下复用状态(自定义Hooks)能将组件中想关联的部分成更小的函数,(订阅数据或请求数据)副作用的关注分离: 副作用致那些没有发生在数据向视图转换过程中…

python3 安装_Python3的安装

1.Anaconda安装Anaconda的官方下载链接为https://www.continuum.io/downloads,选择Python 3版本的安装包下载即可,如图1-1所示。图1-1 Anaconda Windows下载页面下载完成之后,直接双击安装包安装即可。安装完成之后,Python 3的环境…

网页性能优化:延迟加载资源

延迟加载 延迟加载是一种在加载页面时,延迟加载非关键资源的一种方法,而这些非关键资源则在需要时才进行加载,就图像而言,‘非关键’通常指的是‘屏幕外’。 延迟加载图像和视频时,可以减少初始页面加载时间、初始页…

从Tomcat到Spring Boot

距离Phil Webb发布Spring Boot已经4年有余,我们尝试在这个夏天把这只已经独自在外游荡了19年的野猫Tomcat装入春天的长靴。 从零开始安装Spring Boot项目,使用内嵌的Tomcat引擎是比较容易的事情,各种中文教程已经数不胜数,那不是…

设计模式-发布订阅

前言 发布订阅又叫观察者模式,它记录的是一种一对多的依赖关系,当订阅的数据状态发生改变时,所对应的依赖的对象会得到消息(通知)。 优点 发布订阅在异步编程中,可以替代回调,从而无需关注对象在异步运行中的内部状…

smart-socket如何实现字符串通信

不少的朋友在接触到smart-socket后,一上来就想写一个字符串通信的案例。例如客户端发送"Hello Server!",服务端接收到该消息并响应"Hi Client!"。但最终发现客户端可以成功将消息发送出去,但服务端就是无法正常接收。那是…

程序员辛酸泪——当程序员老去,程序员又何去何从

程序员将代码注入生命去打造互联网的浪潮之巅,当有一天他们老了,会走向那里,会做些什么?表面光鲜的“程序猿”的真实生活的背面是不为人知的辛酸史,让我们一起去了解程序员这个职业吧! 当程序员老去 再也不相信年龄了 程序员将代…

nextjs搭建博客记录

前言: 说明搭建环境 Next.js 是一个轻量级的React服务端渲染框架。 前端渲染方式 可分为三种渲染方式,服务端渲染,客户端渲染,同构渲染。这三种渲染方式有各自的优缺点。 服务的渲染 服务端渲染可以理解成将组件或者页面经过…