従って、UIWebviewを使用しているTwitter Kit3から、WKWebViewを使用しているTwitter Kit5への移行を実施する必要がある。
0. プロジェクトから、古いTwitterKitのライブラリを削除する。
1. Twitter Kit5のページを開く。
https://github.com/touren/twitter-kit-ios
2. 依存関係の設定を自動化させたい場合は、cocoaPodsまたは、Carthageを使用して、インストールする。
ターミナルで入力するcocoaPodsのコマンド
pod install --repo-update
3. マニュアル操作でのインストールは、5.1.0まではサポートされていたが、5.2.0以降は公式にサポートしない旨のアナウンスがなされているので、cocoaPodsまたは、Carthageを使用すること。
4. cocoaPodsによるインストール時の注意事項
公式ページではPodfileにTwitterkItをインストールするように記述がなされていが、この場合だとTwitter社が提供している既にサポートを終了しているTwitterKitがインストールされてしまうので、TwitterKit5に置き換えること。
target 'MyApp' do
use_frameworks!
pod 'TwitterKit5'
end
5. ビルド時に、
Framework not found Pods_*****と表示されている場合は、下記を実施する。
(1) Build SettingsのOther Linker Flagsに、
$(inherited)を追加する。
(2) Build Settingsの Build Active Architecture OnlyをTargetsとPodとで統一する。
参考記事:
https://qiita.com/sussan0416/items/0a78042261ca3f0a7d91
https://qiita.com/yimajo/items/df7264d7dcc78a57a75d
(3) Frameworksフォルダで赤字表示されている、"Pod.framework"を削除する。
参考記事:
https://stackoverflow.com/questions/31139534/pod-error-in-xcode-id-framework-not-found-pods
6. ビルド時に、
Private submodule 'TwitterCore.Private' in private module map, expected top-level moduleと表示されている場合。
警告表示に従い、提案されたFixを実施する。
修正前:
explicit module TwitterCore.Private {
}
修正後:
framework module TwitterCore_Private {
}
7. ビルド時に、
/と表示されている場合。:1:1: Umbrella header for module 'TwitterCore' does not include header 'TWTRColorUtil.h'
対策は下記の参考記事を参照。
参考記事:
https://github.com/twitter-archive/twitter-kit-ios/issues/77
https://github.com/twitter-archive/twitter-kit-ios/issues/95
8. ビルド時に、
'TwitterKit/TWTRKit.h' file not foundと表示されている場合。
(1) TARGETSのBuild SettingsのFramework Search Pathsに、下記の2つのpathを設定する。
$(inherited)
$(PROJECT_DIR)
(2) Build & SettingsのUser-DefinedにPodsの各項目が設定されていることを確認する。項目が無ければ追加する。
PODS_BUILD_DIR : ${BUILD_DIR}
PODS_CONFIGURATION_BUILD_DIR : ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
PODS_PODFILE_DIR_PATH : ${SRCROOT}/.
PODS_ROOT : ${SRCROOT}/Pods
(3) PROJECTのinfoタブにおいて、ConfigurationsでNoneとなっている項目があれば設定する。
Pods-(プロジェクト名).debug
Pods-(プロジェクト名).release
Pods-(プロジェクト名).destribution
参考記事:
https://qiita.com/Takumi_Mori/items/42a5c993041dbbc86f85
9. 実行時にコンソールログに下記のような警告が大量に表示される場合。
objc[465]: Class TWTRUserAuthRequestSigner is implemented in both /hoge.app/Frameworks/TwitterKit.framework/TwitterKit (0x102138220) and /hoge.app/Frameworks/TwitterCore.framework/TwitterCore (0x101ded2a0). One of the two will be used. Which one is undefined.
上記のメッセージが表示された場合においても、操作上の不都合は発生しない。
対策は下記の参考記事を参照。
参考記事:
https://github.com/twitter-archive/twitter-kit-ios/issues/18
https://github.com/twitter-archive/twitter-kit-ios/issues/91
https://github.com/touren/twitter-kit-ios/issues/6
10. ビルド時に、
Double-quoted include "TWTRDefines.h" in framework header, expected angle-bracketed insteadなどと表示される場合は、下記の設定を実施する。
(1) 自分のアプリのTargets-> Build Setting -> Quoted include in Framework Header をNOに変更する。
(2) Pods -> Project -> Build Setting -> Quoted include in Framework Header をNOに変更する。
参考記事:
https://qiita.com/kokogento/items/8e420a5d85a419216c68
https://qiita.com/nitakan/items/b024aac6d661f9e4f872
https://developer.apple.com/forums/thread/651941?answerId=617655022#617655022
11. 実行時に、下記のエラーメッセージがコンソールログに表示されてクラッシュした場合。
dyld: Library not loaded: @rpath/TwitterCore.framework/TwitterCore
Reason: image not found
(1) TARGETSのGeneral -> Frameworks, Libraries, and Embedded Contentに下記frameworkを追加する。
Pods_(プロジェクト名).framework
(2) 上記8.(3) を実施する。
(3) TARGETSのBuild PhasesにPodsに関係する下記のRun Scriptを確認し、無ければ追加する。
[CP] Embed Pods Frameworks
[CP] Check Pods Manifest.lock
[CP] Copy Pods Resources
CocoaPodsによりライブラリをインストールした場合、通常であれば自動的に追加されるが、何らかの要因でこれらの項目も含め、上記(1)及び8.(2)(3)が追加されない場合がある。
通常は追加されるので、正常に追加されているプロジェクトを参考にして追加する。
参考記事:
https://qiita.com/yamatatsu10969/items/1a9ab6cf38e2d2e7a79b
【Twitterの最新記事】