Laden...

Einfaches Deployment einer Xamarin Test-App

Erstellt von OXO vor einem Jahr Letzter Beitrag vor einem Jahr 833 Views
O
OXO Themenstarter:in
86 Beiträge seit 2020
vor einem Jahr
Einfaches Deployment einer Xamarin Test-App

Hallo,

ich hoffe, dass diese Frage nicht zu dumm ist, aber mich verwirrt das was ich im Internet finde schon etwas, daher wollte ich hier mal fragen, da Ihr ja aktiv Apps entwickelt.

Ich wollte für mein iPhone mal eine kleine App zum Testen erstellen. Ich arbeite unter Windows mit VS 2022 und Xamarin, habe also kein Xcode.

Benötige ich für ein einfaches Deployment und Ausprobieren auf meinem eigenen Handy, ohne Weg über den App-Store, wirklich einen Developer-Account für 99 EUR/Jahr?
Hatte mal was gehört von Xamarin Hot Reload und einfach Anschließen des iPhones. Leider will der da bei mir immer einen Zugang zum Developer Account und ich weiß nicht, ob es wirklich nicht anders geht, oder wie ich ansonsten mal bei mir lokal eine App deployen könnte?

16.806 Beiträge seit 2008
vor einem Jahr

Vorweg: die Developer Experience für Xamarin Apps ist alles andere als doll und simpel. Apple erzeugt zusätzliche Umstände.

ist in den ersten Schritten der Installation erklärt und nennt sich free provisioning.
Kostenlose Bereitstellung für Xamarin.iOS-Apps - Xamarin
Dort steht in den Anforderungen auch

Die verwendete Apple-ID darf nicht mit dem Apple Developer Program verknüpft sein.

Die Regeln mit dem App Developer Programm kommen aber von Apple.
Auch einige Vorgaben bzgl iOS Apps und das Ökosystem um XCode kommt von Apple und ist sehr restriktiv. Da kann Microsoft/Visual Studio nix tun.
Das ist halt leider kein offenes Ökosystem.

Je nachdem, was Du tun willst geht das auch kostenlos.
https://developer.apple.com/support/compare-memberships/
Für reines On Device Testing brauchst laut Tabelle nur ein simplen Apple Account, kein Developer Programm Account.
Vermutlich wirst Du aber XCode benötigen, sollte sich da nichts geändert haben bzgl. der individuellen App Id Generierung.

O
OXO Themenstarter:in
86 Beiträge seit 2020
vor einem Jahr

Hallo Abt,

vielen Dank für Deine Antwort und Deine Hilfe. Der Prozess ist wirklich grauslig, wenn ich das mal so sagen darf.
Also, dass es ohne Mac OS gar nicht geht, stört schon auch noch dazu.

Gut, aber ich hatte zumindest einen Teilerfolg. Ich habe auf dem Mac meiner Freundin zumindest direkt auf mein iPhone deployen können. Man musste noch am iPhone selber auch den Entwickler-Modus aktivieren und mir als Deployer der App vertrauen. Soweit so gut. Das ging direkt über XCode auf dem Mac. Die App ist auch auf meinem iPhone und lässt sich auch starten.

Ich wollte nun das Ganze über Windows machen. Dazu hab ich in VS 2022 (17.3.6) die Verbindung zum Mac meiner Freundin hergestellt, damit der Code damit übersetzt wird. Das schaut jetzt zunächst erst einmal gut aus. Beim Laden auf mein iPhone hakt es allerdings.

Solution Platforms: iPhone
Start: OXO's iPhone

Wenn ich dann auf F5 klicke, bekomme ich den Dialog zum "Setup Hot Restart" angezeigt. In dem Dialog klicke ich auf "Next" und sollte dann ein Team auswählen. Hier dachte ich, dass ich mein Apple-ID-Profil als Team auswählen können sollte, da das in der XCode App so auch hinterlegt war.

Leider kann ich da aber gar nix auswählen. In der Drop-Down-Box steht nur "Select a Team..." mehr nicht und nix passiert.

Woran kann das denn liegen?

O
OXO Themenstarter:in
86 Beiträge seit 2020
vor einem Jahr

Hallo Abt,

wollte nur nochmal Feedback geben, dass es mir jetzt doch gelungen ist, eine erste Xamarin.iOS-Anwendung von Windows aus auf mein iPhone zu bekommen.

Ich hab mich irgendwann geschlagegen gegeben und doch noch einen Developer-Account (nicht den freien Account) gebucht. Der Prozess war aber trotzdem komisch und leider abweichend zu dem was man so im Netz findet. Kam mir fast so, wie veraltete Infos vor im Vergleich zu dem, wie es dann funktioniert mit der neuesten VS 2022 funktioniert hat. Das Xamarin Hot Restart scheint mittlerweile mehr in's VS integriert zu sein.

