সুইফ্ট ফ্রেমওয়ার্ক: ছাতা শিরোনাম '[…] .হ' পাওয়া যায় নি


114

উদ্দেশ্য-সি এবং সুইফট কোড উভয় সমন্বিত একটি কাস্টম কাঠামোর মধ্যে , সুইফট সংকলকটি নিম্নলিখিত ত্রুটিটি ছুড়ে ফেলেছে:

[build_path]/unextended-module.modulemap:2:19: error: umbrella header 'bugtest.h' not found
  umbrella header "bugtest.h"
                  ^
<unknown>:0: error: could not build Objective-C module 'bugtest'

উত্তর:


240

এটি সাধারণত কোনও প্রকল্পের পুনর্নবীকরণ বা এরকম কোনও কিছুর পরে ঘটে। সমস্যাটি হ'ল ছাতা শিরোনামটি আর পাবলিক শিরোনাম হিসাবে তালিকাভুক্ত নয় । এটি কীভাবে ঠিক করা যায় তা দেখতে সংযুক্ত চিত্রটি দেখুন।

ফিক্স


7
ভবিষ্যতের পাঠকদের জন্য কেবল একটি নোট যা 'বিল্ড ফেজস' এর 'শিরোলেখ' বিভাগটি দেখতে আপনাকে পড লক্ষ্যে ক্লিক করতে হবে। প্রধান অ্যাপ্লিকেশন লক্ষ্য কোনও 'শিরোলেখ' বিভাগ তালিকাভুক্ত করবে না।
shmim

3
এটি পুরোপুরি এটি স্থির করে দিয়েছে। ধন্যবাদ. এটি অনুমোদিত উত্তর হওয়া উচিত।
গুজামিন

16
আমার জন্য - অ্যাক্সেস স্তরটি সর্বজনীন ছিল তবে এটি ছাতার সাথেও ব্যর্থ হয় not আমি "বিল্ড পর্যায়" এর "শিরোলেখ" বিভাগটি শীর্ষে নিয়ে গিয়েছিলাম এবং এটি কাজ শুরু করে।
আলেক্সেই মিনায়েভ

6
আমার ছাতার শিরোনামটি ইতিমধ্যে প্রকাশ্যে ছিল। বিভাগটি শীর্ষে স্থানান্তর করা কোনওরকমই সহায়তা করেনি।
রাফায়েল বুগাজিস্কি

1
আমার যখন আমদানি করা ফ্রেমওয়ার্কগুলির একটি কার্থেজ আপডেট করেছিল তখন আমারও একই সমস্যা ছিল। আমি অনুমান করি যে এক্সকোডের রেফারেন্সযুক্ত কাঠামোর পাথ পরিবর্তনের জন্য নজর রাখতে সমস্যা হচ্ছে। সরল এক্সকোড পুনঃসূচনাটি আমার জন্য সমস্যাটি স্থির করে।
টনি

48

এক্সকোড 7 বিটাতে, সুইফট 2 সহ, যদি আপনার ফ্রেমওয়ার্ক শিরোলেখটিকে "সর্বজনীন" হিসাবে ঘোষণা না করা হয় তবে এটিও ঘটবে

উদাহরণস্বরূপ, আমার শিরোনাম ফাইলটির জন্য "প্রজেক্ট" দৃশ্যমানতা সহ একটি কোকো টাচ ফ্রেমওয়ার্ক ছিল এবং আমার প্রকল্পের সমস্ত সুইফ্ট ফাইলের জন্য "ছাতা শিরোনাম ... পাওয়া যায়নি" ত্রুটিটি একবার আমার কাছে শিরোনাম "পাবলিক" ছিল, ত্রুটি চলে গেছে


1
আমার ক্ষেত্রে, আমি যখন এই সমস্যার মুখোমুখি হয়েছিলাম তখন এই উত্তরটি "আরও সঠিক" উত্তর বলে মনে হয়েছিল এবং এটি আমার পক্ষে কার্যকর হয়েছিল।
গ্রিমাউসার

