Android mit CMake
« | 12 Aug 2023 | »Mit der Migration zu Visual Studio 2022 gingen mir meine Android Builds verloren. Nun müssen diese neu erdacht werden.
Und eben dafür soll mir nun CMake aus der Patsche helfen.
Als ich das GATE Projekt mit dem Studio 2017 damals startete, legte ich auch eine parallel Solution für Android an, um mit den Standard-Toolkits, die beim Studio dabei waren, Android Apps bauen zu können.
Das funktionierte zwar recht gut, doch so musste ich jede neue Codedatei von Hand in mehrere Solutionzweige aufnehmen und diverse Build-Flags immer doppelt und dreifach warten.
Folglich soll auch diese Konfiguration von CMake übernommen werden:
1cmake -DCMAKE_SYSTEM_NAME=Android -A x64 path_to_src
reicht bei einem heutigen CMake
aus, um Visual Studio automatisch zu finden
und dort dessen installierte Android Features zu aktivieren.
Das Ergebnis ist eine generierte Visual Studio Solution (.sln
), deren
Projekte gegen das “Standard” Android NDK kompiliert und linkt.
Fehlende Paketierung
Während also meine Binärdateien schon brav generiert werden können, fehlt leider ein entscheidendes Detail: Das APK Paket.
Im alten VS 2017 wurde das vom Projekt-Template miterzeugt und baute ein
APK
Paket mit dem NativeActivity
Modul aus der C++ Buildtoolchain.
So konnte man die neue App auch gleich im Emulator testen und sogar debuggen.
Noch weiß ich nicht, wie man das in CMake
erzeugen lassen kann, also wird
das wohl meine nächste Aufgabe werden.
Parallel stellt sich heraus, dass VS 2022 offenbar auch das
Buildsystem Ant nicht mehr
unterstützt, welches in VS 2017 noch Standard war.
Also ist auch hier noch eine Baustelle offen.
Fazit
Die Umstellung von VS-Solutions auf CMake
ist bestimmt der richtige Schritt
für die Zukunft. Aktuell ist das aber leider ein Rückschritt, da ich vorerst
keine Android-Pakete mehr erstellen und testen kann.
Das ist zwar jetzt keine großes Drama … aber ich fand es schon toll, dass
ich meine OpenGL GATE-Programme direkt
auch als Android-App am Smartphone sehen konnte.
… aber das wird ja hoffentlich bald auch wieder funktionieren.