Was gefühlt recht seltsam war, ist dass man die Anwendung zunächst einmal vom Mac aus deployen musste, um dann das Signing-Zertifikat für die App zu bekommen (inkl. aller Aktivitäten am iPhone selbst zum Vertrauen der App und dem Developer). Meine Idee war zunächst, dass ich das erzeugte Zertifikat vom Mac kopiere und unter Windows dann in die Konfiguration beim Enterprise-Account-Dialog im "iOS Bundle Signing"-Bereich auswähle. Das ist mir so leider nicht gelungen.

Als ich dann den Developer-Account aktiviert hatte, war zumindest mehr drin. Der Prozess war aber für mich immer noch komisch und gewöhnungsbedürftig. Letztlich waren dann noch 2 Probleme zu lösen. Zum einen musste ich in mein Xamarin.iOS-Projekt im "iOS Bundle Signing"-Bereich die Einstellungen in der referenzierten "Entitlements.plist" anpassen. Dort musste der "CFBundleIdentifier" so angepasst werden, wie er zuvor in dem Signing-Prozess auf dem Mac beim allerersten Deployment angegeben war, z.B. "com.xamarin.MyApp".

Leider ging das Deplyoment aber dann immer noch nicht auf mein angeschlossenes iPhone. Der Grund war, dass ich das iPhone per USB an meinen Windows-Rechner angeschlossen hatte. Offenbar muss dieses aber für das Deployment an ein "lokales iPhone" an den Mac angeschlossen sein. Das scheint mir irgendwie unlogisch, wenn ich ehrlich bin, aber so ging es dann:

"Could not install the application on the device AMDeviceSecureInstallApplicationBundle returned: 0xe8008015"
"No valid iOS code signing keys found in keychain. Please enable Automatic Provisioning from the iOS Bundle Signing page."

Meine Vorstellung war halt, dass ich mir für das Kompilieren einen Mac in der Cloud nehme, den für das Kompilieren nutze und dann mein an den Windows-Rechner angeschlossenes iPhone für das Deployment nutze. Das geht aber halt dann erst einmal nicht.

Im Netz wird immer wieder eine Kombination zum lokalen Deployment gezeigt, bei der man verschiedene Dinge benötigt und dann aber lokal auf das iPhone deployen kann: iTunes (vermutlich wegen den Treibern zur Kommunikation mit dem iPhone), Xamarin Hot Restart, einen Mac zum Kompilieren (z.B. auch in einer Cloud) und letztlich dann einfach das iPhone an den lokalen Windows PC angeschlossen.

Hast Du das schon so hinbekommen, oder macht es vielleicht jemand anders gerade so?

Komisch finde ich dann zusätzlich, dass ein Dialog auf ging, der gesagt hat, dass ich die Anwendung nicht im Debug-Build verwenden kann. Musste sie also als Release beauen. Das Debuggen so live ist da tatsächlich auch schwierig.

Wie sind Eure Erfahrungen damit und wie nutzt Ihr das in der Praxis?

Meine Empfehlung nach den Erfahrungen jetzt sind fast: eine mobile Multi-Plattform für Xamarin zu erstellen und dann unter Windows einfach einen Android-Simulator zu nutzen, so dass man die Anwendung einfach lokal besser gestalten und testen kann. Das passt ja dann größtenteils auch für iOS und man kann dann später an einem realen Mac mal das Release deployen.

16.806 Beiträge seit 2008
vor einem Jahr

Hast Du das schon so hinbekommen, oder macht es vielleicht jemand anders gerade so?

Ich hab mit App Development gar nichts zutun. Ich bekomme das nur mit oder hab eventuell mal nen Touch mit dem DevOps am Hut.

Xamarin wird sicherlich in den Docs nicht täglich aktualisiert, vor allem da nun MAUI GA und die offizielle Empfehlung als Xamarin Ersatz ist.
Soweit ich das mitbekommen habe wurde das auch alles simpler - aber die Grundregeln und die Einschränkungen (iTunes, XCode...) gibt halt Apple mit ihrem geschlossenen Ökosystem vor; nicht Microsoft.

.NET MAUI hot restart for iOS device deployment - .NET MAUI

Das Xamarin Hot Restart scheint mittlerweile mehr in's VS integriert zu sein.

Bei Apps dieser Art ist Hot Reload kein Runtime Feature wie in der .NET Runtime/CLI - sondern ein Tooling Feature.

3.825 Beiträge seit 2006
vor einem Jahr

Die kostenlose Variante ist sehr holprig, der kostenpflichtige Account ist da viel besser.

Deployment muss man auf dem Mac machen da auf einem Windows Rechner aus Sicherheitsgründen seit einiger Zeit keine private Key mehr gespeichert werden. Leider ist das kaum dokumentiert.

Das iPhone muss am Mac angeschlossen sein, zumindestens beim M1 Mac. Der Emulator auf dem Windows Rechner bringt leider nur einen schwarzen Bildschirm.

Ich freue mich dass mit MAUI das nun alles besser unterstützt wird, getestet habe ich es noch nicht.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

O
OXO Themenstarter:in
86 Beiträge seit 2020
vor einem Jahr

Das war ein wichtiger Hinweis, dass das iPhone am Mac selber angeschlossen sein muss. Ohne das funktioniert es leider erst einmal nicht 🙂