打包發布ReactNative流程、提測


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

在生成過程中需要填寫一些信息。

修改 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 應用簽名(FQ訪問)

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]

只打包不上傳


// 同時打包android和ios
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之后,ios、android對應平台的build號需要增加,這是因為在提交應用商店選擇對應的build版本號不允許重復。
  • 上傳第三方測試平台,養成每次build構建之后添加對應的更新描述,增加對應的build號,方便以后的回歸測試、查看打包記錄和版本對應更新信息。

轉載請注明原出處:Vincent'Blog 打包發布ReactNative流程、提測


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM