سؤال

أحاول تحميل تطبيق إلى iPhone App Store، ولكنني أتلقى رسالة الخطأ هذه من iTunes Connect:

الثنائي الذي ادخلته كان خاطئ.كان التوقيع غير صالح، أو لم يتم توقيعه باستخدام شهادة إرسال Apple.


ملحوظة:تمت إزالة تفاصيل السؤال الأصلي، حيث تحولت هذه الصفحة إلى مستودع لجميع المعلومات حول الأسباب المحتملة لرسالة الخطأ هذه.

للحصول على معلومات عامة حول إرسال تطبيقات iPhone إلى App Store، راجع خطوات تحميل تطبيق iPhone إلى AppStore.

هل كانت مفيدة؟

المحلول

لقد كانت تجربتي أن Xcode يرتبك أحيانًا بشأن شهادة التوقيع التي يجب استخدامها.لقد اعتدت على إنهاء Xcode وإعادة تشغيله بعد أي تغيير في إعدادات توقيع التعليمات البرمجية (وإجراء إنشاء نظيف) للتغلب على هذه المشكلة.

نصائح أخرى

أردت فقط أن أذكر أنني أيضًا واجهت مشكلة مع Zip من سطر الأوامر أيضًا.تكمن المشكلة في الطريقة التي يتعامل بها مع الارتباطات الرمزية افتراضيًا.استخدام:

zip -y -r myapp.zip myapp.app

حل تلك المشكلة.

كان لدي نفس المشكلة وحلها بهذه الطريقة:

تم تثبيت شهادات الملكية على جهاز التطوير الخاص بي وتم تضمين mobileprovision.embedded في أرشيف التوزيع.بعد ساعة أو نحو ذلك من البحث والحفر على Google، وجدت مصدر الخطأ.داخل Xcode، قمت بنسخ تكوين الإصدار وإنشاء تكوين توزيع جديد ثم قمت بتغيير هوية التوقيع إلى شهادة التوزيع الخاصة بي.ومع ذلك، على الرغم من تحديثه في واجهة المستخدم الرسومية، لم يتم تحديث ملف المشروع بشكل صحيح.

إذا واجهت نفس الخطأ، فابحث في دليل [ProjectName].xcodeproj عن ملف project.pbxproj وافتحه في المحرر المفضل لديك.ابحث عن قسم التوزيع.بدا بلدي المكسور مثل هذا:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Developer: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Developer: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
};
name = Distribution;
};

يمكنك رؤية هوية التوقيع وملف تعريف التوفير غير صحيحين في القسم الثاني.قم بتحريره ليطابق القسم الأول، وأعد البناء، ويجب أن تكون جاهزًا للبدء.بدا الأخير مثل هذا:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Distribution: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “F00D3778-32B2-4550-9FCE-1A4090344400″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
};
name = Distribution;
};

تغيرت الأدلة لحماية الأبرياء

نفس المشكلة، حل مختلف.

في حالتي، كنت أقوم بضغط الملف باستخدام zip -r myapp.zip myapp.appاتضح أن الأمر المضغوط أفسد الحزمة.ضغطه من الباحث جعله يعمل.

واجهت نفس المشكلة وبعد تجربة العديد من الأشياء - قمت بإزالة استحقاقات .plist من استحقاقات توقيع الكود (تركتها فارغة للتو) وتم إنشاؤها بشكل جيد وتم تحميلها أخيرًا.

بالتوفيق للجميع :-D

نقطة بيانات أخرى:لفترة من الوقت، تم تشغيل تطبيقي.لقد أضفت الآن دعمًا لعمليات الشراء داخل التطبيق، وفجأة فشل ذلك بسبب مشكلة "التوقيع الثنائي/التوقيع غير الصالح".بعد البحث الدقيق، اكتشفت أن قيمة معرف التطبيق في ملف قائمة الاستحقاقات كانت معطلة.

على الأرجح، كان لهذا علاقة بحقيقة أنني قمت باستبدال ملف تعريف التوفير من ملف بدل إلى ملف خاص بالتطبيق (مطلوب لعمليات الشراء داخل التطبيق).معرف التطبيق الخاطئ مؤهل ضمن الملف الشخصي القديم.لم يكن مطابقًا لمعرف التطبيق الموجود في ملف info.plist، ولكن يبدو أن iTunes قد غفر ذلك.

لذلك، لتلخيص:

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.*

على ما يرام، في حين

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.foo

يسبب "ثنائي غير صالح".

لقد واجهت نفس المشكلة أيضًا، أثناء البناء لاحظت عدم إضافة التوفير في البناء.