1
আমি সম্মতি জ্ঞাপন করি. এটা সঠিক উত্তর. <প্রকল্প> .h ফাইলটিতে সঠিক টার্গেট সদস্যতা এবং অ্যাক্সেস স্তর (জনসাধারণ) রয়েছে কিনা তা পরীক্ষা করে দেখুন।
ব্যবহারকারী 965972

@ Shadow_x99 আমি শীর্ষক "সর্বজনীন", যেমন আমার প্রশ্ন এ পোস্ট করা হয় সেট না stackoverflow.com/questions/36084291/...
user2727195

এটি আসলে @ আর্টগারিগরিগরের উত্তরের একটি ভিন্নতা, কেবলমাত্র এটি Xcode পরিবর্তিত সম্পাদন করে। শেষ ফলাফলটি একই হওয়া উচিত।
original_username

40

এক্সকোডের পূর্ববর্তী সংস্করণগুলিতে বাগগুলি উপেক্ষা করে এটিকে ঘটতে পারে এমন 4 টি বিভিন্ন উপায় রয়েছে

  • আপনার প্রকল্পে $ (TARGET_NAME) নামে একটি ছাতা শিরোনাম নেই h
  • আপনার একটি ছাতা শিরোনাম রয়েছে তবে এটি সর্বজনীন হিসাবে সেট করা নেই। আর্টরিগ্রিগরের উত্তর দেখুন
  • DEFINES_MODULE সেট করা হয় না YES
  • CLANG_ENABLE_MODULES সেট করা হয় না YES

3
একটি সপ্তম কারণ যা আমি স্রেফ পেয়েছি: ছাতা_হেডার নিজেই কোনও লক্ষ্যে পরীক্ষা করা উচিত নয় (ঠিক যেমন তথ্য.পালিস্ট)
নেক্সেক্স

3
আমি এই তালিকায় সবকিছু সঠিকভাবে সেট করে রেখেছি, তবুও এটি ব্যর্থ হয়।
এরিক অাইগনার

25

Always Search User Pathsফ্রেমওয়ার্ক টার্গেটের জন্য সেটিংস সক্ষম করা থাকলে এটি ঘটবে ।

এটিকে সেট করা Noত্রুটিটি সমাধান করবে।

আইএমএইচও এটি সুইফ্ট কম্পাইলারের একটি বাগ এবং আমি অ্যাপলের সাথে একটি রাডার দিয়েছি। Rdar
দেখুন : // 21038443


1
ধন্যবাদ! এটিও আমাকে পেয়েছে।
ক্রিস হ্যাটন

এটি আমার পক্ষে কাজ করেছে। একটি অতিরিক্ত লক্ষণ হ'ল এটি পরিষ্কারের সাথে সাথেই ব্যর্থ হয়েছে, তবে আপনি যদি পরিষ্কার না করেই চেষ্টা করেন তবে সফল হয়েছেন।
বেন লেগিগেরো

18

আমার জন্য - অ্যাক্সেস স্তরটি সর্বজনীন ছিল তবে এটি ছাতার সাথেও ব্যর্থ হয় not আমি "বিল্ড পর্যায়" এর "শিরোলেখ" বিভাগটি শীর্ষে নিয়ে গিয়েছিলাম এবং এটি কাজ শুরু করে। পডফাইলে স্ক্রিপ্ট:

post_install do |installer|
installer.pods_project.targets.each do |target|
    phase_name = 'Headers'
    target.build_phases.each do |phase|
        if (phase.display_name.include? phase_name)
            target.build_phases.unshift(phase).uniq! unless target.build_phases.first == phase
        end
    end
end

কেন এটি হচ্ছে তা সম্পর্কে কোনও ধারণা নেই। ডামি প্রকল্পগুলির চেষ্টা করা - ঘটছে না। কেবলমাত্র একাধিক নির্ভরতা সহ বড়দের। ছাতা শিরোনাম অনুলিপি করার আগে কিছু সংকলন সহ


4
"সংকলন উত্স" উপরে "শীর্ষস্থানীয়" সরানো আমার পক্ষে কাজ করেছিল। xCode 8.2.1।
রব

