আইওএস 9.2 এবং নীচে Xcode 8 বিল্ড ক্র্যাশ


85

আমি যখন আমার অ্যাপ্লিকেশনটি এক্সকোড 8 জিএম বীজ দিয়ে তৈরি করি এবং ডিভাইস বা সিমুলেটারের নীচে একটি আইওএস 9.2 এ এটি চালিত করি, তখন আমি অ্যাপ স্টার্টআপের সময় বা অ্যাপ্লিকেশন চালু হওয়ার কয়েক সেকেন্ড পরে অদ্ভুত EXC_BAD_ACCESS ক্র্যাশ পেয়ে যাই। ক্রাশটি সর্বদা আলাদা স্পটে ঘটে (একটি সংক্ষিপ্তসার [UIImage imageNamed:], অ্যাপ প্রতিনিধিদের মূল পদ্ধতি ইত্যাদি)। আমি যখন এটি আইওএস 9.3+ বা 10 এ চালিত করি তখন আমি সেই ক্র্যাশগুলি পাই না এবং যখন আমি এক্সকোড 7 দিয়ে তৈরি করি এবং আইওএস 9.2 এবং নীচে চলি তখন আমি সেগুলি পাই না । অন্য কেউ কি অনুরূপ কিছু অভিজ্ঞতা আছে? এটি কি এক্সকোড 8 এর সাথে পরিচিত সমস্যা?


প্রথমে, সিমুলেটারের সামগ্রী পুনরায় সেট করুন। এবং আবার চেষ্টা করো.
মেহুল

4
আপনি কি নিজের সমস্যার সমাধান করতে পেরেছিলেন? আমরা এটাও করছি
অ্যানিমোনলাইন

আপনি কি bugreport.apple.com এ একটি নতুন বাগ ফাইল করতে পারেন এবং নমুনা প্রকল্প এবং ক্র্যাশ লগগুলি সংযুক্ত করতে পারেন যাতে আমরা তদন্ত করতে পারি?
কুইন টেলর

@ কুইনটেলর - আমি সংযুক্ত প্রকল্পের সাথে একটি বাগ রিপোর্ট দায়ের করেছি (সিমুলেটারে আমার জন্য পুনরায় উত্পাদিত 100%) বাগরেপোর্ট.এপল.কম এ # 28371396। এটি দেখার জন্য আপনাকে ধন্যবাদ!
এভিটিম জর্জিভ

4
@ এভিটিম জর্জিভ ধন্যবাদ! এটি পি 3 .png চিত্র সম্পর্কিত আইওএস বাগের একটি সদৃশ এবং এটি আজ এক্সকোড 8.1 বিটাতে অন্তর্ভুক্ত আইওএস 10.1 বিটা এসডিকে স্থির করা উচিত, যা আজ প্রকাশিত হয়েছিল। আপনি কি এটি দিয়ে বিল্ডিং চেষ্টা করতে পারেন?
কুইন টেলর

উত্তর:


55

গৃহীত উত্তর দেখুন https://forums.developer.apple.com/thread/60919 দেখুন

আপনি প্রিভিউ.অ্যাপ দিয়ে 8-বিট হিসাবে 16-বিট সম্পদ সংরক্ষণ করতে পারেন

কীভাবে "এরর আইটিএমএস-90682 সমাধান করবেন: অবৈধ বান্ডিল - 'পেলোড / এক্সএক্সএক্সএক্সএক্স / অ্যাসেটস.সি.আর'র সম্পদ ক্যাটালগটিতে অ্যাপ্লিকেশন আইওএস 8 বা তার আগের সমর্থন করে যদি 16-বিট বা পি 3 সম্পদ থাকতে পারে না" "

