wake-up-neo.net

Xcode versucht, die Framework-Bundle-ID beim Hochladen der iOS-App in den App Store abzugleichen

Nach 4 Monaten der Entwicklung meiner ersten iOS-App ist es an der Zeit, sie an den App Store zu senden. Ich habe die App in iTunes Connect erstellt, alle Details ausgefüllt und den korrekten Bundle ID in Connect und Xcode eingerichtet. Ich habe jedoch die letzten 3 Tage versucht, dieses seltsame Problem zu lösen. Es scheint, dass xcode versucht, Cocoapods-Frameworks hochzuladen, nicht meine Haupt-App.

Nach der Archivierung ging ich zu Window > Organizer > Validate.... Ich sehe den folgenden Bildschirm:

 enter image description here

Der Fehler:

 enter image description here

(Für Googler: Es wurden keine geeigneten Anwendungsdatensätze gefunden. Stellen Sie sicher, dass Ihre Bündel-ID 'org.cocoapods.Alamofire' korrekt ist).

Die Fehlermeldung weist darauf hin, dass versucht wird, einen Bundle ID anhand des Namen des Frameworks und nicht meines eigenen Bundles (z. B. com.organization.AppName) abzugleichen. Ich kann nirgendwo Antworten finden. Ich habe versucht, folgendes in meiner Podfile (die use_frameworks hat!) Zu machen, sowie meine verschiedenen Conf-Kombinationen, hatten aber keinen Erfolg.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|

      config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
      config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
      config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
    end
  end
end

 enter image description here

 All codesigning set to automatic

Fragen:

  • Sind die Schritte richtig?
  • Warum versucht Xcode, einen framework's bundle id anstelle nur meiner Hauptanwendung zu finden?
  • Wie kann ich dieses Problem überwinden, um meine App endgültig einzureichen?

EDIT 1: Ich konnte dieses Problem überwinden, aber das verursachte später ein anderes Problem, so dass ich immer noch keine Lösung habe. Grundsätzlich hat Alamofire Pod (von Cocoapods) eine Bündel-ID com.xxx.Alamofire. Ich habe es in com.xxx.myAppName geändert. Damit konnte ich es an den App Store senden, jedoch kann ich die App aufgrund des folgenden Fehlers nicht von TestFlight auf meinem iPhone installieren:

4/22/16, 12:50:29 AM itunesstored[124]: [ApplicationWorkspace]: Failed to install application: com.xxx.myAppName; /var/mobile/Media/Downloads/5927832272594571027/-6969961974973998640; Error Domain=LaunchServicesError Code=0 "(null)" UserInfo={Error=DuplicateIdentifier, ErrorDescription=The parent bundle has the same identifier (com.xxx.myAppName) as sub-bundle at /private/var/installd/Library/Caches/com.Apple.mobile.installd.staging/temp.IVHCuO/extracted/Payload/MyApp.app/Frameworks/Alamofire.framework}
23
Alex

Nachdem ich einige Zeit damit zu kämpfen hatte, konnte ich es funktionieren lassen. Im Grunde präsentierte nur Alamofire diese Ausgabe. Folgendes habe ich getan:

  1. Klicken Sie im Navigator in Pods .
  2. Unter Targets sehen Sie alle Frameworks, die Ihre App verwendet.
  3. Klicken Sie auf Alamofire (oder das Framework, das das Problem verursacht).
  4. Bearbeiten Sie den Bundle Identifier . Wenn die ID des App-Bundles com.company.appName lautet, geben Sie com.company.appName.Alamofire ein.

Ich habe com.company.appName für das Framework versucht, com.company.Alamofire, nichts hat funktioniert.

5
Alex

Dieses Problem ist nur aufgetreten, als beim Versuch, in den App Store hochzuladen, der folgende Fehler angezeigt wird.

Der iTunes Store-Vorgang ist fehlgeschlagen.

Es wurden keine geeigneten Anwendungsdatensätze gefunden. Überprüfen Sie, ob Ihr Bündel-Identifikator 'org. cocoapods . Alamofire' korrekt ist

Dies ist uns beim Versuch des Hochladens (bei Verwendung von Cocoapods) und bei der Suche nach einer Fehlerbehebung aufgefallen. Wir haben die drastische Maßnahme ergriffen, Cocoapods vollständig aus unserem Projekt zu entfernen, und stattdessen jeden Pod manuell als Framework hinzugefügt.

Und ...... der Upload in den App Store schlug immer noch mit dem gleichen Fehler fehl! ????

Der iTunes Store-Vorgang ist fehlgeschlagen.

Es wurden keine geeigneten Anwendungsdatensätze gefunden. Vergewissern Sie sich, dass Ihre Bündel-ID 'org. alamofire . Alamofire' korrekt ist

Es sieht also so aus, als wäre dies möglicherweise ein Fehler in Bezug auf die Verwendung des Frameworks innerhalb von Xcode.

Als wir herausfanden, dass dies nicht unbedingt von Cocoapods verursacht wurde, entschieden wir uns, Cocoapods weiter zu verwenden, und entwickelten die folgenden Schritte, um das Problem zu beheben.

Die Reparatur:

Unser Projekt enthält 2 Ziele (Ignorieren von Unit-Test-Zielen usw.). 1 für die Anwendung (nennen wir es MyApp ) und eine andere, die die Netzwerkschicht und andere nicht App-spezifische Funktionen enthält (nennen wir MyAppKit ).

  1. Fügen Sie CFBundlePackageType (auch bekannt als Bundle OS Type code) zu MyApps Info.plist hinzu und setzen Sie ihn auf APPL.
  2. Stellen Sie sicher, dass sowohl das Projekt MyApp als auch das Ziel MyApp die Build-Einstellung Always Embed Swift Standard Libraires bis Yes haben.
  3. Stellen Sie sicher, dass das Ziel MyAppKit die Build-Einstellung Always Embed Swift Standard Libraires bis No hat.

Sehen Sie sich immer noch genau an, was hier vor sich geht, aber ich denke, das könnte für jeden nützlich sein, der dies gerade erlebt.

4
Simo

Beim Versuch, die App an iTunes Connect zu senden, wurde genau diese Fehlermeldung angezeigt: "Es wurden keine geeigneten Anwendungsdatensätze gefunden. Überprüfen Sie, ob die Bündel-ID" org.cocoapods.Alamofire "korrekt ist.".

Ich habe es schließlich behoben, indem ich den Bundle OS Type-Code inAPPLgeändert habe.

4
neilge

Es funktioniert perfekt für mich. Ich habe gerade Info.plist mit der rechten Maustaste als "Quellcode" geöffnet und <key>CFBundlePackageType</key> in String APPL geändert

<key>CFBundlePackageType</key>
<string>APPL</string>
4

Vor kurzem hatte ich dasselbe Problem, während ich die App mit Cocoapods veröffentlichte. Es war ein Objective-C-Projekt und hat Pods als dynamische Frameworks integriert.

Dies ist bereits gemeldeter Fehler .

Daher empfehle ich die folgenden zwei Alternativen, um dieses Problem zu umgehen:

  • Verwenden Sie statt eines dynamischen Frameworks eine statische Bibliothek. Dazu können Sie # use_frameworks kommentieren! Zeile in Ihrer Pod-Datei.

  • Wenn Sie ein Framework verwenden müssen, können Sie die folgenden Schritte ausführen:

    1. Fügen Sie Ihr Framework als eingebettete Binärdatei in Xcode-Ziel hinzu.

    2. Fügen Sie in den Erstellungsphasen Ihres Ziels ein Ausführungsskript hinzu:

Beispielskript:

# Stripping framework only for archive
if [ "$ACTION" = "install" ]; then

    FRAMEWORK_NAME="Framework name"
    SCRIPT_FILE_NAME="strip-framework.sh"

    # Set working directory to product’s embedded frameworks
    cd  "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/${FRAMEWORK_NAME}.framework"

    # Get architectures for current file
    ARCHS="$(lipo -info "${FRAMEWORK_NAME}" | rev | cut -d ':' -f1 | rev)"
    for Arch in $ARCHS; do
        if ! [[ "${VALID_ARCHS}" == *"$Arch"* ]]; then
        # Strip non-valid architectures in-place
        lipo -remove "$Arch" -output "$FRAMEWORK_NAME" "$FRAMEWORK_NAME" || exit 1
        fi
    done

    echo "Framework was successfully stripped with unsupported architectures"

fi

# Removing script from framework folder
if [ -f ${SCRIPT_FILE_NAME} ]; then
    rm -rf "${SCRIPT_FILE_NAME}"
fi

Hinweis: Bitte ersetzen Sie Ihren Framework-Namen in diesem Skript! Sie müssen diese Skriptdatei mit dem Namen "strip-framework.sh" in die oberste Ebene des Framework-Verzeichnisses einfügen.

Frameworks von Drittanbietern, die niemals von Providern und ihrer Verbraucherpflicht unterzeichnet wurden. Wenn Sie also archivieren, werden Ihre Frameworks zusammen mit Ihrem App-Paket signiert. Danach betrachtet Application Loader Ihre Bundle-ID als Framework. Es ist schon seltsam.

Nach zwei Tagen konnte ich meine App endlich veröffentlichen.

Selbst wenn Sie dies auf knifflige Weise einreichen könnten, wird es niemals auf den Geräten installiert.

Schließlich habe ich eine perfekte Lösung gefunden und den Grund herausgefunden. Dies geschieht , Weil Ihre Frameworks von Drittanbietern Probleme aufweisen. In meinem Fall hat das Quickblox-Framework zum Beispiel Bitcode noch nie unterstützt. Also musste ich den Bitcode in den Build-Einstellungen für das Hauptziel und die Frameworks total deaktivieren. Dies wird Ihr Problem mit Sicherheit beheben.

Bitte überprüfen Sie diesen Screenshot:  Disable Bitcode Ich hoffe das hilft euch Jungs. Prost!

1
softninja

Wenn Ihr Apptitle den üblichen Schrägstrich "/" hat, konnte es von xcode nicht signiert werden, und meint, dass ich das erste Framework org.cocoapods hochlade.

Was ich getan habe - änderte den Schrägstrich in ein ähnliches Symbol ∕

(erster Schrägstrich, nächster - anderes Unicode-Symbol: ∕/)

0
Eugene Pinchuk

In meinem Fall musste ich die Provisioning-Profileinstellung aus dem Pods-Unterprojekt entfernen. enter image description here

0