酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

SVGKitをアップデートしたらLOG_LEVEL_VERBOSEの定義がなくてビルドができない

ikatomoは数多くのサードパーティー製のライブラリを使用しています。

ikatomoをSwift 3.0へアップデートさせようと考えました。しかし、ライブラリの多くはSwift 3.0対応中で現時点での移行は難しそうです。

となればikatomoの更新作業は放置でも良いのですが、iOS 10で通知センターの見た目が変わってしまったので早めに対応したいです(さくさんのお気持ち)。

そこでiOS 10 SDKを使うために比較的移行ハードルの低いSwift 2.3へ移行させようと考えました。それでもハマりポイントはいくつかありました。

他のソースコードも触ってのSwift 2.3対応を進めながらだったので、何が原因なのかすぐに特定できずSVGKitでハマってしまいました。

SVGKitを更新するとビルドが通らなくなってしまう

ギアパワーの画像の表示にはSVGKitを使用しています。ギアの画像はpngで、ギアパワーの画像はsvgですね。

Podfileには下記のように書いています。デフォルトの書き方ですね。

pod 'SVGKit'

この状態でpod updateして、プロジェクトをビルドすると以下のようなエラーが発生しました。

Use of undeclared identifier 'LOG_LEVEL_VERBOSE'

SVGKitが依存しているCocoaLumberjackが3.0.0にアップデートして、それが原因で定義があわなくなってしまったようです。ひとつ前の2.3.0であれば問題なくビルドが通ります。

有志がCocoaLumberjackを2.3.0で固定させる暫定対応がおこなわれていました。公式対応を待った方が良いと思いますが Podfile を下記のように書き換えればビルドを通すことができるようになります。

pod 'SVGKit', :git => 'https://github.com/BeamerCola/SVGKit.git', :branch => '2.x'

すでにIssueが立っていようですので、しばらく公式の対応を様子見しようと思います。

github.com