何時間も過ごした後、私はあなたの助けが絶対に必要です。
いくつかの作業を行うために、Spotify SDK (ここでは.framework ) と Deezer SDK (ここでは*.a lib )を含むポッドを作成したいと考えています。
どちらの SDK もObjective-Cで記述されており、ポッドをSwift 2 (iOS 8)で記述したいと考えています。また、このポッドを含むプロジェクトは Swift 2 (iOS 8) にあります。
でポッドプロジェクトを作成した後、ポッドプロジェクトに直接Spotify.frameworkpod create lib
を追加しようとしましたが、コンパイルできません...
そこで、podspec を作成して Spotify.framework をポッドのようにインクルードしようとしました。ここにspotify.podspec.jsonがあります。
{
"name": "FakeSpotify",
"version": "1.1",
"summary": "Spotify iOS SDK",
"homepage": "https://developer.spotify.com/technologies/spotify-ios-sdk/",
"license": "MIT",
"authors": {
"jjt": "jeanjaques@thierry.com"
},
"source": {
"git": "https://github.com/spotify/ios-sdk.git",
"tag": "beta-13"
},
"platforms": {
"ios": "8.0"
},
"requires_arc": true,
"preserve_paths": "Spotify.framework",
"public_header_files": "Spotify.framework/Versions/A/Headers/*.h",
"vendored_frameworks": "Spotify.framework",
"xcconfig": {
"OTHER_LDFLAGS": "-ObjC"
}
}
また、Podfileに次の行を追加しました。
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target 'SpoTest_Example', :exclusive => true do
pod 'SpoTest', :path => '../'
pod 'FakeSpotify', :podspec => './spotify.podspec.json'
end
target 'SpoTest_Tests', :exclusive => true do
pod 'SpoTest', :path => '../'
end
これで、 の後に、pod install
Spotify.framework を含むフォルダー "FakeSpotify" が作成されます。この部分は大丈夫ですが、十分ではありません。使用できません...
サンプルプロジェクトでも開発ポッドファイルでも (両方とも Swift で) Spotify をインポートできません。
#import <Spotify/Spotify.framework
アンブレラ ファイル (SpoTest-umbrella.h)に追加しようとしましたが、エラーが発生しました: Include of non-modular header inside framework module 'SpoTest'
.
自分自身といくつかの検索を行った後、この投稿スクリプトを追加してポッドファイルを編集しようとしました:
post_install do |installer|
installer.pods_project.build_configuration_list.build_configurations.each do |configuration|
configuration.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
end
end
同じエラーです。わかりました、どうすればいいですか?うーん、以前追加したアンブレラ ファイルのインポートを削除しようとして、ポッド podspec (SpoTest.podspec) を編集しました。私は「ああ、私は本当に悪いです。開発テストであっても、このポッドスペックに依存関係があることも伝える必要があります...」と叫びました。
だから私はこの美しい行を追加しました:s.dependency 'FakeSpotify'
私はとても幸せでした...そしてとても悲しいです:pod install
コマンドからの新しいエラー:
[!] The 'Pods-SpoTest_Example' target has transitive dependencies that include static binaries: (/Users/jjt/Documents/dev/ios/LIBS/SpoTest/Example/Pods/FakeSpotify/Spotify.framework)
ああ、とても近い!よし、何とかして対処しよう。インストール前のスクリプトを追加して、Podfile を編集しました。
pre_install do |installer|
# workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
def installer.verify_no_static_framework_transitive_dependencies; end
end
これでコマンドラインはOKで、インストールは完了です。しかし、私はまだそれを使用することはできません。フレームワークをアンブレラにインポートすると、まだエラーが発生します。
他にアイデアはありますか?私は現在、これ以上持っていません:)
それとも、ココアポッドなしでより良い方法がありますか? 私の目標は、これら 2 つの SDK を使用して何かを作成し、それを他のリアル プロジェクトに簡単に含めることです。
ありがとう。