2016-05-24 11 views
-2

Ich erbte ein altes Projekt, mit alten 3rd-Party-Frameworks drin. Es läuft gut auf meinem iPhone 6, und ich habe die App für AdHoc-Bereitstellung erfolgreich archiviert. Wenn ich jedoch versuche, die App an den App Store zu senden, erhalte ich eine Fehlermeldung über die fehlende 64-Bit-Architektur. Wenn ich Arm64 zu Architekturen und gültigen Architekturen in den Build-Einstellungen meines Ziels (und des Projekts) hinzufüge, wird die App nicht kompiliert, da eines der Frameworks "fehlende Architektur arm64" fehlt. Die Verknüpfung schlägt fehl und ich kann kein Archiv erstellen.iOS 64-Bit-Anforderung iTunes Connect

Da einige der oben genannten Einstellungen für mich eine Art Voodoo-Touch haben, hoffe ich, dass es eine Kombination von Einstellungen gibt, die irgendwie 32-Bit-Code benötigt, aber nach dem Kompilieren als 64 Bit darstellt.

Ich habe mir die neueste Version des Frameworks angesehen, die das Problem verursacht, aber die Dateistruktur und die Namenskonvention sind völlig unterschiedlich, so dass ein Upgrade ziemlich viel Arbeit in Anspruch nehmen wird.

Hat jemand von Ihnen einige Vorschläge?

dank

+1

"so ein Upgrade wird eine Menge Arbeit brauchen" Dann machen Sie das. Sie können nicht angeben, dass Sie das 64-Bit-Segment nicht verpassen! – matt

+0

@matt: Ist das der einzige Weg nach vorne? Ich hatte auf eine vorläufige schnelle Lösung gehofft. Interessanterweise habe ich es vor einem halben Jahr geschafft, diese App einzureichen. – Sjakelien

+0

Weil das damals keine Voraussetzung war. Aber jetzt ist es so. – matt

Antwort

1

Ich hoffe, dass es eine Kombination von Einstellungen gibt, die irgendwie 32-Bit-Code nimmt, aber präsentiert nach dem Kompilieren als 64-Bit.

Sie scheinen zu betrügen zu bitten. Du kannst nicht betrügen.Es ist now a requirement, dass Apps 64-Bit sind. Diese Anforderung hat im Juni 2015 begonnen. Apple hat diese Änderung im Voraus angekündigt, und Sie selbst, als Entwickler, haben mindestens eine E-Mail erhalten, die Sie darüber informiert hat!

Wenn Sie eine frühere Version Ihrer App vor dieser Zeit eingereicht haben, war dies keine Voraussetzung. Aber jetzt ist es so.

+0

Am 22. Januar 2016 habe ich ein Archiv dieses Projekts erstellt, das ich erfolgreich bei iTunes Connect eingereicht habe. Gleiche App, gleiche Einstellungen, gleicher Rahmen. – Sjakelien

+0

Hey, es ist Apple. Vielleicht haben sie eine zusätzliche Gnadenfrist gewährt. Möglicherweise hat ihr Test-/Analyseverfahren dies nicht als Problem erkannt. Ich spreche nicht für die Borg, ich rang mit ihnen wie jeder andere auch. :) – matt

+0

Am Ende Arbeit = Arbeit = Geld = Geld. Aber ein Framework zu aktualisieren ist keine sehr interessante Aufgabe. – Sjakelien

0

Ich denke, Sie haben drei Möglichkeiten: 1 - es könnte einfach ein Fehler in den Build-Einstellungen sein; 2 - entferne 64-Bit-Architekturen; oder 3 - kompiliere das/die alte (n) Framework (s) für die 64-Bit-Kompatibilität neu.

Falls Sie irgendwo in Ihren Build-Einstellungen einen Fehler haben. Haben Sie, dass die unterschiedlichen Freigaberegelungen geprüft korrekt wie so festgelegt sind:

enter image description here

Manchmal Änderung der Build Active Architecture Only Flagge zu no hat mir auch geholfen:

enter image description here

einfach sicher, dass Sie klicken auf der Offenbarung Dreieck, um die richtigen Einstellungen für jedes Schema (Debug & Release).

In Bezug auf das alte Framework, ist es manuell enthalten oder verwenden Sie etwas wie CocoaPods? Ich weiß, dass CocoaPods eigene Einstellungen zum Bauen nur für Armv7 und Armv7s und nicht für Arm64 haben kann.

Apple's guidelines zum Konvertieren einer vorhandenen App in 64-Bit könnte nützlich sein.

+0

Danke, ich werde die Richtlinien durchgehen. In der Zwischenzeit habe ich mir all diese Einstellungen angeschaut, sie geändert, sie wieder geändert, aber das Endergebnis ist, dass die App entweder nicht kompiliert wird oder von iTunes abgelehnt wird. – Sjakelien

+0

@Sjakelien Ich fühle deinen Schmerz. Wären Sie in der Lage, mehr Details zu liefern (vielleicht ein Screenshot oder Copy & Paste), wo der Linker fehlschlägt? – Gordonium

1

Wenn Sie eine kompilierte Bibliothek verwenden, die nur in einer 32-Bit-Version verfügbar ist, können Sie nichts tun.

Die meisten Bibliotheken unter iOS werden als Quellcode geliefert. Sie müssen also nur den richtigen Ort finden, um sie als 64-Bit-Code zu kompilieren. Möglicherweise müssen Sie nachsehen, woher die Bibliothek kommt, und vielleicht eine neue Version herunterladen. Wenn keine neue Version verfügbar ist, müssen Sie den Code möglicherweise selbst schreiben oder eine andere Bibliothek herunterladen. Einige Entwickler haben die schlechte Angewohnheit, eine riesige Bibliothek für eine einzige Zehn-Zeilen-Methode zu importieren. Wenn Sie also Glück haben, ist es vielleicht nicht viel Mühe, den fehlenden Code neu zu schreiben.