শীর্ষে ফেজকে শীর্ষে স্থানান্তর করাও আমার পক্ষে কাজ করেছিল।
সেরেন মর্টেনসেন

অবৈধ Podfileফাইল: সিনট্যাক্স ত্রুটি, ইনপুটটির অপ্রত্যাশিত শেষ-কি-ওয়ার্ড প্রত্যাশা end
ভোলাডাইমির কুলিক

13

অবশ্যই আপনার কাঠামোটি সর্বজনীনতে সেট করতে হবে:

এখানে চিত্র বর্ণনা লিখুন


1
পুরোপুরি কাজ করে। অনেক ধন্যবাদ!
kkiermasz

সেই স্ক্রিনশটের প্রসঙ্গ কী? সেখানে যাওয়ার জন্য আপনি কী ক্লিক করেন?
pkamb

7

আমার জন্য 'NO' এ 'শিরোনামের মানচিত্র ব্যবহার করুন' সেট করার ফলে সমস্যাটি সমাধান হয়েছে


... এবং আমার ক্ষেত্রে এটি হ্যাঁ সেট করা সমস্যার সমাধান করেছে। দুর্ভাগ্যক্রমে এই সেটিংটিতে কোনও ডকুমেন্টেশন আছে বলে মনে হয় না, তবে হ্যাঁ ডিফল্ট এবং আমি নিশ্চিত নই কেন এটি আমার লক্ষ্যগুলির একটির জন্য কেন নির্ধারিত হয়নি।
রোবটস্পেসার

7

আরও একটি সমাধান: কোনও ফোল্ডারটির নাম পরিবর্তন করার পরে, Xcode এর সাইড-বারের মাধ্যমে আপনি অবস্থানটি আপডেট করলেও, পুরাতন অবস্থানটি .h ফাইলের জন্য প্রজেক্ট ফাইলে তালিকাভুক্ত হতে পারে। এই পুরানো অবস্থানটি ছাতা-শিরোনাম ত্রুটির কারণ করে।

সহজ সমাধান: .h ফাইলের রেফারেন্সটি সরিয়ে পুনরায় যুক্ত করুন। (এবং তারপরে এটি আবার প্রকাশ্যে আনার কথা মনে রাখবেন!)


5

আমি দেখতে পেলাম যে নতুন সুইফ্ট বিল্ড সিস্টেম এবং সমান্তরাল বিল্ডটি স্কিমটি চালু করার সাথে সাথে আমি এই প্রশ্নের মতো ত্রুটি পেয়ে যাব। সমাধানটি ছিল সুইফট উত্স ফাইলগুলিতে আমদানিকৃত ফ্রেমওয়ার্কগুলির সাথে লিঙ্ক করা। (আমি মনে করি এর আগে অ্যাপটি তৈরি হবে কারণ এটি কেবল ঘটেছিল যে ফ্রেমওয়ার্কগুলি সিরিয়াল বিল্ড কাতারে আগে নির্মিত কিছুটির সাথে সংযুক্ত ছিল)।

ওয়ার্কস্পেসের সমস্ত লক্ষ্যবস্তুতে সমস্ত আমদানির মধ্য দিয়ে যাওয়ার জন্য এবং স্ক্র্যাপগুলি সেই লক্ষ্যে যুক্ত করা হয়েছে তা নিশ্চিত করার জন্য আমি একটি স্ক্রিপ্ট লিখেছিলাম।

https://github.com/Jon889/SwiftImportChecker


4

ইতিমধ্যে এখানে কিছু দুর্দান্ত উত্তর রয়েছে। @ ছায়া_এক্স৯৯ খুব সাহায্যকারী ছিল। তবে, যদি আমার নিজের অভিজ্ঞতা দিয়ে পরিপূরক হতে দেওয়া যায়।

একটি ছাতা শিরোনাম বিল্ড প্রক্রিয়ায় স্বয়ংক্রিয়ভাবে চিহ্নিত করা হয়। এটি টার্গেটের বিল্ড সেটিংসে নির্দিষ্ট নয় বা প্রকল্প সেটিংস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত নয়।

