2017-03-07 67 views
1

我想寫一個第三方SDK的pod,它是作爲一個靜態庫分發的。Cocoapods環繞一個靜態庫,沒有i386架構

我設法讓大部分工作。但是,我無法構建模擬器的窗格。看來我試圖包含的靜態庫不支持i386x86_64體系結構。

運行pod lib lint myPod.podsoec我得到:

- NOTE | [iOS] xcodebuild: ld: warning: ignoring file libMyLib.a, missing required architecture x86_64 in file libMyLib.a (3 slices) 
- NOTE | [iOS] xcodebuild: ld: warning: ignoring file libMyLib.a, missing required architecture i386 in file libMyLib.a (3 slices) 

我沒有訪問靜態庫的代碼。所以我不能添加缺少的體系結構。

我不需要在模擬器中使用lib的功能。但我不想失去將我的應用程序構建到模擬器的可能性。最終我需要在模擬器上運行單元測試。

有沒有辦法解決這個問題?

編輯

添加了podspec

Pod::Spec.new do |s| 
    s.name    = 'myPod' 
    s.version   = '0.1' 
    s.summary   = 'A basic wrapper around a Cool SDK.' 
    s.description  = <<-DESC 
    A basic wrapper around a Cool SDK. 

    A library for audio watermarking 
         DESC 

    s.homepage   = 'My HomePage' 
    s.license   = { :type => 'MIT', :file => 'LICENSE' } 
    s.author   = { 'Tiago Veloso' => '[email protected]' } 
    s.source   = { :git => 'myPrivateRepo', :tag => s.name.to_s + '-' + s.version.to_s } 
    s.platform   = :ios 

    s.ios.deployment_target = '8.0' 

    s.source_files   = 'Classes/**/*.{h,m}','include/*.h' 
    s.public_header_files = 'Classes/**/*.h','include/*.h' 
    s.ios.vendored_libraries = 'Vendored/libMyLib.a' 
    s.frameworks    = 'System Frameworks' 
end 
+0

你可以發佈你的Podspec嗎? –

+0

@SvenDriemecker我已經添加了podspec。但是我已經將lib的路徑和名稱匿名化了。 –

回答

1

沒有默認的方式來限制的CocoaPods architures。

選項1:使棉短絨忽略警告,並莢LIB皮棉--allow-警告成功

選項2:強制只構建莢非模擬器archs加入這你的podspec:

s.pod_target_xcconfig = { 'VALID_ARCHS' => 'arm64 armv7' } 

這不包括i386和x86_64,不應該被客戶端項目覆蓋。如果客戶端項目將覆蓋這一點,你也可以嘗試

s.user_target_xcconfig = { 'VALID_ARCHS' => 'arm64 armv7' } 

但是,這可能導致棉短絨不能夠編譯測試項目。

提醒:重寫VALID_ARCHS總是一個壞主意,如果你有足夠的理由這樣做,你應該只做這件事。沒有i386/x86_64切片的第三方自動取款機似乎就像一個在這裏。

有關更多信息,請參見podspec doc

+0

選項1不起作用。 –

+0

選項2我不知道它將如何與'lib lint'配合使用 –

+0

選項2對我來說確實有效。在'lib lint'和'repo push'謝謝 –