Expo大作戰(十八)--expo如何發佈成獨立應用程式,打包成apk或者ipa,發佈到對應應用商店

来源:https://www.cnblogs.com/gdsblog/archive/2018/03/14/8570219.html
-Advertisement-
Play Games

簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732 ...


簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網

我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732981

【之前我寫過一些列關於expo和rn入門配置的東i西,大家可以點擊這裡查看:從零學習rn開發

相關文章:

Expo大作戰(一)--什麼是expo,如何安裝expo clinet和xde,xde如何使用

Expo大作戰(二)--expo的生命周期,expo社區交流方式,expo學習必備資源,開發使用expo時關註的一些問題

Expo大作戰(三)--針對已經開發過react native項目開發人員有針對性的介紹了expo,expo的局限性,開發時項目選型註意點等

Expo大作戰(四)--快速用expo構建一個app,expo中的關鍵術語

Expo大作戰(五)--expo中app.json 文件的配置信息

Expo大作戰(六)--expo開發模式,expo中exp命令行工具,expo中如何查看日誌log,expo中的調試方式

Expo大作戰(七)--expo如何使用Genymotion模擬器

Expo大作戰(八)--expo中的publish以及expo中的link,對link這塊東西沒有詳細看,大家可以來和我交流

更多>>

接下來就開始擼碼


構建獨立應用程式

本指南旨在幫助您創建適用於iOS和Android的expo用程式的獨立二進位文件,並將其提交至Apple App Store和Google Play Store。

構建iOS獨立應用需要Apple開發者帳戶,但構建Android獨立應用不需要Google Play開發者帳戶。如果您想提交給任一應用商店,則需要該商店的開發者帳戶。

閱讀關於部署到應用商店的最佳實踐是一個不錯的主意,以確保您的應用能夠很好地被接入進入Apple和Google市場。

1.安裝exp

XDE目前不包括構建獨立應用程式的選項,因此我們需要exp。運行npm install -g exp來獲取它。

如果您之前沒有使用過exp,那麼您需要做的第一件事就是使用exp login登錄您的expo賬戶。

Windows用戶必須啟用WSL。我們建議從Windows應用商店挑選Ubuntu。確保至少啟動一次Ubuntu。之後,使用Admin powershell運行:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

2.配置app.json

{
   "expo": {
    "name": "Your App Name",
    "icon": "./path/to/your/app-icon.png",
    "version": "1.0.0",
    "slug": "your-app-slug",
    "sdkVersion": "XX.0.0",
    "ios": {
      "bundleIdentifier": "com.yourcompany.yourappname"
    },
    "android": {
      "package": "com.yourcompany.yourappname"
    }
   }
 }

iOS bundleIdentifier和Android的package欄位使用反向DNS表示法,但不必與域相關。將“com.yourcompany.yourappname”替換為適用於您的應用的任何內容。

您可能並不感到驚訝,因為名稱,圖標和版本都是必需的。

slug是你的應用程式的JavaScript發佈到的URL名稱。例如:expo.io/@community/native-component-list,其中community是我的用戶名,native-component-list是slug。

sdkVersion告訴expo什麼expo運行版本使用,這對應於一個React本地版本。儘管在示例中列出了“XX.0.0”,但您的app.json中已經有一個sdkVersion,除非您想更新到Expo的新版本,否則不應更改它。

還有其他選項可能需要添加到app.json中。我們只涵蓋了需要的內容。例如,有些人喜歡配置自己的內部版本號,鏈接方案等等。我們強烈建議您閱讀完整規範的app.json配置。這也是您最後一次檢查我們對App Store元數據的建議的機會。

3.開始構建

運行exp build:android或exp build:ios。如果你還沒有為這個項目運行一個包(if you don’t already have a packager running for this project),exp會為你啟動一個。

如果您選擇為Android構建

您第一次構建項目時,系統會詢問您是要上傳密鑰庫還是讓我們為您處理。如果您不知道密鑰庫是什麼,請將其留給我們()。否則,請隨意上傳自己的。

[exp] No currently active or previous builds for this project.

Would you like to upload a keystore or have us generate one for you?
If you don't know what this means, let us handle it! :)

  1) Let Expo handle the process!
  2) I want to upload my own keystore!

註意:如果您選擇第一個選項,然後決定上傳您自己的密鑰庫,我們目前提供一個選項,通過運行exp build:android --clear-credentials,從我們的構建伺服器中清除您當前的Android密鑰庫。 這是不可逆的,所以只有在你知道你在做什麼的時候才運行這個命令! 您可以通過運行exp fetch:android:keystore來下載密鑰庫的備份副本。 如果您沒有密鑰庫的本地副本,則無法將新版本的應用發佈到Play商店。 您唯一的選擇是生成一個新的密鑰庫並將您的應用程式重新上傳為一個新的應用程式。 您可以詳細瞭解代碼簽名和密鑰庫在Android文檔中的工作方式。(**)

如果您選擇為iOS構建

您可以選擇讓exp客戶為您創建必要的憑據,同時還有機會提供您自己的覆蓋。 您的Apple ID和密碼在本地使用,永遠不會保存在Expo的伺服器上。

[exp] Making sure project is set up correctly...
[exp] Your project looks good!
[exp] Checking if current build exists...

[exp] No currently active or previous builds for this project.
? How would you like to upload your credentials?
 (Use arrow keys)
❯ Expo handles all credentials, you can still provide overrides
  I will provide all the credentials and files needed, Expo does no validation

我們問您是否希望我們處理您的證書或使用您自己的證書。 與Android密鑰庫類似,如果您不知道證書是什麼,請讓我們為您處理。 如果您確實需要上傳您自己的證書,我們建議您按照製作p12文件的優秀指南進行操作。

