2016-04-09 12 views
23

Dopo 4 mesi di sviluppo della prima app iOS, è necessario inviarlo allo App Store. Ho creato l'app in iTunes Connect, compilato in tutti i dettagli, impostato il Bundle ID corretto in entrambi Connect e Xcode. Tuttavia, ho faticato negli ultimi 3 giorni cercando di risolvere questo strano problema. Sembra che xcode stia cercando di caricare i framework Cocoapods, non la mia app principale.Xcode che tenta di associare l'ID bundle framework quando si carica l'app iOS su App Store

Dopo l'archiviazione, sono andato a Window > Organizer > Validate.... Vedo la seguente schermata:

enter image description here

L'errore:

enter image description here

(per Googler:. Non trovati record delle applicazioni adatte Verifica identificatore pacchetto 'org.cocoapods.Alamofire' è corretto) .

Il messaggio di errore indica che sta tentando di abbinare un Bundle ID in base al nome di un framework, non al mio bundle (ad esempio com.organization.AppName). Non riesco a trovare le risposte da nessuna parte. Ho provato a fare quanto segue nel mio Podfile (che ha use_frameworks!), Così come le mie diverse combinazioni di conf, ma non ha avuto successo.

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

Domande:

  • sono i passi che sto facendo è corretto?
  • Perché lo tenta di far corrispondere uno framework's bundle id anziché solo la mia applicazione principale?
  • Come posso superare questo problema per inviare finalmente la mia app?

EDIT 1: sono stato in grado di superare questo problema, ma quello causato un altro problema più tardi, quindi ho ancora non hanno una soluzione. Fondamentalmente, Alamofire Pod (di Cocoapods) ha un pacchetto com.xxx.Alamofire. L'ho cambiato in com.xxx.myAppName. Con questo, sono stato in grado di inviare a App Store, ma non riesco a installare l'applicazione nel mio iPhone da PROVA Scelta dei colori a causa del seguente errore:

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} 
+2

Eventuali aggiornamenti su questo? C'è una discussione sul github di CocoaPods. [https://github.com/CocoaPods/CocoaPods/issues/4331](https://github.com/CocoaPods/CocoaPods/issues/4331) Tuttavia, a nessuno sembra interessare il team di CocoaPods. –

+0

Bumping questo, avendo lo stesso problema – JoshSGman

risposta

4

Dopo un bel po 'di tempo alle prese con questo, sono stato in grado di farlo funzionare. Fondamentalmente, solo Alamofire presentava questo problema. Ecco quello che ho fatto:

  1. Nel Navigator, fare clic nella Pods.
  2. Sotto Targetti verranno visualizzati tutti i framework utilizzati dall'app.
  3. Fare clic su Alamofire (o il framework che causa il problema).
  4. Modificare l'identificativo . Se l'ID pacchetto dell'applicazione è com.company.appName, scrivi com.company.appName.Alamofire in esso.

Ho provato com.company.appName per il framework, com.company.Alamofire, niente ha funzionato.

+0

funziona? perché sto affrontando lo stesso problema mentre costruisco la build di distribuzione che deve essere installata da OTA – rhlnair

+0

@rhlnair didnt'work per te? Ha funzionato per me. Cura di elaborare ciò che non ha funzionato per te? – Alex

+0

Non ha funzionato per me!Devo aggiungere com.comany.appName.Alamofire nella lista Id dei bundle del mio account sviluppatore Apple –

2

Stavo ricevendo questo errore esatto quando ho provato a inviare l'app a iTunes Connect: "Non sono stati trovati record di applicazioni adeguati. Verifica che l'identificatore del pacchetto" org.cocoapods.Alamofire "sia corretto".

ho finalmente è stato risolto modificando il codice Bundle sistema operativo Tipo a APPL.

+0

Posso confermare che questo ha funzionato davvero per me. Ho avuto il prefisso del tipo di bundle come dizionario. L'ho modificato in una stringa e quindi impostato su APPL. Allo stesso tempo, ho ricreato i miei profili di provisioning e mi sono assicurato di pulire la build del progetto. – JoshSGman

+0

@neilge: CFBundlePackageType e Bundle Il codice del tipo di sistema operativo sono entrambi uguali? –

1

Recentemente, ho avuto lo stesso problema mentre pubblico l'app utilizzando cocoapods. Era un progetto Objective-C e ha integrato i pod come framework dinamici.

Questo è già reported bug.

