LoginSignup
1
0

More than 5 years have passed since last update.

iOS - Cordovaのtwitter-connect-pluginとCrashlyticsを併用して上手くいかなかった件

Last updated at Posted at 2017-08-03

Ionicのアプリ作成時に、twitter-connect-pluginを利用していて、最初通っていたビルドが、platformのrmとadd後に通らなくなってしまった。

開発環境は

Mac 10.12.5
Cordova 7.0.1
Ionic 3.5
Fabric.app 2.6.11
twitter-connect-plugin 0.6.0

ビルドは通るものの、実機でRunが出来ない。

Undefined symbols for architecture arm64:
  "_FABNetworkMaximumRetryCount", referenced from:
      ___51-[CLSBetaController loadUpdateWithCompletionBlock:]_block_invoke in Crashlytics(CLSBetaController.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Runするとこのようなエラーが出る。

問題になっていた(なっていなかった)経緯

色々問題の解決を試したあとに、あとで振り返ると原因となっていた経緯はこう。

  1. Crashlyticsの方を最初にインストール
  2. その後開発が進む中で"twitter-connect-plugin"をインストール
  3. この時点では問題ない
  4. iOSのプラットフォームを削除
  5. iOSのプラットフォームを追加・Ionic(Cordova)のビルド
  6. デスクトップアプリに従ってCrashlyticsの再登録、Run Scriptの登録・ビルド
  7. AppDelegate.m ファイルにCrashlyticsの記述を追加
  8. エラー

結局のところ問題だった箇所は2つ

1. Crashlyticsに提示されるAppDelegate.hの修正の内容

最初にCrashlyticsをインストールした時は、AppDelegate.mの修正内容はデスクトップアプリからこうしろと言われていた。

[Fabric with:@[[Crashlytics class]]];

依存関係からなのかなんなのか(詳しい人がいたら是非教えてください!)、経緯の6でCrashlyticsを再登録しようとしたときはこう言われる。

[Fabric with:@[[Twitter class], [Crashlytics class]]];

AppDelegate.mにはTwitterKitを読み込んでいないので、当然Twitterのところでエラーになる。
またTwitterKitを読み込んでも、キーとシークレットがないとエラーになる。

FabricがTwitter系のフレームワークを読み込んでると判断して、自動でTwitterの認証を初回に通すためにいれているのかな。
ここのところはちょっと詳しくわからなかったけど、前者のTwitterのない方で修正すると上手く通った。

ここらへんの、FabricとTwitterの依存関係は、FabricがGCPファミリーになるので修正されていって欲しい。

2. twitter-connect-pluginのファイルのバージョン

プラグインに含まれているFabric.frameworkのバージョンが昔のものだった。
経緯の3で問題なかったのは、Crashlytics導入時に最新版のframeworkファイルが既にXcode内に登録されていたため。
ビルド時にプラグインのファイルはコピーされなかった。

再ビルド時には、まだCrashlytics導入前だったため、プラグインのframeworkファイルがコピーされるので、8の箇所でエラーが発生。

下記の本家サイトからDLできるファイルを導入してあげると問題なくRunまでいった。

ということで、プルリクを投げてみている。
https://github.com/ManifestWebDesign/twitter-connect-plugin/pull/61

プルリク元のフォークしたリポジトリはこちら
https://github.com/donuzium/twitter-connect-plugin

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0