註意:Expo構建服務支持普通的App Store分發(distribution )以及企業分發(distribution )。 要使用後者,您必須是“Apple開發人員企業計劃”的成員。 只有普通的Apple開發人員帳戶只能構建可提交給Apple App Store的應用程式,只有企業開發人員帳戶才能構建可使用企業分發方法分發的應用程式。 當您調用exp build:ios時,請使用--apple-enterprise-account標誌。 目前,獨立應用程式構建器不支持“ad hoc”分發證書或設置配置文件。

4.等待它完成建設(Wait for it to finish building)

我們將列印一個您可以訪問的網址(例如expo.io/builds/some-unique-id)以查看您的構建日誌。或者,您可以通過運行exp build:status來檢查它。完成後,您會看到.apk(Android)或.ipa(iOS)文件的網址 - 這是您的應用。將鏈接複製並粘貼到瀏覽器中以下載文件。

註意:我們為iOS啟用bitcode,因此iOS的.ipa文件比用戶可用的最終App Store下載要大得多。有關更多信息,請參閱應用程式細化

5.在您的設備或模擬器上測試它(Test it on your device or simulator)

您可以將.apk拖放到您的Android模擬器中。這是測試構建成功的最簡單方法。但它不是最令人滿意的。

  • 要在Android設備上運行它,請確保您已安裝了與adb一起安裝的Android平臺工具,然後運行adb install app-filename.apk,併在設備上啟用USB調試並插入設備。
  • 要在iOS模擬器上運行它,首先通過運行exp build:ios -t simulator來構建您的expo項目,然後使用運行exp build:status時完成的鏈接下載tarball。通過運行tar -xvzf your-app.tar.gz解壓縮tar.gz。然後,您可以通過啟動iOS Simulator實例運行它,然後運行xcrun simctl install booted <app path>和xcrun simctl launch booted <app identifier>。
  • 要使用Apple TestFlight測試設備版本,請將.ipa文件下載到本地機器。您已準備好將您的應用上傳到TestFlight。在TestFlight中,點擊加號圖標並創建一個新的應用程式。確保你的bundleIdentifier匹配你在exp.json中放置的內容。

註意:你將不會在這裡看到你的構建!您需要先使用Xcode或Application Loader來上傳您的IPA。一旦你這樣做了,你可以在Activity下檢查你的版本的狀態。處理應用程式可能需要10-15分鐘才能顯示可用的構建版本。

6.將其提交給相應的商店

我們並未自動執行此步驟,但此時您應該能夠遵循Apple和Google文檔向獨立商店提交您的獨立二進位文件。有關如何擦亮應用並確保其已被Apple和Google市場接受的更多信息(or more info on how to polish your app and ensure it is accepted to the Apple and Google marketplaces),請閱讀部署到應用商店的指南

7.更新你的應用程式

大多數情況下,當您想更新應用時,只需從exp或XDE再次發佈即可。您的用戶將在下次打開應用程式時下載新的JS。為確保您的用戶擁有下載JS更新的無縫體驗,您可能需要啟用後臺JS下載。但是,有幾個原因可能會導致您重建並重新提交本機二進位文件:

  • 如果您想更改原生元數據,如應用程式的名稱或圖標
  • 如果你升級到一個更新的sdkVersion你的應用程式(這需要新的本地代碼)

為了跟蹤這一點,你也可以更新二進位的versionCode和buildNumber。瀏覽app.json文檔以瞭解您可以更改的所有屬性,例如圖標,深層鏈接url方案,手機/平板電腦支持等等。

如果您在此過程中遇到問題,我們非常樂意幫助!加入我們的論壇,讓我們知道你是否有任何問題。


下一張繼續介紹,這一篇主要介紹了:expo如何發佈成獨立應用程式,打包成apk或者ipa,發佈到對應應用商店, 歡迎大家關註我的微信公眾號,這篇文章是否被大家認可,我的衡量標準就是公眾號粉絲增長人數。歡迎大家轉載,但必須保留本人博客鏈接!

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參考博客 "MySQL資料庫備份(linux)" "MySQL mysqldump數據導出詳解" 備份地址 https://files.cnblogs.com/files/jxner/MySQL%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%87%E4%BB%BD%EF%BC%8 ...
  • 1、下載並安裝好FineReport9.0和SQL Server 2016 2、開始——>所有應用——>Microsoft SQL Server 2016——>SQL Server 2016 Master Data Services Configuration Manager(單擊打開) 3、創建數 ...
  • 在資料庫的運用過程中,我們時常會碰到根據身份證號碼來獲取當前的年齡,今天我在這裡寫了一個函數,就是關於獲取年齡的 下麵是函數調用的SQL語句: ...
  • SQL server數據類型 String類型: 數據類型: 描述 存儲 char(n) 固定長度的字元串。最多 8,000 個字元。定義類型為char(5),那麼就表示該類型可以存儲5個字元,即使存入2個字元,剩餘的3個字元也會用空格補齊。 Defined width varchar(n) 可變長 ...
  • 2015年以來,Android開發領域里對熱修複技術的討論和分享越來越多,同時也出現了一些不同的解決方案,如QQ空間補丁方案、阿裡AndFix以及微信Tinker(Bugly sdk也集成Tikner熱更新)和阿裡最新出品Sophix.它們在原理各有不同,適用場景各異。不過從技術上來說多數熱修複框架 ...
  • 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732 ...
  • 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732 ...
  • Retrofit提供了兩個兩種定義HTTP請求頭欄位的方法即靜態和動態。靜態頭不能改變為不同的請求,頭的鍵和值是固定的且不可改變的,隨著程式的打開便已固定。 動態添加 @HeaderMap 靜態添加 ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...