এক্সকোড 8 জিএম সহ, এই ত্রুটিটি ঘটবে যদি আপনি iOS এর আগে প্রকাশিত আইওএস রিলিজ করে একটি অ্যাপ জমা দেওয়ার ক্ষেত্রে 16-বিট বা পি 3 সম্পদ অন্তর্ভুক্ত করেন তবে আইওএস 9.3। যদি আপনার অ্যাপ্লিকেশনটির জন্য বিস্তৃত রঙের কার্যকারিতা প্রয়োজন হয় তবে আপনাকে অবশ্যই আপনার ডিপ্লোয়মেন্ট টার্গেটটি আইওএস 9.3 বা তার পরে পরিবর্তন করতে হবে। যদি আপনার অ্যাপ্লিকেশনটির জন্য বিস্তৃত রঙের কার্যকারিতা প্রয়োজন হয় না এবং আপনি এটি পুরানো আইওএস সংস্করণে স্থাপন করতে চান তবে আপনার 16-বিট বা পি 3 সম্পদ 8-বিট এসআরজিবি সম্পদের সাথে প্রতিস্থাপন করা উচিত। আইটিউনস কানেক্ট থেকে ত্রুটি বার্তায় নামকরণ করা সম্পদ ক্যাটালগটিতে "সম্পদ" চালিয়ে আপনি 16-বিট বা পি 3 সম্পত্তি খুঁজে পেতে পারেন। নিম্নলিখিত পদক্ষেপগুলি প্রক্রিয়াটির রূপরেখা দেয়:

  1. একটি ইন্সপেক্টেবল .ipa ফাইল তৈরি করুন। এক্সকোড অর্গানাইজারে (এক্সকোড-> উইন্ডো-> অর্গানাইজার), পরিদর্শন করতে একটি সংরক্ষণাগার নির্বাচন করুন, "রফতানি ..." ক্লিক করুন, এবং "এন্টারপ্রাইজ বা অ্যাড-হক স্থাপনার জন্য রফতানি" নির্বাচন করুন। এটি একটি স্থানীয় কপি তৈরি করবে। আপনার অ্যাপ্লিকেশন জন্য আইপিএ ফাইল।

  2. .Ipa ফাইলটি সনাক্ত করুন এবং এর এক্সটেনশনটি .zip এ পরিবর্তন করুন।

  3. .Zip ফাইলটি প্রসারিত করুন। এটি আপনার। অ্যাপ্লিকেশন বান্ডেল সমন্বিত একটি পেলোড ফোল্ডার তৈরি করবে।

  4. একটি টার্মিনাল খুলুন এবং আপনার। অ্যাপ্লিকেশন বান্ডিল সিডি পাথের শীর্ষ স্তরে / পেললোড / আপনার.এপকে কার্যক্ষম ডিরেক্টরি পরিবর্তন করুন

  5. আপনার। অ্যাপ্লিকেশন বান্ডলে Assets.car ফাইলগুলি নিচের মত প্রদর্শিত হিসাবে চিহ্নিত করতে অনুসন্ধান সরঞ্জামটি ব্যবহার করুন: সন্ধান করুন। নামকরণ 'সম্পদ.car'

  6. নীচে দেখানো অনুসারে আপনার অ্যাপ্লিকেশনটিতে প্রতিটি অ্যাসেটস.সিআর-তে যে কোনও 16-বিট বা পি 3 সম্পদ খুঁজে পেতে সম্পদ সরঞ্জামটি ব্যবহার করুন। :sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json

  7. ফলস্বরূপ /tmp/Assets.json পরীক্ষা করুন এবং "ডিসপ্লেগামুট": "পি 3" এবং এর সাথে সম্পর্কিত "নাম" যুক্ত যে কোনও বিষয়বস্তু সন্ধান করুন। এটিতে এক বা একাধিক 16-বিট বা পি 3 সংস্থান থাকা আপনার চিত্রের নাম হবে।

  8. Assets বিট / এসআরজিবি সম্পদের সাথে সেই সম্পদগুলি প্রতিস্থাপন করুন, তারপরে আপনার অ্যাপ্লিকেশনটি পুনরায় তৈরি করুন।

