React Native | android应用签名、打包发布google play

RN官方网站安卓打包基于命令行生成签名密钥,打包等过程不仅经常报乱七八糟的错误,而且打包时间非常非常长,实践证明,最优方案得选android studio。(下面的操作大多是参考android开发者官网)

Android 开发者官网

为新应用签名并将其发布到 Google Play 时可能需要采取的步骤

1、生成上传密钥和密钥库

  • 菜单栏中,依次点击 Build > Generate Signed Bundle/APK > create new
  • 除了密钥库的保存路径( 可将生成的路径指向项目内,如下图 )和密码需要自定义

image


2、创建signing.properties文件,并放到项目对应目录下

  • signing.properties:也就是用于存储签名配置文本文件,里面的内容也就是上一步创建的密钥库对应的密码等信息

  • 安全起见,记得在.gitignore添加,不要把密码这些配置信息上传。。。

    企业微信截图_16856992305272

    image


3、把签名配置加入到项目的 gradle 配置中

  • android/app/build.gradle,添加如下的签名配置

    // 导入属性文件
    def signingPropertiesFile = rootProject.file("signing.properties")
    def signingProperties = new Properties()
    if (signingPropertiesFile.exists()) { signingProperties.load(new FileInputStream(signingPropertiesFile)) }
    
    android {
        ...
        defaultConfig { ... }
        signingConfigs {
            release {
                if (signingPropertiesFile.exists()) {
                    keyAlias signingProperties['keyAlias']
                    keyPassword signingProperties['keyPassword']
                    storeFile file(signingProperties['storeFile'])
                    storePassword signingProperties['storePassword']
                }
            }
        }
        buildTypes {
            release {
                ...
                signingConfig signingConfigs.release
            }
        }
    }
    

    image


4、打包

  • 根据需求生成对应的包格式

  • Google Play 现在要求 AAB 格式,而国内的应用市场目前仅支持 APK 格式

    image

    企业微信截图_16856998838972
  • 如果发现打的包是debug包,请调下这个配置

    image


5、登录google play 管理中心,填写信息( 将google play设置为中文版本) image

6、内部测试的发布测试流程

  • versionCode为整数值,且不能重复,类似索引的感觉,不改的话上传包的时候会拦截 企业微信截图_16843265732247
  • 安卓机需要必备google play环境且翻墙状态下才能下载走内部测试环境下载对应包

解惑

1、 Build > Generate Signed Bundle/APK为应用签名

  • 上面步骤没有走这步的原因是已在步骤2,3配置,达到在构建流程中为应用的发布版本自动签名。

    image

    image


辅助技能

1、更改包名称

  • google play 不同项目不允许包名称一致 企业微信截图_16843998674069 企业微信截图_16843998953364
  • 如果遇到这个报错:compileSdkVersion is not specified. Please add it to build.gradle,更改值重新编译 企业微信截图_16843999874369 image