it-swarm.asia

Bir Cocoa Touch Framework oluştururken CocoaPod'ları kullanabilir miyim?

Alamofire'a bağımlı olacak yeni bir Cocoa Touch Framework (MyFramework.framework) oluşturuyorum. Bu çerçeve Swift dilinde yazılacaktır. Test olarak yeni bir Cocoa Touch Framework projesi başlattım:

File > New > Project > Framework & Library > Cocoa Touch Framework

Sonra, yaptığım terminalde:

pod init

bu projeler dizini altında. Yeni oluşturulan Podfile'de şunu ekledim:

source 'https://github.com/CocoaPods/Specs.git'
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
# Uncomment this line if you're using Swift
use_frameworks!

pod 'Alamofire', '~> 3.0'

Bir kez daha, yaptığım Terminalde:

pod install

ve kodlamaya başladı. 

MyFramework.framework Ürününü Tek Görüşlü Projede kullanana kadar her şey iyi ve iyi görünüyordu. Projeyi çalıştırmayı denediğimde aşağıdaki sorunu alıyorum: 

dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/87DA70B6-49BF-441E-BD81-F4A80B0792CF/data/Containers/Bundle/Application/2E414EA8-7E54-4D71-9295-566D4FAAADE2/test.app/Frameworks/MyFramework.framework/MyFramework
Reason: image not found

Cocoa Touch Framework projelerinin doğal olarak Dinamik olduğunu ve bu nedenle tüm bağımlılıkları içereceğini düşündüm. 

Birisi bana bunun neden olduğunu ve nasıl düzeltebileceğimi söyleyebilir mi? Bu CocoaPod'larla ilgili bir sorun mu yoksa bir şey mi eksik?

Yığın Taşması adında biri olduğum için benden daha fazla bilgiye ihtiyacınız olursa lütfen bana bildirin. 

Teşekkürler!

32
bneu

Ne yazık ki CocoaPods, Cocoa Touch Framework hedefi ile kullanımını desteklemiyor. GitHub'daki sorunlarını araştırırken buna birkaç referans buldum:

Pod'ları çerçeve hedeflerine entegre etmeyi gerçekten desteklemiyoruz ...
- neonichu üzerine 4 Kas 2015

ve

... bunun "sadece işe yaraması" için, CP'nin Xcode projenizdeki bağımlılıkların tekrarlı bir analizini yapması ve bir şekilde derleme ürününü hiçbir zaman başka bir bağlamda kullanmamanızı sağlaması gerekir.
- neonichu üzerinde 7 Tem 2015


Şimdiye kadar bu konuyla başa çıkmanın iki yolunu buldum:

Doğru yol, çerçeveniz için yeni bir kapsül spesifikasyonu oluşturmak ve bunu CocoaPods aracılığıyla ana projenize getirmek. Bu, CococaPods'un bağımlılık grafiği ile ilgili tüm sorunlarını çözer ve CocoaPods geliştiricilerinin önerdiği çözümdür.

Kolay yol ana projenize çerçevenizdeki baklaları dahil etmektir. Bu iş gibi görünüyor, ama açıkçası nedenini bilmiyorum. Test projemdeki Podfile:

platform :ios, '9.0'
use_frameworks!

def myfirstframework_pods
    pod 'Alamofire', '~> 3.0'
end

target 'MyApp' do
    pod 'SwiftKeychainWrapper', '~>1.0'
    myfirstframework_pods
end

target 'MyFirstFramework' do
    myfirstframework_pods
end
24
Dallas Edwards

Aşağıdaki gibi çerçevenin podspec'indeki Alamofire bağımlılığını eklemeyi deneyin 

Pod::Spec.new do |s|

# Other setup 

# Dependencies
s.dependency "Alamofire"
# Other dependencies if any
0
humblePilgrim