আপডেট: যদি আপনার স্থাপনার টার্গেটটি হয় 8.3 বা 8.4 এ সেট করা থাকে এবং আপনার যদি কোনও সম্পদ ক্যাটালগ থাকে তবে আপনি যদি 16-বিট বা পি 3 সম্পদ না রাখেন তবে আপনি এই একই ত্রুটি বার্তাটি পাবেন। এক্ষেত্রে আপনাকে হয় আপনার ডিপ্লোয়মেন্ট টার্গেটটি 8.2 এ কমিয়ে আনতে হবে, বা এটিকে 9.x এ স্থানান্তর করতে হবে either


4
এটি কীভাবে EXC_BAD_ACCESS এর সাথে সম্পর্কিত?
অ্যানিমোনলাইন

4
উত্তর সদৃশ করবেন না। পরিবর্তে, সদৃশ হিসাবে পতাকা প্রশ্ন।
জাল

আপনি মানুষ ধন্যবাদ! আপনি এই উত্তর দিয়ে আমার জন্য অনেক সময় বাঁচিয়েছেন! )
Thorax

4
আমার প্রকল্পে (স্থাপনার লক্ষ্যমাত্রা 8.0) এখনও কোনও অ্যাপ্লিকেশন বা এক্সকোড 8 সহ যেকোন জায়গায় এলোমেলোভাবে ক্রাশ হচ্ছে এমন কোনও পি 3 সম্পদ নেই All সমস্ত সম্পদ 8 বিট / এসআরজিবি। কেউ কি এখনও এই একই সমস্যার মুখোমুখি
অঙ্কিত

@ অঙ্কিত আমরা একই সমস্যার মুখোমুখি হই। আপনি কি এখনও সমাধান খুঁজে পেয়েছেন?
রোমান ট্রুবা

32

আমি আশা করি এই বাশ স্ক্রিপ্টটি আপনাকে সহায়তা করতে পারে। আপনার প্রকল্পের সমস্ত এক্সক্যাসেটের চেয়ে ইনপুট আর্গুমেন্টটি ডিরেক্টরি। এই স্ক্রিপ্টটি সমস্ত পিএনগিতে এসআরজিবি প্রোফাইল সেট করবে। এটি আমাকে সাহায্য করেছে :)

#!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"
XSAASSETSD="$(find "$DIRECTORY" -name '*.xcassets')"
for xcasset in $XSAASSETSD
do
    echo "---$xcasset"
    IMAGESETS="$(find "$xcasset" -name '*.imageset')"
    for imageset in $IMAGESETS
    do
        echo "------$imageset"
        FILES="$(find "$imageset" -name '*.png')"
        for file in $FILES 
        do
            echo "---------$file"
            sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" $file --out $file
        done
    done
done
echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"

আমাদের সম্পদে কোনও ত্রুটিযুক্ত চিত্র নেই, তবুও আমরা এখনও এই ত্রুটিগুলি পেয়ে যাচ্ছি।
অ্যানিমোনলাইন

@ অ্যানিমাওনলাইন, অ্যাপে যদি সত্যই 16 বিট বা পি 3 সম্পদ থাকে তা এটি সহায়তা করে।
আলেকসান্দ্র তেরেতেভ

4
আমি মনে করি মূল সমস্যাটি হ'ল কেউ সত্যই নিশ্চিত করে নি যে এই ত্রুটি সম্পদের কারণে হয়েছে।
অ্যানিমোনলাইন

প্রথমে কাজ করেছেন, কিন্তু তারপরে না, এটি একই জায়গায় ক্রাশ হয় না
CiNN

4
স্ক্রিপ্টটি আমার পক্ষে কাজ করে নি, তবে ইমেজঅપ્টিম ব্যবহার করে
এসেছিল

16

আমি সমস্যাটি পুনরুত্পাদন করতে সক্ষম হয়েছি এবং এটি সম্পদ ক্যাটালগের চিত্রগুলির সাথে সম্পর্কিত বলে মনে হচ্ছে। অ্যাপলের সাথে একটি বাগ ফাইল করেছেন (সংযুক্ত নমুনা প্রকল্প সহ) দিয়ে

