Tidak dapat membuka proyek… tidak dapat dibuka karena file proyek tidak dapat diuraikan

94

Saya telah bekerja cukup lama untuk membuat aplikasi iPhone. Hari ini ketika baterai saya hampir habis, saya sedang bekerja dan terus-menerus menyimpan file sumber saya kemudian listrik padam ...

Sekarang ketika saya menghubungkan kembali komputer saya dan mendapatkan daya yang baik, saya mencoba membuka file proyek saya dan saya mendapatkan kesalahan:

Tidak Dapat Membuka Proyek

Proyek ... tidak dapat dibuka karena file proyek tidak dapat diurai.

Adakah cara agar orang tahu bahwa saya dapat pulih dari ini? Saya mencoba menggunakan file proyek yang lebih lama dan memasukkannya kembali dan kemudian mengkompilasi. Ini memberi saya kesalahan yang funky yang mungkin karena tidak menemukan semua file yang diinginkannya ...

Saya benar-benar tidak ingin membangun kembali proyek saya dari awal jika memungkinkan.


EDIT

Oke, saya melakukan perbedaan antara ini dan file proyek yang sedikit lebih tua yang berfungsi dan melihat bahwa ada beberapa korupsi di file tersebut. Setelah menggabungkannya (bagian yang baik dan terbaru) sekarang berfungsi.

Poin bagus tentang SVN. Saya punya satu, tetapi ada beberapa hal lucu yang mencoba menyinkronkan Xcode dengannya. Saya pasti akan menghabiskan lebih banyak waktu dengannya sekarang ... ;-)

masukkan deskripsi gambar di sini

Komunitas
sumber

Jawaban:

230

Saya menemukan masalah ini dan senior saya memberi tahu saya tentang solusinya yaitu:

Klik kanan pada projectname.xcodeprojfile Anda di sini projectnameakan menjadi nama proyek Anda. Sekarang setelah di klik kanan pilih Show Package Contents . Setelah itu buka projectname.pbxprojfile Anda di editor teks. Sekarang cari baris yang berisi <<<<<<< .mine, =======dan >>>>>>> .r. Misalnya dalam kasus saya terlihat seperti ini

<<<<<<< .mine
    9ADAAC6A15DCEF6A0019ACA8 .... in Resources */,
=======
    52FD7F3D15DCEAEF009E9322 ... in Resources */,
>>>>>>> .r269

Sekarang hapus itu <<<<<<< .mine, =======dan >>>>>>> .rgaris sehingga akan terlihat seperti ini

    9ADAAC6A15DCEF6A0019ACA8 /* BuyPriceBtn.png in Resources */,

    52FD7F3D15DCEAEF009E9322 /* discussionForm.zip in Resources */,

Sekarang simpan dan buka proyek Xcode Anda dan bangun. Semuanya akan baik-baik saja.

Usuf
sumber
11
TERIMA KASIH. Ini bekerja. Dalam kasus saya, itu bukan ".mine" atau ".r" tetapi mengatakan sesuatu yang lain ... Ctrl-F untuk "===" untuk menemukan tempat itu.
ck_
ini harus ditandai sebagai jawabannya. Barang yang sangat bagus, terima kasih
owen gerig
12
Sekadar untuk mengatakan MENGAPA ini terjadi: Kontrol versi Anda mencoba menggabungkan dua versi file proyek yang bentrok. Anda harus memberi tahu kontrol versi Anda secara manual tentang penggabungan yang tepat. Fakta bahwa XCode tidak menangani ini dengan anggun adalah gangguan besar bagi saya setiap hari.
Thane Brimhall
Terima kasih. Masalah saya datang dalam bentuk <<<<<<<<< HEAD ======= >>>>>>>. Itu ada di dua tempat menjelang akhir file .pbxproj. Setelah saya menghapus item ini, saya dapat menjalankan file .xcodeproj lagi. Cari item berikut agar terlihat tidak pada tempatnya dari file lainnya.
AgnosticDev
1
Dalam kasus saya <<<<<<< HEAD, ======, >>>>>>> beberapa alfanumerik. Hapus ketiga baris ini lalu simpan dan buka. Bekerja Seperti Pesona !!! Terima kasih banyak.
Gowrie Sammandhamoorthy
47

Jawaban Muhammad sangat membantu (dan membantu memperbaiki saya). Namun, hanya menghapus >>>>>>> ======= <<<<<<< tidak cukup untuk memperbaiki masalah parse di project.pbxproj (untuk saya) saat menyimpan perubahan dari kedua cabang setelah penggabungan.