كان الإصلاح بالنسبة لي هو تعيين الإصدار على جهاز iPhone حيث أستخدم جهاز المحاكاة عادةً، ولكن بعد ذلك لن يتضمن ملف تعريف التوفير...

قد يكون هذا خطأ مستجد.عادةً لا يمكنك البناء على الجهاز، ولكن عندما تفعل ذلك للتوزيع، يمكنك ذلك.

حسنًا، بعد تكرار الخطوات عدة مرات، نجحت أخيرًا في تحميل تطبيقي.

لا أعرف بالضبط ما الذي تم إصلاحه، ولكن قبل المحاولة الناجحة، أغلقت Xcode وFirefox وأعدت تشغيلهما.أعتقد أن أحد هذه التطبيقات كان به بعض السحر السيئ.

إليك مشكلة واجهتني:لقد أضفت الثنائي إلى Subversion قبل التحميل.بعد ذلك، قامت مقارنة/ضغط الملف الثنائي بتضمين أدلة .svn المخفية، مما أدى إلى إفساد توقيع التعليمات البرمجية.

لقد جربت أشياء مختلفة بعد قراءة المنشورات المختلفة بما في ذلك تلك المذكورة أعلاه.ما نجح أخيرًا بالنسبة لي هو البدء من جديد تمامًا!لقد قمت بحذف كل شهادة وملف تعريف توفير مرتبط بتطبيقي.

لقد قمت بإعادة إنشاء شهادة تطوير جديدة وشهادة توزيع جديدة.لقد قمت بتنزيل الشهادة المتوسطة مرة أخرى.ثم قمت بإعادة إنشاء ملف تعريف التطوير وملف التوزيع.

بعد تثبيت الشهادات الثلاث (لاحظت أن التوزيع يحتوي على مفاتيح خاصة وعامة هذه المرة) وملفي تعريف التوفير (لم يتم وضع علامة على ملف التوزيع الخاص بي على أنه لا يحتوي على شهادة صالحة!)، نجح كل شيء.

بمجرد اتخاذ قرار بإلغاء كل شيء والبدء من جديد، استغرق الأمر حوالي 5 دقائق فقط لإنشاء العناصر الجديدة وإعادة التثبيت.

انظر هذا الرابط لمعرفة الحل:

http://greghaygood.com/2010/09/04/invalid-binary-message-from-itunesconnect

الإجابة المختصرة هي "في النهاية قمت بالتحقق مرة أخرى من ملف info.plist الخاص بي واكتشفت شيئًا ما.لقد أضفت CFBundleIconFiles وفقًا للإرشادات الجديدة، ولكن كان هناك إدخال فارغ في قائمة المصفوفات.لقد أزلت ذلك وأعدت التقديم، وتم قبوله أخيرًا!"

كان لي مشكلة مماثلة ولكن في Monotouch.لقد وجدت أنه تم تعيين ملف تعريف الإصدار الخاص بي لاستخدام شهادات المطورين.يجب أن تبدو هذه:enter image description here

يبدو أن هذه المشكلة لها أسباب عديدة.هذا هو الحل الخاص بي:

ينطبق هذا على أي شخص ينتمي إلى فرق تطوير متعددة (على سبيل المثال.تطبيقاتك الخاصة وشركاتك).

إذا قمت بإنشاء الإصدار باستخدام مجموعة واحدة من بيانات الاعتماد وأعدت توقيعه باستخدام مجموعة مختلفة (على سبيل المثال،للتوزيع المخصص/متجر التطبيقات)، يجب عليك ذلك تأكد من إنشاء الإصدار وتوقيعه في الأصل باستخدام بيانات اعتماد تنتمي إلى نفس فريق تطوير iOS الذي تنتمي إليه بيانات اعتماد التوزيع التي تعيد التوقيع باستخدامها.

لذا، لا تقم بالإنشاء باستخدام بيانات اعتماد "Indy Dev Inc"، ثم حاول النشر باستخدام بيانات اعتماد "Company Inc".تأكد من إعداد بيانات اعتماد "Company Inc" للتطوير والتوزيع واستخدامها.

لقد نشرت المزيد من المعلومات حول هذا على مدونتي: http://omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/

كان لي نفس المشكلة.لقد كنت على استعداد للتخلي عن هذه المشكلة ولكني اكتشفت ذلك عندما ذهبت للتحقق من الكود الخاص بي باستخدام Murky.أقوم دائمًا بتصفح الاختلافات في الملفات التي تم تغييرها قبل تسجيل الوصول.عند القيام بذلك هذه المرة لاحظت أن ملف project.pbxproj قد تغير.... وفي قسم التوزيع كان إدخال "PROVISIONING_PROFILE[sdk=iphoneos*]" فارغًا.