অ্যাপল বাগ রিপোর্টার: 28371396


আমি নমুনা প্রকল্পটি ডাউনলোড করতে সক্ষম নই। আপনি কি ক্র্যাশটি পুনরুত্পাদন করার জন্য প্রকল্পটি ভাগ করতে পারেন
তামিল

ধন্যবাদ সম্পদ ক্যাটালগ সম্পর্কিত সমস্যাগুলি, কেবল অ্যাডোব আরজিবি (1998) থেকে এসআরজিবিতে রঙের স্থান পরিবর্তন করুন।
তৈমুর বার্নিকোভিচ

13

সম্পূর্ণ প্রকল্পে এবং সাদা স্পেস সহ পিএনজি ফাইলগুলিকে সঠিক ফর্ম্যাটে রূপান্তর করতে সম্পাদিত স্ক্রিপ্ট:

#!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"

find "$DIRECTORY" -name '*png' -print0 | while read -d $'\0' file; 
do 
    echo "---------$file"
    sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" "$file" --out "$file"
done

echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"

4
এই স্ক্রিপ্টটি কিছুটা বেশি সঠিক। Спасибо, Никита।
seelts

4
এটি একটি কবজির মতো কাজ করে। সরল তবে কার্যকর স্ক্রিপ্ট। এই স্ক্রিপ্টটি কীভাবে চালাতে হয় জানেন না তাদের জন্য .. পদক্ষেপগুলি: 1) এই স্ক্রিপ্টটি টিএসটি ফাইলে রাখুন এবং এ্যাসেটসক্রিপ্ট.এস 2 এর নাম পরিবর্তন করুন) গোটো ইমেজ.এক্সক্যাসেটগুলি এনকোলেডিং ফোল্ডারে রেখে স্ক্রিপ্ট ফাইলটি রাখুন 3) কমান্ড লাইনে যান আপনার স্ক্রিপ্ট ফাইলটি উপস্থিত রয়েছে এমন ফোল্ডারে 4) এক্সিকিউটেবলের স্ক্রিপ্ট ফাইলের অনুমতিগুলি পরিবর্তন করুন (chmod 755 AssetsScript.sh) 5) কমান্ড লাইনে নিজেই (./AssetsScript.sh Images.xcassets) এ প্যারামিটার হিসাবে ডিরেক্টরি নামের সাথে স্ক্রিপ্ট ফাইল চালানো হয়। বুম করুন এটি আপনার সমস্ত সম্পদকে প্রয়োজনীয় ফর্ম্যাট এবং রূপান্তরিত করে। আবেদন এখন ঠিক কাজ করবে।
শ্রীবতস

এক লাইনে, while IFS= read -d '' -r file; do if [ $(file "$file" | grep -c '16-bit') -eq 1 ]; then sips -m '/System/Library/Colorsync/Profiles/sRGB Profile.icc' "$file"; fi done < <(find . -print0)যা কেবল 16-বিট চিত্রটিকে 8-বিটে রূপান্তরিত করবে
ডনসং

3

একই সমস্যা।

এটি কোনও বাগ কিনা আমি নিশ্চিত নই তবে এটিই আমার সমাধান: এখানে আপনার অ্যাডোব আরজিবি (1998) বর্ণমালা ব্যতীত আপনার চিত্রের সম্পদগুলি নিশ্চিত করুন

এক্সকোডে


4
আপনি কি বোঝাতে চেয়েছেন? আপনি বিস্তারিত বলতে পারেন?
অ্যানিমোনলাইন

4
অ্যাডোব আরজিবি (1998) কালারস্পেসের সাথে একটি চিত্র দেখানো আমার জন্য এক্সকোড 8 এবং সুইফট 3 দিয়ে একটি ডিভাইসে ডিবাগ করার জন্য কাজ করছিল, তবে আইওএস 9 এ মুক্তি পাচ্ছিল না রঙের স্থান পরিবর্তন করে এটি কাজ করে।
অ্যান্ড্রু