Così mi consiglia di seguire 2 alternative per risolvere questo problema:

  • Usa libreria statica al posto di un quadro dinamico. Per quello, puoi commentare # use_frameworks! linea nel tuo file pod.

  • Se avete bisogno di usare quadro, si potrebbe provare i passaggi qui sotto:

    1. Aggiungi il tuo quadro come binario incorporato nel bersaglio Xcode.

    2. In fasi di creazione del vostro target, aggiungere uno script Run:

Esempio Script:

# 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 

Note: please replace your framework name in this script!, you ensure to put this script file named as "strip-framework.sh" into the top level of framework directory.

quadri 3rd party mai firmati da parte dei fornitori e il suo dovere dei consumatori. Così quando archivi, firma i tuoi quadri insieme al tuo pacchetto di app. Ma dopo aver fatto ciò, Application loader considera il tuo identificatore di bundle come uno di framework. La sua strana cosa ancora.

Dopo 2 giorni di lavoro, potevo finalmente pubblicare la mia app.

Anche se è possibile inviare questo in modo complicato, non sarà mai installato sui dispositivi.

Finally, I got a perfect solution and found out the reason. This is happening because your 3rd party frameworks have some issues in it. For example, in my case Quickblox framework has never supported bitcode yet. So I had to disable bitcode in build settings for the main target and frameworks totally. This will fix your issue for sure.

Si prega di rivedere questo screenshot: Disable Bitcode Spero che questo vi aiuterà ragazzi. Cheers!

+0

Come possiamo determinare che il framework supporti il ​​bitcode o no? Il mio progetto contiene 13 file pod –

+0

Puoi verificarlo nelle impostazioni di generazione Xcode, cerca solo codice bit nel campo di ricerca :) – softninja

2

Funziona perfettamente per me. Ho appena trovato Info.plist destra-clic su Apri come "codice sorgente" e ho cambiato <key>CFBundlePackageType</key> a stringa APPL

<key>CFBundlePackageType</key> 
<string>APPL</string> 
+0

Lavori per me ... –

+0

Non ha funzionato per me. –

2

appena vissuto questo problema con il seguente errore visualizzato quando si tenta di caricare l'App Store.

iTunes Store operation failed.

No suitable application records were found. Verify your bundle identifier 'org.cocoapods.Alamofire' is correct

Abbiamo incontrato questo quando si tenta di caricare (durante l'utilizzo Cocoapods) e non riuscendo a trovare una soluzione, ha preso l'azione drastica di rimozione Cocoapods dal nostro progetto interamente e invece aggiunti manualmente ogni pod come un quadro.

E ...... il caricamento su App Store è ancora fallito con praticamente lo stesso errore!

iTunes Store operation failed.

No suitable application records were found. Verify your bundle identifier 'org.alamofire.Alamofire' is correct

Quindi sembra che si tratti di un errore relativo all'utilizzo del framework all'interno di Xcode.

Scoprendo che questo non è stato necessariamente causato da Cocoapods, abbiamo deciso di continuare a utilizzare Cocoapods e abbiamo escogitato i seguenti passaggi per risolvere questo problema.

La correzione:

Il nostro progetto contiene 2 bersagli (ignorando i bersagli di unit test, ecc). 1 per l'applicazione (chiamiamola MyApp) e un'altra che contiene il livello di rete e altre funzionalità non specifiche per l'app (chiamiamola MyAppKit).

  1. Aggiungi CFBundlePackageType (noto anche come Bundle OS Type code) per MiaApp di Info.plist e impostarlo APPL.
  2. Assicurarsi che sia il progetto MyApp sia il target MyApp abbiano l'impostazione di build Always Embed Swift Standard Libraires a Yes.
  3. Assicurarsi che il target MyAppKit abbia l'impostazione di build Always Embed Swift Standard Libraires a No.

Ancora esaminando esattamente cosa sta succedendo qui, ma pensato che questo possa essere utile a chiunque stia attualmente sperimentando questo.

+0

Questo non ha funzionato per me! Qualsiasi altra correzione –

0

Se l'AppTitle ha solita barra "/", quindi Xcode non è riuscito a firmare, e pensa che io sto caricando primi org.cocoapods quadro ***

Quello che ho fatto -. Cambiato tagliare a simbolo simile/

(prima barra, prossima - altro simbolo unicode: //)

0

Nel mio caso ho dovuto togliere provisioning impostazione del profilo da Pods sottoprogetto enter image description here

+0

Nel mio caso l'elenco dei profili di fornitura è già vuoto per i pod. –