Existem literalmente centenas de threads em dezenas de fóruns da Internet diferentes sobre dispositivos iOS que ficam bloqueados em "Aguardando a aplicação de alterações" e / ou "Aguardando a cópia de itens" durante a sincronização. Eu tenho esse problema de forma intermitente há dois anos, no iOS 6, 7 e agora 8, e, francamente, depois de tentar todas as correções que li, desisti de tentar resolvê-lo. Não é disso que se trata esta questão. O que eu quero saber é:
O que deveria acontecer durante os estágios da sincronização?
Essas duas mensagens significam a mesma coisa ou algo diferente? O que o iTunes está tentando fazer? Ele está lendo um banco de dados interno no dispositivo e comparando-o com a biblioteca do iTunes no computador? Está gravando em uma biblioteca de dispositivos? O que está escrevendo? Em que arquivo ele está trabalhando? Existe alguma maneira de assistir a atividade que está em andamento, seja em tempo real ou após o fato?
fonte
11/15/14 11:30:11.314 AM iTunes[48673]: Failed to create replacement string 11/15/14 11:32:43.222 AM iTunes[48673]: AMDeviceSecureTransferPath (thread 0x115c2b000): disableDelta: FALSE 11/15/14 11:32:43.222 AM iTunes[48673]: AMDeviceSecureTransferPath (thread 0x115c2b000): Trying SZConduit for transfer 11/15/14 11:32:43.507 AM iTunes[48673]: nuke_path (thread 0x115c2b000): AFCRemovePath of 'PublicStaging/DoubleDown 3.5.1.ipa' returned 8
11/15/14 11:40:50.527 AM iTunes[48673]: Entered:_AMMuxedDeviceDisconnected, mux-device:1815 11/15/14 11:40:50.527 AM iTunes[48673]: Entered:__thr_AMMuxedDeviceDisconnected, mux-device:1815 11/15/14 11:40:50.527 AM iTunes[48673]: tid:144f - Mux ID not found in mapping dictionary 11/15/14 11:40:50.527 AM iTunes[48673]: tid:144f - Can't handle disconnect with invalid ecid
Respostas:
Embora não haja documentação oficial da Apple, você ainda pode obter algumas informações assistindo o iTunes e o iOS fazendo suas coisas. Isso pode ser feito monitorando os arquivos de log de ambos; no iPhone, isso pode ser feito através de uma conexão USB. Aqui está um pouco do que eu já vi o iPhone fazendo nos estágios de sincronização "waiting for xy":
Depois de copiar novas mídias para o iPhone, a mídia precisa ser indexada, por exemplo, existem metadados a serem processados, miniaturas precisam ser criadas etc. Até que isso seja feito, a mídia não pode ser exibida corretamente nos aplicativos correspondentes do iPhone, portanto, o iTunes aguarda o serviço do iPhone Media Indexer para concluir seu trabalho.
Ao copiar novos aplicativos para um iPhone, os
.ipa
arquivos compactados precisam descompactar e instalar, por exemplo, registrar-se na tela inicial do iPhone, nas listas de aplicativos, nos bancos de dados de extensão de arquivo etc., isso é feito durante os estágios da sincronização.A pesquisa de destaque pode precisar de tempo para indexar novos arquivos, o iTunes também espera por isso (nem sempre, mas às vezes!)
Quando o iTunes transfere arquivos para um iPhone, ele sempre verifica o conteúdo do arquivo de várias maneiras, sendo a integridade do arquivo ou os hashes comparados. Esses processos precisam de bastante tempo, dependendo do tamanho dos dados transferidos, e o iTunes aguarda uma verificação bem-sucedida para concluir a sincronização.
Quando há falhas de cópia detectadas por qualquer um dos métodos de verificação, o iTunes copia os arquivos novamente. Geralmente, esses processos não são exibidos pelo iTunes; isso é feito durante o processamento "Aguardando a cópia de itens".
O iTunes também aguardará o término dos processos de cópia com êxito; existem fluxos e soquetes para fechar quando os dados forem transferidos entre computadores. Embora isso deva acontecer instantaneamente, às vezes há falhas e o iPhone precisa de algum tempo.
Em geral, você pode dizer que o iTunes utiliza esses estágios para verificação e correção de erros, além de realizar trabalhos "complementares". Eles são extremamente úteis, especialmente quando se usa a sincronização WiFi, que é muito mais suscetível a erros do que o USB.
Editar : para visualizar os arquivos de log de um iPhone / iPad, não é necessário fazer o jailbreak. A melhor ferramenta provavelmente é
libimobiledevice
um pacote de software livre de código aberto licenciado sob LGPL 2.1 . É capaz de lidar com um dispositivo iOS sem a necessidade do iTunes, mesmo em máquinas Linux. Embora tenha sido projetado para máquinas Linux, ele também pode ser executado no Mac, por exemplo, compilando o código-fonte ou, ainda mais fácil, instalando através do homebrew . Embora eu esteja sempre usando-o em máquinas Linux, isso deve funcionar da mesma maneira no Mac OS X.Você provavelmente precisa emparelhar o seu iPhone primeiro, use o
idevicepair
binário para isso. Ele deve encontrar o iPhone conectado por USB por conta própria; caso contrário, tente passar o UUID do seu dispositivo. Após o emparelhamento ter sido bem-sucedido (ele exibirá uma mensagem de sucesso na interface do terminal), use oidevicesyslog
aplicativo -para visualizar os arquivos de log do seu iPhone. Ele se conectarásyslog
automaticamente ao soquete do seu dispositivo; caso contrário, você poderá passar o UUID novamente. Todas as mensagens de log serão postadasstdout
no seu computador, por exemplo, na saída do terminal.Também há software proprietário que permite ler os logs no seu dispositivo iOS, mas
libimobiledevice
como uma ferramenta de linha de comando e de código aberto deve ser preferida.fonte
Penso que no processo "Aguardando a cópia do item", o iTunes verifica os itens que devem ser copiados, conta os itens e calcula o tempo estimado da cópia. Até arquivos a serem copiados, o tempo de espera aumenta.
fonte