Pertanyaan Codesign dari Dropbox API gagal di Xcode 4.6.3: “objek kode tidak ditandatangani sama sekali”


Saya memiliki aplikasi OS X yang didistribusikan melalui Mac App Store, dan baru-baru ini diperbarui ke Xcode 4.6.3.

Ketika saya menjalankan build reguler saya sekarang, saya menerima:

Command /usr/bin/codesign failed with exit code 1:

/Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app: code object is not signed at all
In subcomponent: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app/Contents/Frameworks/DropboxOSX.framework
Command /usr/bin/codesign failed with exit code 1

Saya tidak dapat melihat perubahan lain dalam proyek saya, jadi saya tidak tahu apakah ini masalah yang berkaitan dengan pembaruan 4.6.3, atau yang lainnya.

Saya telah mencoba me-restart Xcode, menjalankan build bersih, dan membersihkan folder build.


75
2018-06-23 18:32


asal


Jawaban:


Saya pikir saya mungkin telah menemukan yang ini. Saya telah menjalankan Xcode 4.6.3 di OS X Mavericks, di bawah kesan bahwa setiap alat khusus build dibundel dalam aplikasi Xcode.

Tapi, sepertinya codesign dalam /usr/bin. Apakah itu diletakkan di sana oleh salah satu installer Xcode atau dilengkapi dengan sistem vanilla, saya tidak yakin. Tetapi membaca melalui man halaman untuk codesign, Saya menemukan opsi bagus ini:

--deep  When signing a bundle, specifies that nested code content such as helpers, frameworks, and plug-ins, should be recursively signed
             in turn. Beware that all signing options you specify will apply, in turn, to such nested content.
             When verifying a bundle, specifies that any nested code content will be recursively verified as to its full content. By default,
             verification of nested content is limited to a shallow investigation that may not detect changes to the nested code.
             When displaying a signature, specifies that a list of directly nested code should be written to the display output. This lists only
             code directly nested within the subject; anything nested indirectly will require recursive application of the codesign command.

Dan kemudian saya menemukan posting ini (https://alpha.app.net/isaiah/post/6774960) dari dua minggu yang lalu (~ Juni 2013), yang menyebutkan (meskipun dengan tangan kedua):

@isaiah Saya bertanya pada seorang pria di lab tentang itu. Dia mengatakan codesign sekarang   membutuhkan kerangka kerja tertanam untuk ditandatangani secara terpisah sebelum kode   menandatangani bundel aplikasi secara keseluruhan.

Menjalankan kembali secara manual codesign perintah bahwa Xcode biasanya berjalan, sambil menambahkan --deep benderai sampai akhir, menandatangani aplikasi dengan benar.

Saya belum yakin apa tepatnya konsekuensi penandatanganan manual ini, atau apakah saya bisa men-tweak Xcode build untuk menambahkan --deep bendera secara otomatis, tetapi ini tampaknya menjadi masalah mendasar. (codesign tidak lagi secara otomatis menandatangani bundel aplikasi Anda secara mendalam.)


138
2017-07-01 00:37



Seperti yang disorot dalam jawaban lain, ada perubahan pada cara kerja penandatanganan kode. Jika Anda sudah menginstal salah satu dari Xcode 5 DP maka alat-alat baru akan digunakan bahkan jika Anda menggunakan Xcode 4.6.X.

Yang perlu Anda lakukan pada tahap ini (di Xcode 4.6.X) adalah mengambil flag --deep yang disarankan di atas dan tambahkan ke dalam tanda penandatanganan kode Anda (Target, Pengaturan Build) lihat gambar di bawah.

Specifying Deep Signing of Embedded Frameworks


67
2017-07-01 10:55



Bagi saya, masalah ini disebabkan setelah menyeret folder bernama "sumber daya" di proyek saya. Setelah mengubah namanya menjadi yang lain (seperti "resourcessss" misalnya), kesalahan itu hilang.


12
2018-05-18 15:21



Saya memiliki masalah yang sama, tetapi jawabannya sederhana: identitas penandatanganan kode pada aplikasi saya diatur ke "-", jadi cukup dengan menetapkan bahwa untuk "Jangan Daftar Kode" perbaiki saya.

"-" tampaknya menjadi pengaturan default ketika Anda melakukan beberapa tindakan, meskipun saya tidak dapat memberi tahu Anda apa itu.


4
2018-06-25 21:14



Ini mungkin membantu seseorang:

Saya akhirnya menemukan solusinya dengan trial and error. Dalam kasus saya, saya memiliki nama folder yang cocok dengan variabel “Nama Produk” dalam pengaturan pembangunan. Ini juga cocok dengan seluruh nama proyek! Jadi saya hanya mengubah satu bidang. Saya mengubah "Pengaturan Build" -> "Nama Produk". Nilai MySpecialApp diubah menjadi My-SpecialApp. Itu hanya itu! Saya kemudian masuk kembali ke portal pengembang Apple dan membuat ID Aplikasi baru dan profil penyediaan seluler untuk pengembangan dan distribusi dan sisanya adalah riwayat. Rilisan saya sekarang berfungsi ketika diterapkan melalui distribusi Ad Hoc.     Catatan terakhir tentang ini. Ini jelas bug bahwa Apple harus memperingatkan pengguna bahwa mereka telah melakukan kesalahan dan memungkinkan semacam tindakan korektif otomatis.     - Lihat selengkapnya di: http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC.dpuf


2
2018-06-26 11:00



Bagi saya itu Framework PaddleMAs rusak yang: 1. Saya dihapus dari File Cocoapods saya 2. Ran pod install  3. Mulai ulang Xcode saya

dan itu memecahkan masalah. Untuk beberapa alasan, kerangka kerja yang rusak akan mencegahnya ditandatangani, sayangnya Xcode tidak menunjukkan kesalahan ini dengan sangat jelas dan memberi Anda saran perbaikan yang baik. Telah membuat bug dengan Apple untuk memperbaikinya.


0
2018-01-08 19:41