Saya mengalami konflik penggabungan di bagian PBXGroup (yang awalnya ditandai dengan komentar blok seperti ini: / * Mulai bagian PBXGroup * /) dari file project.pbxproj. Namun, masalah yang saya temui dapat terjadi di tempat lain di file project.pbxproj juga.

Di bawah ini adalah penyederhanaan konflik penggabungan yang saya temui:

    <<<<<<< HEAD
          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
    =======
          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
    >>>>>>> branch name
            sourceTree = "<group>";
          };

Ketika saya menghapus penanda konflik gabungan, inilah yang tersisa:

          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
            sourceTree = "<group>";
          };

Biasanya, menghapus penanda konflik gabungan akan memperbaiki masalah parse di file project.pbxproj dan memulihkan integritas ruang kerja. Kali ini tidak.

Di bawah ini adalah apa yang saya lakukan untuk mengatasi masalah tersebut:

          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
            sourceTree = "<group>";
          };

          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
            sourceTree = "<group>";
          };

Saya sebenarnya harus menambahkan 2 baris di akhir PBXGroup pertama.

Anda dapat melihat bahwa jika saya memilih untuk membuang perubahan dari Head atau cabang penggabungan, tidak akan ada masalah parse! Namun, dalam kasus saya, saya ingin mempertahankan kedua grup yang saya tambahkan dari setiap cabang dan hanya menghapus penanda gabungan saja tidak cukup; Saya harus menambahkan baris tambahan ke file project.pbxproj untuk mempertahankan format yang benar.

Jadi, jika Anda mengalami masalah penguraian setelah Anda mengira telah menyelesaikan semua konflik penggabungan, Anda mungkin ingin melihat lebih dekat pada .pbxproj dan memastikan tidak ada masalah pemformatan!

SnoopyProtocol
sumber
Anda mungkin tidak sengaja menghapus titik dua dan / atau kurung kurawal saat menyelesaikan konflik penggabungan. Anda harus hati-hati mengambil bagian yang tepat (atau keduanya) dari konflik penggabungan dan menghapus penanda. Itu dia.
Stas
menambahkan sourceTree = "<group>"; }; menyelesaikannya untukku! Sangat membantu! Terima kasih!
Nitin Alabur
Hanya ingin menambahkan sesuatu untuk ini. Saya memiliki masalah yang sama tetapi bekerja dengan CocoaPods dan ruang kerja. Saya harus membongkar ruang kerja dan membuatnya kembali agar Xcode dapat mengambil perbaikan.
Nico
@Nico: Apakah Anda keberatan untuk berbagi tentang cara nuke itu? Saya menghadapi masalah serupa di sini dan mengalami kesulitan
Isaac
Saya menemukan bahwa setelah memperbaiki file .pbxproj, saya harus menutup dan membuka kembali proyek agar dapat berfungsi, tetapi berhasil. Terima kasih SnoopyProtocol!
KeithTheBiped
28

Saya mendapat kesalahan yang sama persis karena Cordova akan mengizinkan Anda membuat proyek dengan spasi di dalamnya, dan Xcode tidak tahu cara menanganinya.

bwags
sumber
Terima kasih banyak ini adalah jawabannya, saya punya ruang.
Maks.
Sama dengan Cordova Phonegap 3.4
Miles M.
Persis seperti itulah masalah yang saya alami. Terima kasih!
fray88
@ fray88 Saya mengambil ruang di nama folder saya untuk proyek Xcode dan folder cordova, tetapi sekarang saya mendapatkan Kesalahan: ENOENT: tidak ada file atau direktori yang salah. Bagaimana cara mengambil ruang dan membuat semuanya berfungsi? Terima kasih.
SaH
25

Saya memiliki masalah serupa.

Tangkapan layar 1

Berikut adalah langkah-langkah untuk mengatasinya:

  1. Arahkan ke folder tempat Anda projectName.xcodeproj.

    Tangkapan layar 2

  2. Klik kanan dan pilih ' Show Package Contents'. Anda akan dapat melihat daftar file dengan .pbxprojekstensi.

    Tangkapan layar 3

  3. Pilih project.pbxproj. Klik kanan dan buka file ini menggunakan ' Text Edit'.

    Tangkapan layar 4

  4. Anda akan bisa melihat <<<<<< .mine, ============dan >>>>>>>>>> .r123. Ini biasanya konflik yang muncul saat Anda mengambil pembaruan dari SVN. Hapus ini dan simpan file.

    Tangkapan layar 5

    Tangkapan layar 6

  5. Sekarang, Anda dapat membuka proyek tanpa pesan kesalahan apa pun .

Jayprakash Dubey
sumber
23

Analisis visual dari file proyek Xcode tidak membantu saya untuk menemukan kesalahan setelah penggabungan. Setelah melihat ke syslog, temukan baris seperti itu ketika Xcode mencoba mengurai file:

