Hallo,
nach einigen steinigen Wegen und 1 h Telefonat mit Apple USA und 1,5 h Telefonat mit Apple München funktioniert nun mein Mac Mini mit XCode und Visual Studio.
Visual und Studio und XCode haben ja Funktionen um Apps zu signieren (archivieren) um sie für Ad Hoc Deployment per Link auf Website bereitzustellen.
Kann man die Signaturen manuell hinzufügen z.B. mit openssl ?
Apple braucht eine p12-Datei.
Wenn man die Signaturen per Skript hinzufügen könnte würde das meinen Ablauf für die Bereitstellung erheblich vereinfachen und sicherer machen.
Außerdem kriege ich es bisher nur ab und zu hin die Signaturen für iOS zu erstellen, das ist recht wackelig in XCode.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Ich hab bisher die Apps immer über VS App Center signiert, hat immer sehr gut funktioniert.
iOS Code Signing in App Center - Visual Studio App Center
Davon abgesehen, dass XCode einen extrem schlechten Ruf als IDE hat (langsam, oft Abstürze, inkonsistent..) hat eigentlich das Debuggen auf dem Device gut funktioniert.
Fürs reine Development verwenden die meisten App Devs, die ich kenne, VSCode oder AppCode; wobei beide XCode als Basis benötigen (Debugging über LLDB etc).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke, werde ich testen !
Hast Du dazu die Signatur aus dem Apple Developer Center benutzt ? Dann braucht man den kostenpflichtigen Developer Account, den habe ich noch nicht.
Mit XCode kann man auch ohne diesen Account signieren, ich weiß aber nicht ob nur für angeschlossene Handys gilt oder für alle Handys.
Für die Entwicklung benutze ich nur Visual Studio, auf Windows und auf dem Mac. Xcode habe ich nur für da Anmelden des iPhones und für das Signieren benutzt.
Die App werde ich später über einen Link auf der Homepage verteilen, so wie hier (2. Link) : https://www.finderwille-frankfurt-main.de/finderwille-einsatz-app-betaversion/
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
ich habe jetzt einen kostenpflichtigen Account bei Apple Developer und habe es nun geschafft eine Beta Version Online zu stellen (Adhoc Deployment).
Der kostenlose Account kann nicht viel und man macht mehr kaputt damit. Ich musste viele Umwege gehen bis App ID, Bundle ID, Certificate, Provisioning Profile und Signature funktioniert haben. Am Ende musste ich alle löschen und neu vom VS erstellen lassen.
XCode ist sehr wackelig und ich habe nun alles auf dem Windows Rechner gemacht. Der Mac muss eingeschaltet sein und ein iPhone muss angeschlossen sein. Zum Glück bekomme ich ein altes iPhone geschenkt. Das Windows Visual Studio läuft gut mit dem Mac zusammen und holt sich alle notwendigen Dokumente von der Apple Developer Seite. Und legt alles an was man braucht !
Hier ist das Ergebnis : Die Finderwille Einsatz App Betaversion | Finderwille Frankfurt/Main
Bitte nicht installieren, ich brauche zuerst die iPhone Seriennummer (UDID), sie muss in das Package eingetragen werden.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Es gibt anscheinend Möglichkeiten mit den Xcode Tools zu signieren. Leider bekomme ich es noch nicht mal in der IDE hin.
Bisher habe ich es genau einmal hinbekommen dass eine App rausgekommen ist die man installieren konnte. Und die lief genau einen Tag, dann ließ sich die App nicht mehr starten.
Jetzt schreibe ich jeden Schritt genau auf, damit ich es reproduzieren kann.
Folgende Schritte mache ich um eine App fürs iPhone zu erzeugen :
Auf dem Windows 10 Rechner :
Alle Zertifikate / Profile löschen
Extras / iOS / Mit Mac koppeln
Clean / Rebuild / Deploy Project
Release iPhone XamarinForms.LocationService.iOS Remotegerät (falls Natascha's iPhone 6s nicht vorhanden)
Starten ohne Debuggen (Strg + F5)
Release iPhone XamarinForms.LocationService.iOS Natascha's iPhone 6s
Starten ohne Debuggen (Strg + F5)
Eigenschaften XamarinForms.LocationService.iOS
iOS-Bundle-Signierung
Schema : (*) Automatische Bereitstellung
Team : Bernd Quambusch - Individual - 828G3XCPH99 (bq@go-online.de)
5a. Apple Konto entfernen / hinzufügen
5b. Eigenschaften XamarinForms.LocationService.iOS
iOS-Bunde-Signierung
Schema : (*) Manuelle Bereitstellung
Signierungsidentität :
Team : Bernd Quambusch - Individual - 828G3XCPH99 (bq@go-online.de)
Projektmappe XamarinForms.LocationService.iOS
Archivieren
[Verteilen] [Ad-hoc]
Extras / iOS / Mit Mac koppeln
8a. Extras / Optionen / Xamarin / iOS-Einstellungen
Speicherort für Archive : C:\Archive (Sonst kommt Fehler MDB Files ...)
Enable Hot Restart = Nein
Archiv-App signiert mit : B4120F70629EC3....
Manuelle Bereitstellung
Signierungsidentität : Bernd Quambusch (2. Eintrag)
Bereitstellungsprofil : Finderwille Einsatz App Distribution
Speichern unter : C:\Users\bq\AppData\Local\Xamarin\iOS\Archives
XamarinForms.LocationService.ipa [Speichern]
[Ordner öffnen]
C:\Users\bq\AppData\Local\Xamarin\iOS\Archives
XamarinForms.LocationService.ipa hochladen
Auf dem Mac
========
Visual Studio starten
iOS als Startprojekt festlegen
Release | iPhone : Generisches Gerät
iOS Einstellungen : iOS-Bündelsignierung / Signierungsidentität Verteilung: Bernd Quambusch (828G3XCPH9)
Bereitstellungsprofil : Ad-hoc (automatisch)
Erstellen : Projektmappe bereinigen / neu erstellen
iOS : Für Veröffentlichung archivieren
Signieren und verteilen / Ad Hoc
Apple Developer Portal :
Profiles : Generate
() iOS
() Ad Hoc
App ID : Visual Studio Wildcard
Certificate : Bernd Quambusch (Distribution)
[x] Select All Devices
Name : Finderwille Ad Hoc Distribution
[Generate]
Bereitstellungsprofil ( ) Vorhandene Identität und vorhandenes Bereitstellungsprofil verwenden
59B87C2...
(*) Mit anderer Identität und anderen Bereitstellungsprofil erneut signieren
Signierungsidentität : Distribution: Bernd Quambusch (828G3XCPH9)
App : ...iOS.app
Bereitstellungsprofil : Finderwille EInsatz App Distribution
[Veröffentlichen]
[Ersetzen]
Die erzeugte IPA Datei funktioniert leider nicht.
Auf dem iPhone : " 'Finderwille Einsatz App' kann nicht installiert werden. Versuche es später noch einmal."
Auf der System Konsole des iPhones steht nur : "This app could not be installed at this time" "Invalid Status Code 484" "Error Domain ... Code 1404"
Weitere Fehlermeldungen gibt es nicht.
Da muss ich mal weiter probieren ...
Oder hat da jemand eine idee ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Es funktioniert !
Das Problem war dass beim Ändern von Zertifikat, Apple ID, App ID oder Provisionierungsprofil die alten Werte immer irgendwo stehen bleiben und leider manchmal benutzt werden. Die automatische Bereitstellung in iOS-Bundle-Signierung hört sich gut an, kann man wohl für Beta Versionen per Ad Hoc Distrubution nicht benutzen.
Lösung war das manuelle Löschen der Dateien für Zertifikate und Profile.
Meine Schritte auf dem Windows 10 Rechner :
Dateien in C:\Users??\AppData\Local\Xamarin\iOS\ löschen
Apple ID neu hinzufügen, Profile laden
Verzeichnis löschen : C:\Net\Android\Finderwille Einsatz App\XamarinForms.LocationService.iOS\obj\iPhone\Release
iOS Projekt bereinigen und neu erstellen
Extras / iOS / Mit Mac koppeln
iOS-Bundle-Signierung
(*) Manuelle Bereitstellung
Signierungsidentität : Apple Distribution: Bernd Quambusch (828G3XCPH9)
Bereitstellungsprofil : Finderwille Ad Hoc Distribution
Benutzerdefinierte Berechtigungen : <Dateiname Löschen>
Release iPhone XamarinForms.LocationService.iOS Natascha's iPhone 6s
Das iPhone ist am Mac angeschlossen und Bildschirm entsperrt.
Starten ohne Debuggen (Strg + F5)
iOS Archivieren
Verteilen / Ad Hoc
Manuelle Bereitstellung
Signierungsidentität : Apple Distribution: Bernd Quambusch (828G3XCPH9) (1. Auswahl von 4 Einträgen)
Bereitstellungsprofil : Finderwille Ad Hoc Distribution
[Speichern unter]
[Ordner öffnen]
C:\Archives *.ipa auf Website hochladen und Info.plist Datei erstellen.
Nun kann ich die App von der Website per Klick installieren : https://www.finderwille-frankfurt-main.de/finderwille-einsatz-app-betaversion/
Die Entwicklung von mobilen Apps in xamarin.forms gefällt mir gut, eine tolle Sache ! Wird nicht meine letzte App bleiben.
Allerdings ist die Integration noch nicht perfekt, es hakt an vielen Stellen.
Beispiele :
Date Picker geht nicht im Dark Mode
Beim Löschen von Zertifikaten, Apple ID, App ID oder Provisionierungsprofil müssen die Dateien dazu manuell gelöscht werden
Man kann die Developer ID im Visual Studio auf dem Mac nicht editieren oder löschen
/bin/release Verzeichnis auf Windows Rechner muss man vor dem Build manuell löschen
Der Windows Rechner verliert immer die Verbindung zum Mac, muss man immer manuell neu verbinden
Android : In der Standard Installation gibt es immer den Fehler "Copy of the mdbs files failed". Man muss die Pfadeinstellungen für Archive ändern und kürzere Pfade eintragen.
Es kommt öfter vor dass bei Xamarin die Pfade länger als 256 Zeichen werden und Windows damit nicht zurecht kommt.
Siehe https://github.com/xamarin/xamarin-android/issues/5584
Die kostenlose Bereitstellung besser ignorieren und überhaupt nicht damit anfangen, auch wenn es anfangs verlockend klingt.
Für die Bereitstellung am besten 2 iOS Devices benutzen, eines zum Erstellen des Projektes und eines zum Testen der Installation.
Zu meiner ursprünglichen Frage : Man kann die App mit Openssl.exe oder xcode tools auch per Script signieren und packen, da muss man sich aber besser auskennen. Das mache ich vielleicht später mal.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
ich habe bisher die automatische Bereitstellung des Visual Studio benutzt um eine App für das iOS zu erzeugen.
Das war aber keine gute Idee weil das VS dann jedes Mal eine neues Zertifikat erstellt und die Zahl von 6 erlaubten Zertifikaten schnell voll ist.
Bei der manuellen Bereitstellung kann man alles selber kontrollieren was benutzt wird.
Vorher muss man aber noch die alten Zertifikate und Profile im Dateisystem löschen weil man sonst eine Liste von 10 gleichen Zertifikaten hat und nicht weiß welches überhaupt noch gültig ist.
Leider bekommt man bei der manuellen Bereitstellung die Fehlermeldung "Not in keychain". Man muss dann noch den privaten Schlüssel vom Mac Rechner auf den Windows Rechner kopieren und importieren. Das ist leider in keiner Doku erwähnt.
Benutzt hier noch jemand VS unter Windows um iOS Apps zu entwickeln ?
Lohnt es sich wenn ich hier Fragen dazu stellen oder auch Lösungen vorstelle ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Bei der manuellen Bereitstellung kann man alles selber kontrollieren was benutzt wird.
Ich meine, dass die Kommunikation auch immer war: arbeitest Du an einem echten Projekt und "nicht mal kurz ne Demo", dann nimm Manual Provisioning.
Das ist leider in keiner Doku erwähnt.
Dann mach nen Issue auf GitHub auf und gib das als Feedback 🙂
Lohnt es sich wenn ich hier Fragen dazu stellen oder auch Lösungen vorstelle ?
Klar, Content ist immer gut - aber gibt wohl aktuell nich viel Zielgruppe hier für das Thema 🙂
Aber kannst ja einen Erfahrungsartikel schreiben.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Bernd,
Benutzt hier noch jemand VS unter Windows um iOS Apps zu entwickeln ?
Lohnt es sich wenn ich hier Fragen dazu stellen oder auch Lösungen vorstelle ?
Ja, ich betreue zwei Xamarin.Forms Apps, die auch in den Apple-Store hochgeladen werden müssen.
Daher bin ich durchaus daran interessiert zu hören, welche Probleme so auftreten können.
Allerdings läuft bei mir die Anbindung an den Apple-Store (Upload nach App Store Connect durch VS) seit einigen VS Versionen problemlos 🙂
Viele Grüße
Matthias
“Knowledge cannot replace friendship. I'd rather be an idiot than lose you.”
Die "Hürden" die ich hatte :
Zertifikat und Bereitstellungsprofil im Apple Developer Portal erstellt. Im Visual Studio kann man die runterladen. Leider laufen die dann nicht. Wenn man aus dem VS ein neues Zertifikat erstellt geht es, aber das geht nur 6 Mal nacheinander.
Der Fehler der angezeigt wird heißt "No Keychain".
Das Problem : Der private Schlüssel wird seit VS 16.5 nicht mehr automatisch auf den Windows Rechner übertragen.
Lösung : Zertifikate auf dem Mac runterladen und dort mit privatem Schlüssel speichern (*.p12). Auf dem Windows Rechner im VS importieren und dann geht es.
Hürde : Auf Windows Rechner kam immer die Fehlermeldung "Visual Studio Essentials ... erfordert Kennwort". Ich hatte aber keines vergeben.
Lösung : Den Eintrag "Visual Studio Essentials ..." im Schlüsselbund des Mac Rechners löschen.
Hürde : Wenn man ein neues Zertifikat oder Profil erstellt bleiben die alten im VS bestehen, obwohl sie im Developer Portal gelöscht sind. So werden 5 Profile angezeigt mit gleichen Namen, aber nur eines ist richtig.
Lösung : Die Zertifikate und Profile werden in Dateien in
C:\Users..\AppData\Local\Xamarin\iOS\Provisioning\Certificates
und
C:\Users..\AppData\Local\Xamarin\iOS\Provisioning\Profiles
abgelegt. Die Dateien in diesen Verzeichnissen einfach löschen.
Grüße Bernd
PS.: Alles ohne Gewähr ! Vor allem das Löschen von Sachen !
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3