Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2020年07月23日

UiWebView Deprecatedに対応した、Twitter Kit5の導入



Appleは、2020年12月以降、UIWebviewを含むバイナリのアプリの更新を受け付けないこととした。
従って、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


posted by mobileDeveloper at 16:02 | Comment(0) | Twitter はてなブックマーク - UiWebView Deprecatedに対応した、Twitter Kit5の導入 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。