لم ينجح إنهاء Xcode وإعادة تشغيله بالنسبة لي.بدلاً من ذلك، ذهبت إلى كل من إعدادات المشروع والهدف وقمت بتغيير توقيع الرمز لتحديد ملف تعريف التوزيع الخاص بي مباشرةً بدلاً من الاعتماد على ميزة التحديد التلقائي.أدى القيام بذلك إلى ملء ملف project.pbxproj بالقيم الصحيحة على الرغم من أن ميزة التحديد التلقائي من المفترض أنها حددت نفس ملف التعريف الذي قمت بتحديده يدويًا.

أحتاج بيرة...

بعد تجربة جميع الإصلاحات الأخرى المذكورة هنا، قمنا بتسجيل TSI مع Apple.بعد اتباع كافة الخطوات في ملاحظة فنية TN2250 سبب مشكلتنا هو أن المورد المختوم مفقود أو غير صالح.في حالتنا كان ._.DS_Store.

ال "..." يسمى ملف Apple Double، وهو نتيجة نسخ مجلد Xcode Project، *unzipped*، إلى نظام ملفات لا يدعم بشكل صحيح "تفرعات الموارد" الخاصة بـ HFS+ (المستخدمة لتوقيعات التعليمات البرمجية).هذه الزائدة".". تنتج الملفات وتتسبب في فشل التحقق من توقيع التعليمات البرمجية.

لتنظيف ملفات Apple Double التي بها مشكلات من مجلد مشروع Xcode، قم بتشغيل الأمر dot_clean على مجلد مشروع Xcode الخاص بك، وقم بإجراء إنشاء نظيف، ثم أعد أرشفة عملية الإرسال الخاصة بك وحاول مجددًا.

dot_clean /the/path/to/xcode/project

ملحوظة:يمكنك فقط سحب مجلد المشروع إلى الوحدة الطرفية لملء المسار تلقائيًا

لا توجد رسالة عند تشغيل الأمر ولكن بناء المشروع قد يعرض تحذيرًا حول الملف عند الإنشاء التالي.يمكنك تجاهل هذا، وسيتم التحقق من صحة التطبيق وإرساله بنجاح.

تم حل هذه المشكلة عن طريق تنظيف ملف myProject.xcodeproj (انقر بزر الماوس الأيمن، افتح الحزمة)، وكانت الحزمة تحتوي على ملفات من المطور المشارك، وبعد حذفها تم حل المشكلة

بالنسبة لي كان الحل هو إنشاء شهادة توزيع على:بوابة توفير مطوري Apple.

لما يستحق الأمر، أريد أن أضيف ما الذي حل هذه المشكلة بالنسبة لي.كان لدي ؟(علامة الاستفهام) في عنوان تطبيقي الذي تسبب في حدوث الخطأ.

لقد تلقيت ثنائيًا غير صالح، إذا كان التطبيق لا يستخدم إشعار الدفع عن بعد، لكنني تركت رمز تسجيل الدفع وتفويض رد الاتصال لتسجيل/تلقي الإشعار عن بعد بدون تعليق، حتى لو لم يتم استخدام الرمز.

هذا حديث.آخر تقديم لي الأسبوع الماضي كان جيدًا.هذا الأسبوع، تقوم بإرجاع ثنائي غير صالح.ولحسن الحظ، هناك بريد إلكتروني يشرح الخطأ.

كنت أواجه مشكلة مماثلة، لكني لا أستخدم entitlements.plist.ومع ذلك، بعد عشرات عمليات التحميل الفاشلة، راجعت ملف info.plist الخاص بي واكتشفت شيئًا ما.تحتوي مجموعة CFBundleIconFiles الخاصة بي على إدخال فارغ.لقد أزلت ذلك وأعدت التقديم، وتم قبوله أخيرًا!

على محمل الجد، ما مدى صعوبة قيام شركة Apple بكشف هذا النوع من أخطاء التحقق من الصحة؟

يحرر:لا يظهر على الفور مكان وجود ملفات CFBundleIconFiles لأنها تستخدم اسمًا مختلفًا.في عرض معلومات المشروع، انقر فوق Ctl وحدد "Show Raw Keys/Values" ثم سترى المراجع إلى CFBundleWhatever.في حالة هذا المحرر، كان يحاول استخدام ملف icon=72-@2x.png غير موجود.

سنتى:

قم بتنزيل أحدث إصدار من برنامج تحميل التطبيقات.لقد قمت للتو بالتحديث وحصلت الآن على رسالة خطأ مختلفة.

