Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

    • 沙盒环境-Expo

    • 原生环境

      • 案例

      • 文档

        • React Native搭建环境
        • React Native打包发布
          • 安卓
            • 生成一个签名密钥
            • 设置 gradle 变量
            • 把签名配置加入到项目的 gradle 配置中
            • 生成 ABB
            • 生成发行 APK 包
          • iOS
            • 选择 "Any iOS Device"
            • 归档应用程序
            • 选择分发类型
            • 报错
        • React Native原生模块
        • React Native更改项目信息
        • React Native打包apk后无法进行网络请求
    • React Native第三方库
  • 前端
  • React Native
  • 原生环境
  • 文档
HiuZing
2023-09-15
目录

React Native打包发布

# 安卓

# 生成一个签名密钥

在C:\Program Files\Java\jdkx.x.x_x\bin路径执行此命令

keytool -genkeypair -v -storetype PKCS12 -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
1

这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息

解释:

上方指令中的 my-release-key.keystore 可以任意改成 xxxx.keystore 上方指令中的 my-key-alias 可以任意改成 xxxx务必记得

设置相关信息:

  1. 输入密钥库密码: android(自行设置,必须记住!)
  2. 再次输入新密码: android
  3. 您的名字与姓氏为何: Wei(自行设置)
  4. 您的组织单位名称为何: Wei(自行设置)
  5. 您的组织名称为何: Wei(自行设置)
  6. 您所在的城市或地区名称为何: gz(自行设置)
  7. 您所在的州及省份名称为何: hz(自行设置)
  8. 此单位的两个字母国别代码为何: CN(自行设置)
  9. CN=yachen, OU=front-end, O=yachen, L=tainan, ST=tainan, C=TW 正确吗?: 是

最后它会生成一个叫做my-release-key.keystore的密钥库文件

# 设置 gradle 变量

  1. 把my-release-key.keystore文件放到你工程中的android/app文件夹下。

  2. 修改android/gradle.properties文件

    MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
    MYAPP_RELEASE_KEY_ALIAS=my-key-alias
    MYAPP_RELEASE_STORE_PASSWORD=*****
    MYAPP_RELEASE_KEY_PASSWORD=*****
    
    1
    2
    3
    4

    上面的这些会作为 gradle 的变量,在后面的步骤中可以用来给应用签名。

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

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

...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
		debug {
                storeFile file('debug.keystore')
                storePassword 'android'
                keyAlias 'androiddebugkey'
                keyPassword 'android'
		}
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 生成 ABB

生成的 ABB 文件会在 android/app/build/outputs/bundle/release 中,之后可以上架到 Google Play 商店。

cd android
./gradlew bundleRelease
1
2

# 上架到 Google Play 商店

  1. 登录Google Play Console,在首页创建应用

    image-20240507164810874

  2. 设置应用,将任务完成

    image-20240507164938662

  3. 在正式版中,创建新的发布版本

  4. 选择签名密钥

    image-20240507165145485

  5. 使用其他密钥,选择从 Java 密钥库导出并上传密钥,按照上面的步骤

    image-20240507170219934

    1. 下载加密公钥

    2. 下载PEPK

    3. 使用下面的命令运行该工具,导出您的私钥并将其加密。然后替换相应参数,在看到提示时分别输入密钥库和密钥的密码。

      java -jar pepk.jar --keystore=foo.keystore --alias=foo --output=output.zip --include-cert --rsa-aes-encryption --encryption-key-path=/path/to/encryption_public_key.pem
      
      1

      foo.keystore替换之前安卓打包的签名密钥

      foo替换之前安卓打包的签名密钥

      /path/to/encryption_public_key.pem替换公钥的路径

      将加密公钥、PEPK、安卓打包的签名密钥放在同一个路径下,执行命令,会生成一个ZIP包

      此时用的是openjdk17

    4. 上传生成的ZIP文件

  6. 点击保存,此时会进行验证

  7. 验证成功后,将打包好的abb包拉进这里

    image-20240507170047415

  8. 点击下一步,会提示哪里会报错,再进行修改

  9. 没有报错后,即可以送审

# 生成发行 APK 包

如果你还不想上架到Google Play 商店,可以选择打包apk

生成的 APK 文件位于android/app/build/outputs/apk/release/app-release.apk,它已经可以用来发布了。

cd android
# Gradle 的assembleRelease参数会把所有用到的 JavaScript 代码都打包到一起,然后内置到 APK 包中。
./gradlew assembleRelease
1
2
3

# iOS

分发您的应用程序以进行 Beta 测试和发布 |苹果开发者文档 --- Distributing your app for beta testing and releases | Apple Developer Documentation (opens new window)

# 选择 "Any iOS Device"

在 Xcode 左上角的设备选择器中,选择Any iOS Device作为目标设备。这通常是在进行归档(Archive)时选择的目标设备。

# 归档应用程序

完成构建后,点击 Xcode 菜单栏中的 Product -> Archive(或者使用快捷键 Command + Shift + B)来创建应用程序的归档文件(.xcarchive)。

Screenshot of the Archives organizer showing an archive selected and Distribute App button.

# 选择分发类型

假设邮箱收到邮件,内容为Action needed: The uploaded build for Trops Soccer has one or more issues....

先处理邮件的问题...

Screenshot of the Archives organizer showing the Select a method for distribution dialog with the preconfigured TestFlight & App Store option selected.

目前只作为测试,所以我们选择第二个TestFlight Internal Only

上传成功后,打开App Store Connect,选中App选项,找到自己上传成功app,设置TestFlight中的测试组

c1e86e586b8c4781fe534f6aa80a218

# 报错

Showing Recent Messages Multiple commands produce '/Users/trops/Library/Developer/Xcode/DerivedData/TropsSoccer-ehnfyluqinoznpgltywdaxyvnbos/Build/Intermediates.noindex/ArchiveIntermediates/TropsSoccer/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AccessibilityResources.bundle'

Showing Recent Errors Only Target 'React-Core-AccessibilityResources' (project 'Pods') has create directory command with output '/Users/trops/Library/Developer/Xcode/DerivedData/Trops_Soccer-cfgotpwkacidftbslusrivwleccr/Build/Intermediates.noindex/ArchiveIntermediates/TropsSoccer/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AccessibilityResources.bundle'

有重复的文件

# 修复

在Podfile添加

installer.pods_project.targets.each do |target|
        if target.name == "React-Core-AccessibilityResources"// 重复的文件
           target.remove_from_project
        end
      end
1
2
3
4
5

删除ios/build 和 ios/Pods重新构建

上次更新: 2024/08/14, 04:14:33
React Native搭建环境
React Native原生模块

← React Native搭建环境 React Native原生模块→

最近更新
01
React Native 使用SVG
08-13
02
Docker基础命令
08-04
03
算数逻辑单元
07-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式