Ga naar de hoofdinhoud

7. EAS Build

10-11-2024Ongeveer 8 minutenOngeveer 1139 woorden

7. EAS Build

In deze les, die in zelfstudie gegeven wordt, bespreken we hoe we een applicatie kunnen publiceren via EAS build.

EAS Build installeren

Zoals in les 6 besproken is, moet een Android applicatie ondertekend worden met een sleutel die uniek is per developer. Alhoewel we deze sleutel zelf kunnen aanmaken en beheren, is het eenvoudiger om dit via EAS Build te doen. Hiervoor installeren we de eas-cli en loggen we in met een Expo account, als je nog geen account hebt kun je die aanmaken op expo.dev.

eas login

EAS Initialiseren

Het lokale project moet gelinkt worden aan een project in EAS, hiervoor gebruiken we onderstaand commando.

eas init

De CLI vraagt vervolgens of het een nieuw project moet configureren, selecteer hier 'Yes', dit genereert onderstaande uitvoer.

✔ Would you like to create a project for @sebastiaah/Chat? … yes
âś” Created @sebastiaah/Chat: https://expo.dev/accounts/sebastiaah/projects/Chat
âś” Project successfully linked (ID: 5e187797-2477-4608-8c8c-6356315aac6e) (modified app.json)

Als volgende stap moeten we eas.json aanpassen, dit bestand configureert de specifieke instellingen voor het compileren van de Android en iOS applicaties. Hiervoor kan onderstaand commando gebruikt worden.

eas build:configure

De CLI stelt vervolgens de vraag of je een app bouwt voor Android, iOS of beide. Ook als je geen iPhone of Mac hebt, kan je een iOS app bouwen (in de cloud), selecteer hier dus gewoon de 'All' optie.

đź’ˇ The following process will configure your iOS and/or Android project to be compatible with EAS Build. These changes only apply to your local project files and you can safely revert them at any time.

? Which platforms would you like to configure for EAS Build? › - Use arrow-keys. Return to submit.
❯   All
    iOS
    Android

SHA Hashes

Elke Android applicatie moet ondertekend worden, de sleutel waarmee de applicatie ondertekend wordt heeft een SHA fingerprint waarmee gecontroleerd kan worden of de applicatie van de juiste ontwikkelaar komt.

Zoals vorige les besproken, heb je deze fingerprints nodig om met Firebase of een andere Google Cloud service te werken.

Om deze hash op te vragen gebruiken we het onderstaand commando.

eas credentials --platform=android

Kies vervolgens één van de drie varianten (het maakt niet uit welke, alle varianten gebruiken dezelfde hash). En selecteer dan de optie 'Keystore: Manage everything needed to build your project'.

✔ Which build profile do you want to configure? › preview
âś” Using build profile: preview
Android Credentials     
Project                 mobile_dev_lecture4_example
Application Identifier  com.thomasmore.itgraduaten.firebase
No credentials set up yet!  

? What do you want to do? › - Use arrow-keys. Return to submit.
❯   Keystore: Manage everything needed to build your project
    Google Service Account
    Push Notifications (Legacy): Manage your FCM (Legacy) API Key
    credentials.json: Upload/Download credentials between EAS servers and your local json 
    Go back
    Exit

Kies daarna voor de optie 'Set up a new keystore' en geef de keystore een naam (of gebruik de default naam door op enter te drukken)

? What do you want to do? › - Use arrow-keys. Return to submit.
❯   Set up a new keystore
    Change default keystore
    Download existing keystore
    Delete your keystore
    Go back

Dit produceert volgende uitvoer, de belangrijke lijnen zijn hieronder gemarkeerd.

✔ Assign a name to your build credentials: … Build Credentials jc9FEPZQTz
✔ Generate a new Android Keystore? … yes
âś” Created keystore
âś” Created Android build credentials Build Credentials jc9FEPZQTz
Press any key to continue...


Android Credentials     
Project                 Chat
Application Identifier  be.pitgraduaten.chat

Push Notifications (FCM Legacy)  
  None assigned yet

Push Notifications (FCM V1): Google Service Account Key For FCM V1  
  None assigned yet

Submissions: Google Service Account Key for Play Store Submissions  
  None assigned yet

Configuration: Build Credentials feKXQcqZbJ (Default)  
Keystore  
Type                JKS
Key Alias           07fa7bee7e7ff2679decc61faed3569d
MD5 Fingerprint     B3:75:BF:98:72:36:C1:07:30:86:C6:D1:C6:A8:83:A0
SHA1 Fingerprint    87:A2:08:02:83:A6:A3:A2:71:87:91:94:2C:BD:AC:77:BF:31:E0:F6
SHA256 Fingerprint  E5:A3:4F:05:BB:14:5E:20:A1:3A:FA:DA:68:B4:61:0B:2D:1B:14:F6:FE:66:79:56:9E:0F:E5:B9:B3:6E:3C:91
Updated             1 second ago

Belangrijk

Vergeet niet om de SHA1 en SHA256 fingerprints toe te voegen aan je Firebase project als je hiervan gebruikt gemaakt hebt.

Nadat je deze hebt toegevoegd, moet je google-services.json opnieuw downloaden.

Icoon & Splash

Het icoon en het splashscreen van je applicatie kunnen aangepast worden in de /assets/images folder. Het produceren van deze afbeeldingen is relatief eenvoudig en wordt uitgelegd in onderstaande video van het Expo team. In deze video wordt gebruik gemaakt van een Figma template.

APK Publiceren via EAS Build

Via EAS build kunnen we een APK genereren die geĂŻnstalleerd kan worden op elk Android toestel.

Hiervoor moeten we het buildType op APK zetten, anders wordt een AAB bundle gegenereerd die enkel geĂŻnstalleerd kan worden via de Google Play Store.

Daarnaast is het cruciaal dat we, via de env property de publieke environment variables meegeven. We gebruiken hieronder het web id uit les 6 als voorbeeld.

/eas.json
{
  "cli": {
    "version": ">= 13.4.2",
    "appVersionSource": "remote"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal",
      "env": {
        "EXPO_PUBLIC_FIREBASE_WEB_ID": "759065531477-dqg3p57b15hmi0djj2rqi5r0iav8lvbn.apps.googleusercontent.com"
      },
      "android": {
        "buildType": "apk"
      }
    },
    "production": {
      "autoIncrement": true
    }
  },
  "submit": {
    "production": {}
  }
}

Vervolgens kunnen we een APK laten generen via de EAS build servers. Aangezien we op het free tier werken kan het soms tot 30 minuten duren voor er een plaats vrij is in de wachtrij.

eas build --platform android --profile preview

Zodra de CLI aangeeft dat de build afgewerkt is, kan de je APK downloaden via expo.dev of de link in je console.

Belangrijk

Omdat de downloadlink uit Expo Go na enkele dagen vervalt, moet je de APK toevoegen als een release in je GitHub project.

Local builds

Als je een Linux machine hebt, kan je een Android build bouwen op je eigen machine. Als je een Mac hebt, kan je zowel een Android als iOS build bouwen op je eigen machine. Voor beide opties moet je de --local vlag toevoegen aan bovenstaand commando.

Test je APK voordat je deze upload. Je kan deze op je emulator slepen om de installatie te starten. Als de installatie lukt, probeer je ook om de app te openen en te gebruiken, bepaalde configuratiefouten kunnen leiden tot een crash bij het opstarten of een niet werkende inlogprocedure.

Android
eas build --platform android --profile preview --local