Na dziesiątkach różnych forów internetowych znajdują się dosłownie setki wątków na temat urządzeń z systemem iOS, które utknęły w polu „Oczekiwanie na zastosowanie zmian” i / lub „Oczekiwanie na skopiowanie elementów” podczas synchronizacji. Problem miałem sporadycznie przez dwa lata, na iOS 6, 7, a teraz 8, i szczerze mówiąc po wypróbowaniu wszystkich poprawek, o których czytałem, zrezygnowałem z próby rozwiązania tego problemu. Nie o to chodzi w tym pytaniu. Chcę wiedzieć:
Co powinno się wydarzyć podczas tych etapów synchronizacji?
Czy te dwie wiadomości oznaczają to samo, czy coś innego? Co iTunes próbuje zrobić? Czy czyta z wewnętrznej bazy danych na urządzeniu i czy porównuje ją z biblioteką iTunes na komputerze? Czy to pisze do biblioteki urządzeń? Co pisze Na jakim pliku działa? Czy jest jakiś sposób na obserwowanie trwającej aktywności w czasie rzeczywistym lub po fakcie?
źródło
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
Odpowiedzi:
Chociaż Apple nie ma oficjalnej dokumentacji, nadal możesz uzyskać pewne informacje, oglądając iTunes i iOS wykonujące swoje czynności. Można to zrobić poprzez monitorowanie plików dziennika obu, na iPhonie można to zrobić przez połączenie USB. Oto kilka rzeczy, które widziałem, jak iPhone robi na etapach synchronizacji „czekając na xy”:
Po skopiowaniu nowych multimediów na iPhone'a, media muszą zostać zindeksowane, np. Trzeba przetworzyć metadane, utworzyć miniatury itp. Do tego czasu media nie będą poprawnie wyświetlane w odpowiednich aplikacjach na iPhone'a, więc iTunes czeka, aż usługa iPhone Media Indexer zakończy swoją pracę.
Podczas kopiowania nowych aplikacji na iPhone'a spakowane
.ipa
pliki muszą rozpakować się i zainstalować, np. Zarejestrować się na ekranie głównym iPhone'a, listach aplikacji, bazach rozszerzeń plików itp., Odbywa się to na tym etapie synchronizacji.Wyszukiwanie w centrum uwagi może wymagać czasu na indeksowanie nowych plików, iTunes też na to czeka (nie zawsze, ale czasami!)
Gdy iTunes przesyła pliki do iPhone'a, zawsze weryfikuje zawartość pliku na kilka sposobów, porównując integralność archiwum lub skróty. Procesy te wymagają dużo czasu, w zależności od wielkości przesyłanych danych, a iTunes czeka na pomyślną weryfikację w celu ukończenia synchronizacji.
W przypadku wykrycia błędów kopiowania za pomocą dowolnej metody weryfikacji, iTunes ponownie skopiuje pliki. Często procesy te nie są wyświetlane przez iTunes, odbywa się to podczas przetwarzania „Oczekiwania na elementy do skopiowania”.
iTunes będzie również czekał na pomyślne zakończenie procesów kopiowania, istnieją strumienie i gniazda do zamknięcia, gdy dane są przesyłane między komputerami. Chociaż powinno to nastąpić natychmiast, czasem zdarzają się awarie i iPhone potrzebuje trochę czasu.
Ogólnie można powiedzieć, że iTunes wykorzystuje te etapy do weryfikacji i korekty błędów, a także do wykonywania „kompletnych” prac. Stają się niezwykle przydatne, zwłaszcza podczas korzystania z synchronizacji Wi-Fi, która jest znacznie bardziej podatna na błędy niż USB.
Edycja : Aby wyświetlić pliki dziennika na iPhonie / iPadzie, jailbreak nie jest wymagany. Prawdopodobnie najlepszym narzędziem jest
libimobiledevice
pakiet darmowego oprogramowania open source licencjonowanego na licencji LGPL 2.1 . Jest w stanie obsłużyć urządzenie iOS bez potrzeby iTunes, więc nawet na komputerach z systemem Linux. Mimo że jest przeznaczony dla komputerów z systemem Linux, może być również uruchamiany na komputerach Mac, np. Poprzez kompilację kodu źródłowego lub, co łatwiejsze, instalując go przez homebrew . Chociaż zawsze używam go na komputerach z systemem Linux, powinno to działać tak samo w systemie Mac OS X.Prawdopodobnie najpierw musisz sparować iPhone'a, w
idevicepair
tym celu użyj opcji -binary. Powinien sam znaleźć iPhone'a podłączonego przez USB, jeśli nie, możesz spróbować przekazać UUID swojego urządzenia. Po pomyślnym sparowaniu (wyświetli komunikat o powodzeniu do interfejsu terminala), użyjidevicesyslog
-application, aby wyświetlić pliki dziennika na iPhonie. Połączy się automatycznie zsyslog
gniazdem urządzenia, jeśli nie, możesz ponownie przekazać UUID. Następnie wszystkie komunikaty dziennika zostaną wysłanestdout
na komputer, np. Na wyjście terminala.Istnieje również autorskie oprogramowanie, które pozwala czytać dzienniki na urządzeniu z systemem iOS, ale
libimobiledevice
jako narzędzie wiersza polecenia i narzędzia open source powinno być preferowane.źródło
Myślę, że w procesie „Oczekiwanie na skopiowanie elementu” iTunes skanuje elementy, które mają zostać skopiowane, zlicza elementy i oblicza szacowany czas kopiowania. Aż do skopiowania plików, czas oczekiwania wydłuża się.
źródło