Hoe de iOS-versie te compileren
- Stel eerst de ontwikkelomgeving in.
- Installeer Xcode vanuit de AppStore (laatst getest 14.2)
- Installeer Xcode command-line tools
$ xcode-select --install
Of probeer in geval van fouten het te downloaden en te installeren vanaf: Apple site.
- Log in op het Xcode-account (optioneel) Als je geen Apple Developer-account hebt. Open Xcode en ga naar voorkeuren (via het topmenu)
Voorkeuren -> Accounts
Druk op de +
knop. Je kunt inloggen met je AppleID (login en wachtwoord van je iOS/macOS-apparaten). Volg de Xcode-instructies.
Voor OsmAnd-teamleden: stuur je AppleID-login, zodat je wordt toegevoegd aan de ontwikkelaarslijst. Wanneer je een e-mail met een uitnodiging ontvangt, activeer deze dan.
Sluit Xcode.
- Installeer command-line tools - cmake, svn, cocoapods
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# voor intel
$ echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
$ eval "$(/usr/local/bin/brew shellenv)"
# voor m1
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
$ eval "$(/opt/homebrew/bin/brew shellenv)"
$ brew install svn
$ brew install cmake # getest op 3.25.2, 3.19, 3.11
# voor intel
$ sudo gem install cocoapods
# voor m1
$ brew install cocoapods
- Download en installeer Java jdk 17
# voor intel
https://download.oracle.com/java/17/archive/jdk-17.0.11_macos-x64_bin.dmg
# voor m1
https://download.oracle.com/java/17/archive/jdk-17.0.11_macos-aarch64_bin.dmg
- Maak een nieuw tekstbestand aan. Of werk het bij als het bestaat.
$ mkdir ~/.gradle
$ nano ~/.gradle/gradle.properties
Plak deze inhoud erin. Sla het bestand op en herstart de computer.
## Projectbrede Gradle-instellingen. \{#project-wide-gradle-settings}
#
# Voor meer details over het configureren van je buildomgeving, bezoek \{#for-more-details-on-how-to-configure-your-build-environment-visit}
# http://www.gradle.org/docs/current/userguide/build_environment.html \{#httpwwwgradleorgdocscurrentuserguidebuildenvironmenthtml}
#
# Specificeert de JVM-argumenten die worden gebruikt voor het daemonproces. \{#specifies-the-jvm-arguments-used-for-the-daemon-process}
# De instelling is bijzonder nuttig voor het aanpassen van geheugeninstellingen. \{#the-setting-is-particularly-useful-for-tweaking-memory-settings}
# Standaardwaarde: -Xmx10248m -XX:MaxMetaspaceSize=256m \{#default-value--xmx10248m--xxmaxmetaspacesize256m}
# org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 \{#orggradlejvmargs-xmx2048m--xxmaxmetaspacesize512m--xxheapdumponoutofmemoryerror--dfileencodingutf-8}
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# Indien geconfigureerd, zal Gradle in incuberende parallelle modus draaien. \{#when-configured-gradle-will-run-in-incubating-parallel-mode}
# Deze optie mag alleen worden gebruikt met ontkoppelde projecten. Meer details, bezoek \{#this-option-should-only-be-used-with-decoupled-projects-more-details-visit}
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects \{#httpwwwgradleorgdocscurrentuserguidemultiprojectbuildshtmlsecdecoupledprojects}
org.gradle.parallel=true
org.gradle.caching=true
#Vrij Apr 08 18:47:31 EEST 2016
# android.useDeprecatedNdk=true \{#androidusedeprecatedndktrue}
- Voer
prepare.sh
uit om de Qt-bibliotheek te compileren en externe afhankelijkheden te downloaden
$ cd ios
$ ./prepare.sh
Fout: Xcode niet correct ingesteld. Mogelijk moet u de licentie bevestigen...
.
Oplossing: schakel XcodeCommandLineTools naar de Xcode-app, bevestig de licentie en schakel terug.
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
$ sudo xcodebuild -license accept
$ sudo xcode-select --switch /Library/Developer/CommandLineTools
Oplossing 2: controleer of xcrun beschikbaar is: /usr/bin/xcrun -find xcrun
. Als je krijgt: xcrun: error: unable to find utility "xcrun", not a developer tool or in PATH
. Open dan Xcode > Voorkeuren > Locaties en selecteer in het veld "Command Line Tools" je command line tools "Xcode XX.X" En voer $ ./prepare.sh
opnieuw uit.
Oplossing 3: Fout: CMake Error ... iphoneos is not an iOS SDK
.
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Oplossing 4: Als je een fout krijgt zoals deze: CMake Error at CMakeLists.txt:1 (cmake_minimum_required): CMake 3.21.2 or higher is required. You are running version 3.11.2
. Download dan het dmg-installatieprogramma van de CMake-website en voer een handmatige installatie uit. En voer $ ./prepare.sh
opnieuw uit.
https://cmake.org/download/
Oplossing 5: Als je een fout krijgt zoals deze: Failed to configure 'qtbase-ios' for 'ios.simulator.clang.static', aborting...
. Ga naar de map core/external/qtbase-ios/
en verwijder alle mappen die beginnen met upstream
. En voer $ ./prepare.sh
opnieuw uit.
-
Open
osmand.xcworkspace
in Xcode -
Eerste build. Stel het builddoel in op
OsmAnd Maps
. (Bij de afspeel-/stopknoppen). Selecteer als doel je apparaat of een van de iOS-simulatoren. Maar gebruik niet de standaard 'Any iOS Device (arm64)'. Bouw het project (afspeelknop). -
XCode-bestemmingen en Sandbox
-
Gebruik "Mijn Mac (ontworpen voor iPad)" voor dagelijkse ontwikkeling (beste prestaties)
-
Gebruik iPhone/iPad-bestemmingen voor UI/UX-ontwikkeling (langzaam op M-processors)
-
MacOS kan je vragen om in te loggen met Apple ID wanneer OsmAnd actief is
-
Gebruik je Sandbox-account als Apple ID om herhaalde inlogverzoeken te voorkomen
-
Gebruik OsmAnd Cloud met je Promo-abonnement om onbeperkte kaarten te krijgen
-
Vraag je teamleider om Sandbox-accounts en Promo-abonnementen
Probleemoplossing
Tijdelijke bestanden opschonen.
- In geval van buildfouten kun je in Xcode drukken op:
Product -> Clean build folder
- Sluit Xcode.
- Verwijder de mappen
baked
enbinaries
in deOsmAnd
-map (indien deze al bestaat). - Ga naar de map
core/external/qtbase-ios/
en verwijder alle mappen die beginnen metupstream
. - Verwijder de Xcode DerivedData-map:
rm -rf ~/Library/Developer/Xcode/DerivedData
- Controleer of alle repositories up-to-date zijn en op de juiste branches staan.
- Herstart je computer. (Ja, het kan helpen).
- Voer vervolgens
$ ./prepare.sh
uit - Open XCode en probeer het project opnieuw te bouwen.
M1 mac
- In geval van
ld: library not found for -lOsmAndCore_static_standalone
: - Project Navigator -> OsmAnd_projects -> OsmAnd_projects (in Project/Targets lijst) -> Build settings -> All -> Architectures -> Excluded Architectures -> Debug
- Voeg een stringveld van het type
Any IOS Simulator SDK
toe met de waardearm64
. (je moet dit na elke prepare.sh-uitvoering toevoegen) - Bouw het project. In geval van fouten, voer alle instructies uit van
11. Probleemoplossing - tijdelijke bestanden opschonen.
enprepare.sh
nogmaals uit.
Kotlin debug-add-on (optioneel)
$ brew install xcode-kotlin
$ xcode-kotlin install
$ xcode-kotlin sync
Raadpleeg de sectie LLDB Init File om de Kotlin debug-setup af te ronden.
Qt debug-add-on (optioneel). Als je Qt-waarden in debug-modus wilt zien, voer dan dit uit:
$ mkdir -p ~/qtlldb
$ git clone https://github.com/gbooker/lldb-qt-formatters ~/qtlldb
$ touch ~/.lldbinit-Xcode
$ echo "" >> ~/.lldbinit-Xcode
$ echo "command script import ~/qtlldb/both.py" >> ~/.lldbinit-Xcode
LLDB Init Bestand (optioneel)
XCode 16+ laadt ~/.lldbinit-Xcode
niet automatisch, dus stel het handmatig in via het menu Product - Scheme - Edit scheme - Run - LLDB Init File
.
Na het instellen van deze parameters, herstart je computer.