سؤال

لدي هذا المشروع الرئيسي من شأنها أن تولد مكتبة ثابتة (نسميها MySDK).لدي العنصر (نسميها Analytics) الخاص cocoapod.

لذلك أنا في نهاية المطاف مع بنية الملف من هذا القبيل:

+ MySDK
    - src
+ Pods
    + Pods
        - Analytics

كل مشروع له نفسه الاختبارات, ولكن الآن أنا بحاجة إلى القيام ببعض اختبار التكامل في Podfile يمكنني استخدام link_with, لكن كلما فعلت هذا حتى لا أستطيع الركض الأصلي الاختبارات لأنني الحصول على حفنة من duplicate symbol الأخطاء:

duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(Pods-dummy.o)
    /.../DerivedData/Build/Products/Release-iphonesimulator/libMySDK.a(Pods-dummy.o)
...
duplicate symbol _MYPREFIXFileTableIDColumnName in:
    /.../DerivedData/Build/Products/Release-iphonesimulator/libPods.a(MYPREFIXDatabaseConstants.o)
    /.../Build/Products/Release-iphonesimulator/libMySDK.a(MYPREFIXDatabaseConstants.o)

كل الأخطاء تأتي من بلدي Analytics المكون.جميع الملفات مما تسبب في مشكلة لديها ج وظائف (أنا التعامل مع sqlite مباشرة) و/أو (العالمي) الثوابت, أو هم فئات, لكن كلهم مسبوقة.

بلدي Podfile يبدو مثل هذا:

platform :ios, '7.0'
link_with ['MySDK', 'MySDKTests']
pod 'Analytics', '0.0.1'

بلدي podscpec على Analytics يبدو مثل هذا:

Pod::Spec.new do |s|
  s.name     = 'Analytics'
  s.version  = '0.0.1'
  s.platform = :ios
  s.summary  = "Analytics utility"
  s.homepage = 'http://google.com'
  s.author   = { 'Me' => 'me@me.com' }
  s.source   = { :git => 'https://github.com/Company/Analytics.git', :tag => '0.0.1' }
  s.source_files = 'Analytics/**/*.{h,m}'
  s.requires_arc = true
  s.ios.deployment_target = '6.0'
end

هل هناك سبب لماذا أنا على الحصول على هذه الأخطاء ؟ يجب تجميع هذه الملفات غير قوس أو استخدام بعض العلم ؟

أي أفكار

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

المحلول

وأخيرا حصلت على عمل!

أنا لا ينبغي أن يرتبط بي القرون إلى MySDKTests, لأن المنتج النهائي (MySDK, ومكتبة تم بالفعل ربط ضد Analytics).

ومع ذلك لم أضف التالي إلى بلدي podspec ملف:

  s.public_header_files = 'Analytics/**/*.h'

  s.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/Headers/Analytics"' }

السطر الثاني هو ليس من الضروري حقا لأنه ليس تعديل بلدي MySDKTests الهدف.وقد فعلت لإضافة HEADER_SEARCH_PATHS إلى MyDSKTests لجعل تلك الرؤوس المتاحة الاختبارات.

لقد قرأت أن بعض الناس استخدام بنجاح LIBRARY_SEARCH_PATHS بدلا من ذلك, ولكن هذا لم يكن العمل بالنسبة لي.إذا كان لأحد أن يفسر لماذا, هذا سيكون رائعا, ولكن الآن سأترك الحل هنا من أجل الآخرين في حال صادفت مشكلة مشابهة.

انظر هذا سؤال آخر للحصول على معلومات ذات صلة

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