لقد مررت للتو بهذه المشكلة (مرة أخرى) ولكن هذه المرة وجدت أن ملف تعريف التوزيع الخاص بي بالحالة "غير صالح".إذا كنت تعتقد أن كل شيء آخر على ما يرام، فتحقق مرة أخرى من الحالة في البوابة الإلكترونية وقم بتجديد/إعادة تنزيل أي شيء ليس في الحالة النشطة.

لقد تلقيت ملفًا ثنائيًا غير صالح بعد تحميل التطبيق، دون متابعة عبر البريد الإلكتروني لمعرفة سبب فشله.لقد حاولت القيام بأمرين في وقت واحد، ولست متأكدًا من أي مما يلي قد أدى إلى حل المشكلة بالفعل:

  1. إعادة تشغيل ماك بوك برو
  2. تم نقل الكود المصدري لمشروعي من محرك أقراص NTFS إلى محرك أقراص HFS+ وإعادة ترجمته.

لقد واجهت مشكلة مع هذا ومع 4.3 GM SDK.لن يتمكن أحد تطبيقاتنا من تجاوز عملية التحميل.اتضح أنها مشكلة في ملف تعريف التوفير.لقد قمت بإعادة إنشاء ملف تعريف متجر التطبيقات وكان يعمل بشكل جيد.

يتضمن الحل الخاص بي إنشاء معرف تطبيق جديد.لست متأكدًا تمامًا من سبب إصلاح ذلك، ولكني أظن أنه ربما كانت معرفات الحزمة غير متطابقة - فقد أجبرني إنشاء معرف التطبيق الجديد على التأكد من أن تطبيقي وiTunes يتوقعان نفس الشيء.

حل آخر:

بالنسبة لي، قمت ببساطة بتعيين شهادات "الإصدار" ضمن "توقيع الرمز" لإصلاح المشكلة.تم ضبطها في البداية على "عدم التوقيع بالرمز".

بالنسبة لي، تم حل المشكلة عن طريق إعادة حفظ صورة PNG مع خيار غير متداخل.في الإصدارات السابقة، كان مسموحًا بصيغة png المتداخلة، ولكن اعلم أن هذه الصور يمكن أن تسبب ثنائيًا غير صالح.

رسالتي التفاحة:ملف الأيقونة التالف - يبدو أن ملف الأيقونة iconGQ@2x.png تالف.يجب ألا يكون الرمز الخاص بك عبارة عن ملف PNG متداخل.

يمكنك معرفة ما إذا كان ملف PNG متشابكًا باستخدام الأمر "ملف" في الوحدة الطرفية:Eva-Madrazos-Macbook-Pro-2: GQ 7 Integracion ADS eva $ file *.png default.png:بيانات صورة PNG، 320 × 480، 8 بت/لون RGB، غير متداخلة

حظا سعيدا ، إيفا

أريد أن أشير إلى إمكانية إرسال بريد إلكتروني إلى Apple ومطالبتهم بالتحقق من سجلاتهم.لقد فعلت ذلك بالضبط، بعد تجربة الكثير من الأشياء أولاً.وكان من الضروري تذكيرهم بعد حوالي أربعة أسابيع، لكنهم في النهاية ردوا وأشاروا إلى مكان المشكلة بالضبط.

كانت المشكلة في حالتي هي أنني قمت سابقًا بتجربة أيقونات تطبيقات أخرى، ولا تزال هناك إشارة إلى الصورة القديمة في "CFBundleIcons".لقد استخدمت وظيفة السحب والإفلات لتعيين الرمز، لكنني لم ألاحظ أن المحتوى القديم لم يتم مسحه بالكامل قبل إضافة المرجع الجديد.

لرؤية المرجع الخاطئ، كان من الضروري توسيع الأسهم لعرض كل عنصر فرعي في ملف plist.إحدى النصائح هي النقر بزر الماوس الأيمن فوق الملف وتحديد خيار عرض المحتوى الأولي.بهذه الطريقة لن تحتاج إلى توسيع أي شيء.

لقد جربت جميع الحلول الأخرى المقترحة، لكن لم يساعدني شيء.

انتهى بي الأمر بإنشاء ملف مشروع اكس كود الجديد وانسخ جميع التعليمات البرمجية والموارد الخاصة بي فيه.لقد أدى ذلك إلى حل المشكلة، وتم وضع تطبيقي في قائمة انتظار المراجعة.

يمكنني أن أوصي أيضًا ملاحظات Apple الفنية حول توقيع التعليمات البرمجية لتصحيح الأخطاء/التحقق.

uuid غير مسموح به.لقد قمت بإصلاحه عن طريق إزالة جميع [[UIDevice currentDevice] UniqueIdentifier]؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top