1

একই সমস্যাযুক্ত অন্য কারও জন্য যুক্ত করা হচ্ছে ...

অ্যাপসটি আইওএস 9.0-এ ক্রশ হচ্ছে - আইওএস 9.2 যা এলোমেলো মনে হয়েছে / স্টোরিবোর্ড রূপান্তরগুলি / ইউআইআইমেজ (নাম ...) সেট করার আশেপাশে .. এই থ্রেডটি খুঁজে পেয়েছে: ( https://forums.developer.apple.com/thread/61643 )

যদি আপনার অ্যাপ্লিকেশনটি আইওএস 8.4 কে টার্গেট করছে তবে এটি এক্সকোড 8-এ আইওএস 9.0 - 9.2 এ ক্র্যাশ হয়ে যাবে .. এক্সক্যাসেটের সাথে করার মতো কিছু। 8.2 বা নীচে স্থাপনার লক্ষ্য নির্ধারণ (আমি 8.0 ব্যবহার করেছি) এটি আমার জন্য স্থির করে। দুষ্টুমি করসি না. সবচেয়ে খারাপ বাগ।


ওহে. সাহায্য! আমি কেবল অ্যাপস্টোরে বাদে এ জাতীয় কিছু উপভোগ করছি। আমি যখন আইওএস 9.2.1 সহ আইফোনটিতে সরাসরি আমার অ্যাপ্লিকেশনটি তৈরি করি তখন এটি ক্রাশ হয় না, না সিমুলেটারেও, তবে যখন আমি ঠিক একই সংস্করণটি ডাউনলোড / অ্যাপস্টোর থেকে বিল্ড করি তখন এটি ক্রাশ হয়। আপনার ক্ষেত্রেও কি এই অবস্থা ছিল?
স্টি

@ স্টি না, এটি ডিবাগ বিল্ডে বিধ্বস্ত হয়েছিল। আপনি কি পুরানো বিল্ডটি বেশি লেখার সময় মূল ডেটা বা অন্য যে কোনও সমস্যা হতে পারে যা ব্যবহার করছেন? শুধু একটি ভাবনা.
কার্নেট

ভাল চিন্তা, এবং হ্যাঁ, আমি অ্যাপের কিছু অংশে কোর ডেটা ব্যবহার করছি। তবে অনেক পরীক্ষার পরে আমি নিশ্চিত যে এটির কোনও সম্পর্ক নেই। কোর ডেটাগুলি আমার চিত্রগুলির সাথে কিছুই করতে পারে না এবং আমার ক্র্যাশ রিপোর্টিং সিস্টেমের প্রায় সমস্ত স্ট্যাক-ট্রেস বলে যে ইউআইআইমেজ (চিত্রের নাম :) খারাপ লোক। ওহ, এবং এটি পরিষ্কার ইনস্টলগুলিতেও ঘটে। গত দুই দিনে Over০০০ এরও বেশি ক্র্যাশ হয়েছে, কেবলমাত্র আইওএস 9.0.2-কে 9.2.1 এর মাধ্যমে প্রভাবিত করে .. আইওএস 9.3 বা তার পরে নয় .. তাই অদ্ভুত। এবং এখনই এটি নির্মাণ করার পরে ঘটে না। কেবল অ্যাপস্টোর। ডিবাগ করা অসম্ভব। আমি এখনই অ্যাপলে একটি টিএসআই-টিকিট প্রেরণ করেছি।
স্টি

ওহ। এটি একটি গুয়াই। সবেমাত্র আরেকটি চিন্তাভাবনা ছিল .. অ্যাপ স্টোর সংস্করণটি সুইফটের কোন সংস্করণ ব্যবহার করছে? আমি মনে করি আমি এটি সুইফট ২.২ বা ২.৩ এ অনুভব করেছি। সুইফট নয় ৩. আমি ভাবছি আপনি এখন সুইফট 3 দিয়ে তৈরি করছেন এবং এটি পুনরুত্পাদন করতে পারবেন না?
কার্নেট

না, তবে এটি খুব আকর্ষণীয় যে আপনি এটি বলছেন! আমরা দীর্ঘদিন ধরে অ্যাপ স্টোরটিতে এই অ্যাপটি পেয়েছি। অ্যাপ স্টোরের পূর্ববর্তী সংস্করণটি সুইফট ২.৩ এ লেখা হয়েছিল এবং এই বাগটিটি অনুভব করে নি। যে আমি কয়েক দিন আগে আপলোড করা অ্যাপ স্টোর এই নতুন সংস্করণ (যে বিপর্যস্ত একটি) সুইফট 3. আরেকটি উল্লেখযোগ্য পরিবর্তনের রূপান্তরিত হচ্ছে সহ আইওএস 10. জন্য উইজেট একচেটিয়াভাবে একটি যোগে হয় খুব কম কিন্তু খুব বড় পরিবর্তন, হয়েছে
Sti

0

আপনার প্রকল্পের তথ্য এবং একই লক্ষ্যে সমস্ত লক্ষ্যমাত্রার ভিতরে আইওএস ডিপ্লোয়মেন্ট টার্গেট সেট করুন ।

আমার ক্ষেত্রে আমার প্রকল্পটি আইওএস 9.1 তে সেট করা হয়েছিল এবং লক্ষ্যটি আইওএস 8.0 এ সেট করা হয়েছিল এবং আইওএস 8.4 এর সাথে সিমুলেটারে ক্র্যাশ হচ্ছে

এখন এটি পুরোপুরি কাজ করছে।

PS: আবার চালানোর আগে প্রকল্পটি পরিষ্কার করুন।


0

যদিও প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে, অ্যাক্সেসপেট করা সমাধান আমার পক্ষে কার্যকর হয় না, কারণ আমার কোনও 16 বি / সিএইচ সম্পত্তি নেই।

আমি খুঁজে পেয়েছি যে সমস্যাটি সম্পদগুলির জন্য উপস্থিত হয়েছিল যা lzfseঅ্যালগরিদম ব্যবহার করে সংকুচিত হয়েছিল (আপনি ব্যবহার করে সংস্থানগুলি এক্সট্র্যাক্টিংয়ের তথ্য সন্ধান করতে পারেন assetutil)। দুর্ভাগ্যক্রমে এক্সকোড আইডিই বিকাশকারীদের সংক্ষেপণ অ্যালগরিদম পরিবর্তন করতে দেয় না, তবে আপনি নিজেই সম্পদের সংকলন করে এবং actoolকমান্ডে স্থাপনার লক্ষ্য হ্রাস করে এটি করতে পারেন ।

tl; dr;

  1. সংরক্ষণাগার
  2. আনজিপ করুন ipa
  3. সংকলন সম্পদ - আপনি এক্সকোড রিপোর্ট নেভিগেটরে সংরক্ষণাগার লগগুলি পরীক্ষা করে এক্সকোড দ্বারা উত্পন্ন আপনার প্রকল্পের জন্য সম্পদ সংকলক কমান্ডটি সন্ধান করতে পারেন

উদাহরণ কমান্ড:

xcrun actool --output-format human-readable-text --notices --warnings --minimum-deployment-target 8.0 --output-partial-info-plist info_partial.plist --app-icon AppIcon --launch-image LaunchImage --enable-on-demand-resources YES --sticker-pack-identifier-prefix {bundle_id}.sticker-pack --target-device iphone --target-device ipad --platform iphoneos --product-type com.apple.product-type.application --compile #{path_to_directory_containing_Assets_car} Assets/Assets.xcassets

  1. মুখ বন্ধ কর.
  2. পদত্যাগ করা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.