webentwicklung-frage-antwort-db.com.de

App stürzt nur beim Testflight Build ab

Ich habe eine App für Swift erstellt und ausführlich mit iPhone 6, iPhone 6 plus und iPhone 5 sowie allen in Xcode angebotenen Simulatoren getestet. Die App läuft gut und stürzt nicht ab, wenn sie lokal hochgeladen wird. (iOS 8)

Ich habe endlich einen Build für Testflight eingereicht. Die App stürzt regelmäßig an derselben Stelle ab, nachdem die App über den Testflight-Build heruntergeladen wurde. 

Gibt es ein bekanntes Problem, bei dem hochgeladene Builds anders ausgeführt werden als lokal erstellte Builds? Und wie kann ich das Problem mit dem Testflight-Build debuggen? 

33
loop

Ich habe das Problem gelöst, indem ich die Swift-Compiler-Optimierung von fastest in none geändert habe. Ich bin nicht sicher, ob dies eine ideale langfristige Lösung ist, aber der Build stürzt nicht mehr ab.

6
loop

Ich denke, es ist ein schnelles Compiler-Problem. Um dies zu überprüfen, gehen Sie zunächst zu Edit Scheme, ändern Sie dann die Build-Konfiguration in den Modus Release im Register Run und installieren Sie das Build dann lokal. Sie erfahren, wo genau es abstürzt.

56
Chengappa C D

Es könnte sich um das Bitcode verwandte Problem handeln. Überprüfen Sie, ob alle Fremdanbieter-Bibliotheken Bitcode unterstützen, und setzen Sie dann Bitcode nur aufYES, oder aufNO

Tatsächlich ist Bitcode eine Zwischendarstellung eines kompilierten Programms. Apps, die Sie in iTunes Connect hochladen, die Bitcode enthalten, werden im App Store zusammengestellt und verlinkt. 

3
Dilip

Wenn jemand anderes das gleiche Problem hat, habe ich folgendes Problem behoben:

Ich habe das Problem schließlich auf eine Schleife mit einer if-Anweisung gebracht, ähnlich wie -

while(condition)
{
    if (check)
    {
        code!
    }
    //There was no code here
}

Beachten Sie, dass sich am Ende der Schleife (wo der Kommentar steht) kein Code befindet. Nachdem ich ein zufälliges Bit Code hinzugefügt hatte (in diesem Fall eine Variable für die Ausgabe inkrementiert), das Problem gestoppt.

while(condition)
{
    if (check)
    {
        code!
    }
    i += 1;
    output statement
}

Ich denke, das muss ein Compiler-Fehler sein, oder mein "Fix" sollte überhaupt kein Fix sein. Aber hier ist es für den Fall, dass es anderen hilft!

1
John Szymanski

In meinem Fall löst das Ändern des alten Build-Systems in ein neues Build-System (für Xcode 10) mein Problem, bei dem sich der Testflight-Build anders verhält. Könnte jemandem helfen.

1
HuaTham

Anstelle von i += 1; in den leeren while-Schleifen.

Ich habe dies in meiner leeren while-Schleife gemacht: RunLoop.current.run(until: Date(timeIntervalSinceNow: 1)) 

Und jetzt bombardiert die TestFlight App nicht!

Eine kürzere Zeit könnte auch wie folgt funktionieren: RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.25)) 

1
Jay

Ich musste die Einstellungen im Archiv-Build ändern, um einen Debug-Build zu erstellen, um ein ähnliches Problem zu lösen. In iOS kann tatsächlich ein Debug-Build an testflight gesendet werden, der mein Problem für die ersten Tests löste. 

Obwohl ich später begriff, dass mir die Berechtigungsdatei aus meiner Anwendung fehlte, wurde in meinem Projekt eine gemeinsam genutzte Erweiterung als Ziel verwendet.

Ich habe keine Informationen über den Stapelüberlauf bei der Berechtigungsfrage gesehen. Ich habe viel Zeit verschwendet. Hoffentlich hilft das in Zukunft jemandem wie mir.

0
K.S