সুতরাং এই ত্রুটিটি এড়ানোর জন্য - এক্সকোড 7 হিসাবে - নিম্নরূপ;

warning: no umbrella header found for target 'MyTarget', module map will not be generated

দুটি গুরুত্বপূর্ণ পদক্ষেপ নিতে হবে।

প্রথমত, ছাতা শিরোনামটির লক্ষ্য হিসাবে একই নাম থাকতে হবে । সুতরাং যদি আপনার টার্গেটটি একটি ফ্রেমওয়ার্ক নামযুক্ত হয় MyTargetতবে অবশ্যই একটি শিরোনামের নাম থাকতে হবে MyTarget.h

দ্বিতীয়ত, বিল্ড পর্যায়ের ক্ষেত্রে MyTarget- যেমনটি উত্তরে উল্লিখিত রয়েছে - উপরে বর্ণিত শিরোনাম ফাইলটি অবশ্যই জনসাধারণের বিভাগে তালিকাবদ্ধ থাকতে হবে ।


1

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

আমি "বিল্ড পর্যায়" এ "রান স্ক্রিপ্ট" যুক্ত করেছি তবে এটিকে সরিয়ে দিয়ে শেষ করেছি এবং এর পরে আমি ত্রুটি পেতে শুরু করেছি।

আমার সমাধানটি প্রকল্পটি পরিষ্কার করতে, আমার কাঠামোটি পুনর্নির্মাণ এবং তারপরে আমার অ্যাপ প্রকল্পটি সঠিকভাবে নির্মিত হয়েছে built


1

আমার অভিজ্ঞতায় আপনাকে লক্ষ্যমাত্রার ফ্রেমওয়ার্কটি বেছে নিতে হবে যা আপনাকে ত্রুটি দিচ্ছে, প্রকল্প লক্ষ্য নয়।
তারপরে সংকলন করুন এবং সংকলনের পরে এটি প্রকল্প টার্গেটে উপলভ্য হবে।


0

আপনি যদি এক্সকোড .1.১ এবং কোকোপডগুলি ০.০৯ ব্যবহার করছেন, এমন একটি সুইফ্ট সংকলক পরিবর্তন হতে পারে যা কিছু কোকোপডকে প্রভাবিত করে (নিম্বল, কুইক, ইত্যাদি) এই থ্রেডে নির্দিষ্ট কিছু সমাধান চেষ্টা করুন: https://github.com/ কোকোপডস / কোকোপডস / ইস্যু / 4420 তবে তাদের দু'টিই যদি কাজ না করে তবে এক্সকোড 7.0.1 বা 7.2 বিটা ব্যবহার করে দেখুন। আপনি উভয়ই এখানে পেতে পারেন: https://developer.apple.com/downloads/

সম্পাদনা করুন: আমার ক্ষেত্রে, সমস্যাটি সমাধান করতে, আমাকে কোকোপডগুলিও 0.38.2 এ নামিয়ে ফেলতে হয়েছিল।

পরবর্তী সম্পাদনা: এটি Xcode 7.1 এর সাথে সম্পর্কিত বলে মনে হচ্ছে না। কেবল কোকোপডগুলি 0.38.2 এ ডাউনগ্রেডিংয়ে সহায়তা করা উচিত:

sudo gem uninstall cocoapods -v 0.39
sudo gem install cocoapods -v 0.38.2

ধন্যবাদ @ মারিয়াস উরসাকে। আপনার নির্দেশাবলী অনুসরণ করে আমার জন্য সমস্যার সমাধান হয়েছে।
ভিক সুইফট

0

আপনার শিরোনাম ফাইলটি [বিল্ড পর্যায় / শিরোনাম / পাবলিক] বিভাগে থাকা দরকার।

যদি আপনার শিরোনামের ফাইলটি ইতিমধ্যে [পর্যায়গুলি / শিরোনামগুলি / জনসাধারণ] তৈরি করুন বিভাগে থাকে, তবে বহুবার ফলসিংটি করা আমার সমস্যার সমাধান করে:

  1. প্রকল্প পরিষ্কার
  2. "ব্যক্তিগত" বা "প্রকল্প" বিভাগে শিরোনাম ফাইলটি সরান
  3. হেডার ফাইলটি "পাবলিক" বিভাগে ফিরে যান
  4. আবার সবকিছু পুনর্নির্মাণ করুন