2/7/14 12:39:12.792 PM Xcode[9949]: CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary on line 4426. Parsing will be abandoned. Break on _CFPropertyListMissingSemicolon to debug.

Setelah memperbaiki proyek itu dapat dibuka dengan baik.

Oleksiy Ivanov
sumber
2
Terima kasih, Anda menyelamatkan hari saya :)
Centurion
Terima kasih .. ini lebih masuk akal daripada inspeksi visual
Ciprian
2
Ini sangat membantu. Saya hanya "tail -f /var/log/system.log" dan mencoba membuka proyek. Di system.log, itu menunjukkan kesalahan (cari "Xcode") yang menunjukkan nomor baris tempat pengecualian parse terjadi. Saya kemudian membuka file di vi dan melihat karakter kontrol di file (^ H) dan baru saja menghapus karakter tunggal dan voila! itu bisa dibuka.
DustinB
Jawaban terbaik, daripada mencoba melakukan hit and try. Baca Log Konsol.
Urmil Setia
6
Coba saja membangunnya dari Terminal seperti xcodebuild -project Project.xcodeproj build. Anda akan melihat kesalahan tepat di Terminal.
Slavko Coolesoff
6

Analisis sintaks file proyek Anda. Periksa di dalam proyek Anda di terminal:

plutil -lint project.pbxproj

Ini akan menunjukkan kesalahan dari parser.

Kemungkinan masalah : Beberapa proyek menetapkan strategi penggabungan git unionuntuk file proyek. Ini berfungsi untuk sebagian besar waktu, tetapi diam-diam akan mematikan file proyek Anda jika gagal. Strategi ini ditentukan dalam .gitattributesfile di repositori Anda.

beseder
sumber
3

Saya menghadapi masalah yang sama baru-baru ini ketika mencoba menggabungkan cabang saya dengan cabang jarak jauh. Namun, tidak ada solusi di atas yang tampaknya sesuai dengan masalah saya.

Tidak ada konflik gabungan antara file project.pbxproj di cabang saya atau cabang jarak jauh. Namun, file projectName.xcodeproj saya akan menolak untuk dibuka karena alasan yang sama seperti yang ditunjukkan dalam pertanyaan yang diajukan.

Solusi saya adalah melihat-lihat project.pbxproj menggunakan editor teks dan menemukan apakah ada penyimpangan dalam sintaks file (misalnya, braket ekstra keriting). Saya mempercepat proses ini dengan berfokus pada baris yang disisipkan atau dihapus di file lama dibandingkan dengan file gabungan. Pada pemeriksaan lebih dekat, saya menemukan penyebab masalah saya adalah pengulangan baris berikut:

xxxxxxxxxxxxx /* [CP] Check Pods Manifest.lock */ = {

di file gabungan saya. Hal ini menyebabkan kurung kurawal tidak tertutup dan akibatnya sintaks pbxproj tidak valid. Menghapus baris di atas memperbaiki masalah saya.

Abhi
sumber
2

Saya baru saja mengalami masalah yang sama. Saya menghapus string yang dihasilkan oleh git seperti biasa tetapi Xcode masih menolak untuk membuka file .xcodeproj. Tetapi semuanya benar, tidak ada tanda kurung yang hilang, dll. Akhirnya saya mencoba untuk keluar dari Xcode dan membuka proyek ketika Xcode ditutup .. kemudian berhasil. Saya harap ini membantu seseorang.

EDIT:

untuk menyelesaikan konflik dalam file .xcodeproj Anda, Anda dapat menggunakan skrip praktis ini:

  1. Buat file .sh kosong di direktori proyek Anda (misalnya, resolus_conflicts.sh)
  2. Berikut skripnya:

    projectfile = find -d . -name 'project.pbxproj' projectdir =echo *.xcodeproj projectfile = "$ {projectdir} /project.pbxproj" tempfile = "$ {projectdir} /project.pbxproj.out" savefile = "$ {projectdir} /project.pbxproj.mergesave"

    cat $ projectfile | grep -v "<<<<<<< HEAD" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ projectfile

  3. Jalankan dari terminal menggunakan perintah sh: sh resol_conflicts.sh

Vojta
sumber
di mana string dihasilkan oleh git?
Harshil Kotecha
String ini adalah penanda konflik: "<<<<<<<", "=======" dan ">>>>>>>". Untuk info lebih lanjut tentang menyelesaikan konflik git, lihat di sini: help.github.com/articles/…
Vojta
@Vojta, bisakah Anda melemparkan skrip itu ke dalam intinya? Saya mendapatkan kesalahan ini:resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect
Daniel
1

Kembalikan project.pbxproj

svn kembali --filename--

mondousage.dll
sumber
1

Langkah-langkah yang harus diikuti: - 1. Navigasikan ke folder tempat projectName.xcodeproj Anda 2. Klik kanan dan pilih 'Show Package Contents'. Anda akan dapat melihat daftar file dengan ekstensi .pbxproj. 3. Pilih project.pbxproj. Klik kanan dan buka file ini menggunakan 'Text Edit'. 4. Anda akan dapat melihat <<<<<<, ============ dan >>>>>>>>>>. Biasanya ini adalah konflik yang muncul saat Anda mengambil pembaruan dari Sourcetree / SVN / GITLAB. Hapus ini dan simpan file. 5. Sekarang, Anda dapat membuka proyek tanpa pesan kesalahan apa pun.

Akash Singh
sumber
0

Sepertinya Anda harus membuat proyek baru di Xcode, masuk ke direktori lama, dan seret semua file sumber, ujung pena, dan sumber daya Anda ke bilah sisi file Xcode di proyek baru. Ini tidak akan memakan waktu lebih dari beberapa menit, kecuali Anda benar-benar melakukan banyak pekerjaan dengan pengaturan atau target build khusus. Baik itu, atau kembali ke check-in terakhir di kontrol sumber Anda dan secara manual tambahkan file kode apa pun yang berubah antara sekarang dan nanti.

Marc Charbonneau
sumber
1
Cukup periksa file project.pbproject dan lakukan perbedaan terhadap versi file project yang berfungsi.
Atma
0

Dan setelah Anda mendapatkan sesuatu bekerja lagi Anda harus melihat ke dalam menggunakan sesuatu seperti subversi atau lincah untuk cadangan dan kontrol revisi. Ingatlah bahwa dia elektron tidak selalu pergi ke tempat yang seharusnya, cadangan awal dan sering!

Brian C. Lane
sumber
VCS favorit saya akhir-akhir ini adalah git.
Lily Ballard
0

ubah nama folder proyek Anda saat ini dan checkout modul proyek yang sama. kemudian tambahkan perubahan file saat ini.

suresh
sumber
0

Cobalah untuk menemukan HEAD dan _HEAD di antara baris dan hapus kata-kata ini di project.pbxproj. Cadangkan file ini sebelum melakukan ini ..

Avi Shim.
sumber
0

Goto PhoneGapTest >> platform Kemudian hapus folder ios setelah itu masuk ke terminal lalu ketik: sudo phonegap build ios setelah itu anda dapat menjalankan proyek

Peternakan
sumber
0

Dengan mengembalikan, Anda dapat membatalkan kode yang ditarik.

Jika Anda ingin membatalkan permintaan tarik itu, letakkan saja perintah ini di jalur proyek

-> git merge --abort

Subramani
sumber
0

Jika Anda tidak menemukan di Text === atau <<< atau >>>> seperti bagi saya, masalahnya sangat sederhana dan menyenangkan ... Saya mengubah nama App di Xcode, tetapi tidak mengubahnya di UnityProjectSettings sebelum membangun - itulah masalahnya ...

Anton Konoplianchenko
sumber
0

Jika Anda pernah bergabung dan masih mendapatkan masalah yang tidak tahu apa itu, maksud saya bukan tanda perbedaan yang jelas

<<<<<
....
======
>>>>>>

Kemudian Anda dapat menganalisis file proyek Anda dengan https://github.com/Karumi/Kin , menginstalnya dan menggunakannya

kin project.pbxproj

Ini telah membuat kesalahan luar biasa yang tidak memungkinkan proyek terbuka lebih mudah dipahami dan dipecahkan (salah satu hash, grup, dan sebagainya).


Dan omong-omong, ini juga bisa membantu, saya pikir saya belum menggunakannya mencoba untuk membedakan 2 versi file proyek Anda https://github.com/bloomberg/xcdiff jadi ini akan memberi Anda apa yang sebenarnya terjadi.

tyoc213
sumber
-2

subversi akan merusak file proyek saya setelah svn naik hampir setiap minggu. Saya mencoba mencari tahu mengapa ia melakukan ini sekarang dan menemukan masalah ini.


sumber
Dugaan saya adalah bahwa Anda memiliki proyek yang dibuka di Xcode pada saat yang sama Anda melakukan pembaruan atau melakukan ... "JIKA" Xcode kebetulan menyimpan otomatis pada saat yang sama Saya kira beberapa korupsi dapat terjadi
epatel
-3

Ini karena nama proyek tidak boleh memiliki spasi kosong di antara mereka

Mohsin Muzawar
sumber