为 iOS 和 OSX 开发 CocoaPod
Development CocoaPod for both iOS and OSX
我已经为 iOS 发布了一个 CocoaPod,我也想在 OS X 上使用它。我已经修复了我的 PodSpec,以便它可以同时用于 iOS 和 Mac OS X:
Pod::Spec.new do |s|
s.name = "EveryoneAPI"
s.version = "0.9.5"
s.summary = "An objective-c wrapper for EveryoneAPI.com's API"
s.description = <<-DESC
To retrieve all information for EveryoneAPI use the following:
EveryoneAPI *everyoneAPI = [[EveryoneAPI alloc] initWithAccountSID:@"ACb8444c3013dc40518e46b48c91f82ba0" withAuthToken:@"AUe90abecac85645ca8a314d41e9b55079"];
[everyoneAPI getInformation:EveryoneAPIReturnAllInfo forPhoneNumber:@"5551234567" withSuccessHandler:^(EveryoneAPIResponseObject *responseObject){
} withErrorHandler:^(NSError *error, NSNumber *statusCode, NSString *readableError){
}];
DESC
s.homepage = "https://github.com/msencenb/EveryoneAPI"
s.license = 'MIT'
s.author = { "Matt Sencenbaugh" => "my_email@gmail.com" }
s.source = { :git => "https://github.com/msencenb/EveryoneAPI.git", :tag => s.version.to_s }
s.ios.deployment_target = "8.0"
s.osx.deployment_target = "10.9"
s.requires_arc = true
s.source_files = 'Pod/Classes'
s.resource_bundles = {
'EveryoneAPI' => ['Pod/Assets/*.png']
}
end
这是一个仅使用 Foundation 类 的简单 pod,因此它不需要单独的资源。一切都很好,但是在 pod lib lint 期间我收到以下错误:
- NOTE | [OSX] error: /var/folders/yd/kfjb5s4d1vv57fv5lhtm9lbh0000gn/T/CocoaPods/Lint/build/Release/EveryoneAPI.bundle: No such file or directory
有点道理,我在 Xcode 开发部分的 EveryoneAPI.bundle 目标设置为创建一个 iOS 包。我这辈子都想不出如何让吊舱瞄准 OSX。有什么好的攻略吗?我要添加新目标吗?如果是这样,我如何告诉 podspec 寻找那个特定的包而不是 iOS 一个?
您可以添加
s.platform = :osx, '10.7'
s.platform = :ios, '6.0'
你的 Podspec
就像我建议的那样,你应该指定源文件以及你的 pod lint
错误是它没有找到源。
s.osx.source_files = "Classes/osx/**/*.{h,m}"
如果你的everyoneAPI是一个模块,你也可以这样添加:
s.osx.frameworks = 'everyoneAPI'
如果它是一个库,您可以这样添加它:
s.vendored_libraries = 'Vendor/everyoneAPI/everyoneAPI'
我已经为 iOS 发布了一个 CocoaPod,我也想在 OS X 上使用它。我已经修复了我的 PodSpec,以便它可以同时用于 iOS 和 Mac OS X:
Pod::Spec.new do |s|
s.name = "EveryoneAPI"
s.version = "0.9.5"
s.summary = "An objective-c wrapper for EveryoneAPI.com's API"
s.description = <<-DESC
To retrieve all information for EveryoneAPI use the following:
EveryoneAPI *everyoneAPI = [[EveryoneAPI alloc] initWithAccountSID:@"ACb8444c3013dc40518e46b48c91f82ba0" withAuthToken:@"AUe90abecac85645ca8a314d41e9b55079"];
[everyoneAPI getInformation:EveryoneAPIReturnAllInfo forPhoneNumber:@"5551234567" withSuccessHandler:^(EveryoneAPIResponseObject *responseObject){
} withErrorHandler:^(NSError *error, NSNumber *statusCode, NSString *readableError){
}];
DESC
s.homepage = "https://github.com/msencenb/EveryoneAPI"
s.license = 'MIT'
s.author = { "Matt Sencenbaugh" => "my_email@gmail.com" }
s.source = { :git => "https://github.com/msencenb/EveryoneAPI.git", :tag => s.version.to_s }
s.ios.deployment_target = "8.0"
s.osx.deployment_target = "10.9"
s.requires_arc = true
s.source_files = 'Pod/Classes'
s.resource_bundles = {
'EveryoneAPI' => ['Pod/Assets/*.png']
}
end
这是一个仅使用 Foundation 类 的简单 pod,因此它不需要单独的资源。一切都很好,但是在 pod lib lint 期间我收到以下错误:
- NOTE | [OSX] error: /var/folders/yd/kfjb5s4d1vv57fv5lhtm9lbh0000gn/T/CocoaPods/Lint/build/Release/EveryoneAPI.bundle: No such file or directory
有点道理,我在 Xcode 开发部分的 EveryoneAPI.bundle 目标设置为创建一个 iOS 包。我这辈子都想不出如何让吊舱瞄准 OSX。有什么好的攻略吗?我要添加新目标吗?如果是这样,我如何告诉 podspec 寻找那个特定的包而不是 iOS 一个?
您可以添加
s.platform = :osx, '10.7'
s.platform = :ios, '6.0'
你的 Podspec
就像我建议的那样,你应该指定源文件以及你的 pod lint
错误是它没有找到源。
s.osx.source_files = "Classes/osx/**/*.{h,m}"
如果你的everyoneAPI是一个模块,你也可以这样添加:
s.osx.frameworks = 'everyoneAPI'
如果它是一个库,您可以这样添加它:
s.vendored_libraries = 'Vendor/everyoneAPI/everyoneAPI'