Laden...

Manuelle Signierung von App für Android und iOS

Erstellt von BerndFfm vor 2 Jahren Letzter Beitrag vor 2 Jahren 1.738 Views
BerndFfm Themenstarter:in
3.825 Beiträge seit 2006
vor 2 Jahren
Manuelle Signierung von App für Android und iOS

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

16.806 Beiträge seit 2008
vor 2 Jahren

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).

BerndFfm Themenstarter:in
3.825 Beiträge seit 2006
vor 2 Jahren

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

BerndFfm Themenstarter:in
3.825 Beiträge seit 2006
vor 2 Jahren

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

BerndFfm Themenstarter:in
3.825 Beiträge seit 2006
vor 2 Jahren

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 :

  1. Alle Zertifikate / Profile löschen

  2. Extras / iOS / Mit Mac koppeln

  3. Clean / Rebuild / Deploy Project

  4. Release iPhone XamarinForms.LocationService.iOS Remotegerät (falls Natascha's iPhone 6s nicht vorhanden)
    Starten ohne Debuggen (Strg + F5)

  5. Release iPhone XamarinForms.LocationService.iOS Natascha's iPhone 6s
    Starten ohne Debuggen (Strg + F5)

  6. 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)

  1. Projektmappe XamarinForms.LocationService.iOS
    Archivieren

  2. [Verteilen] [Ad-hoc]

  3. 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

  1. 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]

  2. [Ordner öffnen]
    C:\Users\bq\AppData\Local\Xamarin\iOS\Archives
    XamarinForms.LocationService.ipa hochladen

Auf dem Mac
========

  1. Visual Studio starten

  2. iOS als Startprojekt festlegen

  3. Release | iPhone : Generisches Gerät

  4. iOS Einstellungen : iOS-Bündelsignierung / Signierungsidentität Verteilung: Bernd Quambusch (828G3XCPH9)
    Bereitstellungsprofil : Ad-hoc (automatisch)

  5. Erstellen : Projektmappe bereinigen / neu erstellen

  6. iOS : Für Veröffentlichung archivieren

  7. Signieren und verteilen / Ad Hoc

  8. 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]

  9. 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

BerndFfm Themenstarter:in
3.825 Beiträge seit 2006
vor 2 Jahren

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 :

  1. Dateien in C:\Users??\AppData\Local\Xamarin\iOS\ löschen

  2. Apple ID neu hinzufügen, Profile laden

  3. Verzeichnis löschen : C:\Net\Android\Finderwille Einsatz App\XamarinForms.LocationService.iOS\obj\iPhone\Release

  4. iOS Projekt bereinigen und neu erstellen

  5. Extras / iOS / Mit Mac koppeln

  6. iOS-Bundle-Signierung
    (*) Manuelle Bereitstellung
    Signierungsidentität : Apple Distribution: Bernd Quambusch (828G3XCPH9)
    Bereitstellungsprofil : Finderwille Ad Hoc Distribution
    Benutzerdefinierte Berechtigungen : <Dateiname Löschen>

  7. Release iPhone XamarinForms.LocationService.iOS Natascha's iPhone 6s
    Das iPhone ist am Mac angeschlossen und Bildschirm entsperrt.
    Starten ohne Debuggen (Strg + F5)

  8. iOS Archivieren

  9. 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]

  10. [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/

  1. App per xcode vom iPhone löschen und von der Website neu installieren.

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

BerndFfm Themenstarter:in
3.825 Beiträge seit 2006
vor 2 Jahren

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

16.806 Beiträge seit 2008
vor 2 Jahren

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.

U
69 Beiträge seit 2019
vor 2 Jahren

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.”

  • Patrick to Spongebob
BerndFfm Themenstarter:in
3.825 Beiträge seit 2006
vor 2 Jahren

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.

  1. 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.

  2. 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