Build and Upload app to store with Expo

Aphichan Chaiyutthasart
Witsawa Corporation
3 min readSep 2, 2019

React Native เป็น framework ที่ใช้ในการสร้าง mobile application ซึ่งจะมีวิธีขึ้น project อยู่สองแบบ คือ ขึ้นด้วย react-native-cli หรือ ขึ้นด้วย expo-cli

ในที่นี้เราจะกล่าวถึง project ที่ขึ้นด้วย expo-cli

Initial Project

run คำสั่ง ใน terminal

expo init rn-expo # rn-expo เป็นชื่อ directory

จากนั้นก็จะมีให้เลือก template กับกรอก app name เราก็เลือกให้เรียบร้อย

ต่อไปก็รอมัน run script จนเสร็จ

จากนี้ไปผมขอกล่าวในส่วน build and deploy ของ android ก่อนนะครับ

Build App (Android)

Signup and login expo account ในเว็บ https://expo.io/

จากนั้นแก้ไฟล์ app.json เป็น

{
"expo": {
"name": "RN Expo",
"slug": "rn-expo",
"privacy": "public",
"sdkVersion": "34.0.0",
"platforms": [
"ios",
"android",
"web"
],
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true,
},
"android": {
"package": "com.mymymymy.rnexpo"
}

}
}

เพิ่ม package name เข้าไป

เมื่อ setup เรียบร้อยแล้ว

run คำสั่งใน terminal

expo login # login ด้วย account ที่เราจะฝาก app ไว้นะครับ

run คำสั่งใน terminal ที่อยู่ใน directory ของ project

expo build:android # build apk

หรือ

expo build:android -t app-bundle # build aab ซึ่งขนาดไฟล์เล็กกว่า

ในการ run ครั้งแรกจะมี option ถามประมาณว่าจะให้ expo สร้างและจัดการ key ให้ หรือเราจะสร้างและจัดการ key เอง ก็แล้วแต่เรานะ

key นี้เอาไว้เป็นระบุตัวตนของ app ถ้าใครไม่เขัาใจก็ให้ expo จัดการไปละกันนะครับ

จากนั้นก็รอมัน run script จนเสร็จ

ถ้ามัน build เสร็จ เราจะเห็น project ของเราบนเว็บ https://expo.io/

Upload App to Play Store (Android)

อันดับแรกต้องสมัครที่เว็บ https://play.google.com/apps/publish/ เพื่อเอา app ขึ้น play store โดยมีค่าใช้จ่าย 25$ ต่อ account ใช้ได้ตลอดชีพ (ราคาไม่แน่ใจนะ)

จากนั้นก็ทำตาม link นี้ https://docs.expo.io/versions/v34.0.0/distribution/uploading-apps/#21-if-you-choose-to-upload-your

ตั้งแต่ขั้นตอนที่ 1 ถึง 8 เลย มันจะเป็นขั้นตอนในการสร้าง api key เพื่อให้ expo สามารถ upload app ขึ้น store ได้ แต่การเอา app ขึ้น store ครั้งแรกต้อง upload แบบ manual ก่อน เพื่อให้ store รู้จัก package name ก่อน (package name คือ ตรงที่เราใส่ใน app.json ในขั้นตอน build นั่นเอง)

พอทำขั้นตอน 1- 8 เสร็จเราจะได้ json file มาอันหนึ่ง เดี๋ยวเราจะใช้ต่อในการ upload ด้วย expo cli นะครับ

จากนั้นเราก็จะ run คำสั่งใน terminal ที่ directory ของ project ดังนี้

expo upload:android --key ./api-key.json #upload apk ขึ้น store

แต่ปัญหาของ command นี้ คือ upload ได้แต่ .apk ไม่สามารถ upload .aab ได้นะครับ

ถ้าเป็น .aab ต้อง upload แบบ manual เอาเองนะครับ

มาถึงตาของ iOS กันบ้าง

Build App (iOS)

แก้ไฟล์ app.json เป็น

{
"expo": {
"name": "RN Expo",
"slug": "rn-expo",
"privacy": "public",
"sdkVersion": "34.0.0",
"platforms": [
"ios",
"android",
"web"
],
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.mymymymy.rnexpo"
},
"android": {
"package": "com.mymymymy.rnexpo"
}
}
}

โดยเพิ่ม bundleIdentifier เข้าไป

ก่อนจะ build คือ เราต้องสมัครเป็น apple developer ก่อน ที่ http://developer.apple.com หรือเป็นสมาชิกทีม developer หนึ่งๆ ก่อน (ถ้าสมัครเองก็มีค่าธรรมเนียมเป็นรายปีนะ แพงอยู่)

เมื่อเรามี account apple developer เรียบร้อยแล้วก็มา run คำสั่ง build กัน

expo build:ios

พอ run เสร็จมันจะถามให้เราใส่ apple id ที่เป็น apple developer แล้วนะ

เราก็ใส่ email password พอผ่านตรงนี้ไป ก็จะถามว่าให้ expo จัดการเรื่อง certificate หรือ เราจะจัดการเอง

ถ้าให้ expo จัดการก็คือ ให้ expo สร้าง certificate ให้

ถ้าเราจัดการเอง เราจะต้องสร้าง certificate ขึ้นมาเอง แล้ว upload ให้ expo จัดการต่อไป

ปกติผมจะเลือกให้ expo จัดการให้นะ มีอยู่ 3 ตัวก็ให้ expo จัดการทั้งหมดเลย

(3 ตัวที่ว่ามี distribution, profiling, push notification key)

ถ้าตอบเรื่องพวกนี้จบ ก็รอมัน build สำเร็จ ซึ่งจะได้ .ipa อยู่บน https://expo.io/

Upload App to Apple Store (iOS)

run คำสั่ง upload

expo upload:ios

มันจะให้ใส่ apple id ก็คือกรอก email password เหมือนตอน build app เลย

แล้วก็ให้เลือกว่าจะใช้ store ของ account ไหน (ถ้ามีหลาย account นะ)

จากนั้นก็รอจน upload สำเร็จ

แต่จะมีกรณีที่ upload app แรกของ account ซึ่งยังไม่ได้ตั้ง company name ก็จะติดเรื่องนี้อยู่

วิธีแก้ คือ เราต้องไป create new app ใน https://appstoreconnect.apple.com

ซึ่งจะมี form ให้กรอกข้อมูลของ app ที่เราจะเอาขึ้น โดย company name จะถามแค่ครั้งเดียวตอนสร้าง app แรก (app ที่สอง ที่สามไม่ถามแล้วนะ) ถ้าจะเปลี่ยนต้องแจ้ง apple support น่าจะใช้เวลาพอสมควร

ถ้าแก้แล้วก็ run upload ใหม่ได้เลย

นี่แค่จะเอา app ขึ้น store ยังยาวขนาดนี้เลย แต่ยังไม่ได้ release app เลยนะ

กว่าจะ release ได้ ต้องข้อมูลต่างๆ เช่น ชื่อแอพ คำอธิบาย ราคา screenshot rating ว่าเหมาะกับคนอายุเท่าไร

และจะมีการ review ก่อนเผยแพร่แอพ ก็ใช้เวลาเป็นสัปดาห์เป็นอย่างน้อยนะครับ

ใครจะทำ mobile application ก็เผื่อเวลา review และแก้ไขกันหน่อยนะครับ :) Bye !!!

Reference

--

--