বাহ এই কেবলমাত্র এই কয়েক ডজন উত্তর থেকে এটি কাজ করেছে এবং মনে হয় এটি সম্ভবত সবচেয়ে কম হবে, ধন্যবাদ!
পাওলো

0

আমি আমার মডিউলটির নাম পরিবর্তন করে এটি সমাধান করেছি mod


0

আমার ক্ষেত্রে, আমি এটির স্কিম দিয়ে সুনির্দিষ্ট কাঠামো তৈরি করেছি। এবং তারপরে পুরো প্রকল্পটি পুনর্নির্মাণ করুন এবং এটি সমস্যার সমাধান করেছে


0

নিশ্চিত করুন যে বিল্ড সেটিংসে "পাথগুলি আমদানি করুন" এর মধ্যে আপনি যে ফাইলটি অন্তর্ভুক্ত করার চেষ্টা করছেন তা অন্তর্ভুক্ত রয়েছে ...


-1

প্রকল্পের ডিরেক্টরি থেকে এই ফাইলগুলি সরান। .xcworkspace pods/এবংpodfile.lock

শুঁটি আপডেট এবং প্রকল্প নির্মাণ।



-1

আমার ক্ষেত্রে সমস্যাটি বিল্ড পর্যায়গুলিতে শিরোনামের স্ক্রিপ্ট সরিয়ে দেওয়ার কারণে হয়েছিল

function removeHeaders() {  
    find $BUILD_ROOT/...  -name '*.h' -exec rm -f {} \;  
}  
removeHeaders

এই স্ক্রিপ্টটি মোছার ফলে সমস্যার সমাধান হয়েছে।


-2

9 টি উত্তরগুলির কোনওটিই আমাকে সহায়তা করেনি, তাই আমি একটি নতুন প্রকল্প তৈরি করার চেষ্টা করেছি যা আমি অ্যাপলকে বাগ ফাইল করতে পাঠাতে পারি। আমি অবাক হয়েছি যে আমি এই সমস্যাটি পুনরুত্পাদন করতে পারিনি। আমি বিল্ড সেটিংস পরীক্ষা করেছিলাম এবং সেগুলি সমতুল্য ছিল। স্পষ্টতই এটি এক ধরণের বাগ।

অন্য কিছু যদি সহায়তা না করে তবে একটি নতুন প্রকল্প তৈরি করার চেষ্টা করুন এবং আপনার বর্তমান প্রকল্প থেকে কমপক্ষে কয়েকটি উদ্দেশ্য সি এবং সুইফ্ট ক্লাস আমদানি করুন, আপনার কাঠামো-সম্পর্কিত বিল্ড সেটিংসকে নতুন প্রকল্প থেকে ডিফল্ট মানগুলির সাথে তুলনা করুন এবং শেষ পর্যন্ত সমস্ত ফাইলকে উপরের দিকে সরান নতুন প্রকল্প.


-2

আমি এটি নিয়ে একটি পুরো দিন ধরে কাজ করছি, তবে এটি মূল্যবান I আমি এখানে সমস্ত উপায়ে চেষ্টা করেছি , তবে আমি এটি সমাধান করি নি। আমি একটি নতুন প্রকল্প তৈরি করেছি, একটি পরীক্ষা করেছি এবং আমি জানতে পেরেছিলাম যে ব্যবহারকারী শিরোনাম অনুসন্ধানের পথটি $ {এসআরক্রট} রিকার্সিভ সেট করা হয়েছিল এবং আমি এটিকে $ {এসআরক্রট} নন-রিকারসিভে পরিণত করেছি , ব্রিজিং শিরোলেখের পথটি (যেমন #import "SVProgressHUD.h" -> #import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h") পরিবর্তন করেছি, ত্রুটি চলে গেছে।

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