ZXing on iOS 7.1 - ReDo

2014年5月25日

ZXing on iOS 7.1

iOS7.1.1(iPhone 5)+Xcode5.1.1環境でZXingを試してみました。ビルドエラーをとるのが若干手間なのと公式にはiOSに対応する気が無い様なのでForkしてしまいました。

ZXing for iOS isolated, available for iOS7.1+Xcode5.1
https://github.com/youten/zxing

ZXingはGoogleが作っている1D/2D barcode(バーコード・QRコード)読み取りライブラリです。
・iOS7では標準機能でバーコード・QRコードが読めるようになりました。簡単らしいので7 or laterではそれで良いかと。6.x-7.x向け(あと半年ぐらい?)には使う機会があるかもしれないね、ということで。
・ZXingとしてはiOS向けは"Available in previous releases"らしいです。つまり古いバージョンを掘り出す必要があります。
・GitHub移行前、iOS6時代の話についてはクラスメソッドさんの以下のページを参照。

iOSアプリ開発でZXing2.1を使ってQRコードを読み取る(2013.03.04)
http://dev.classmethod.jp/smartphone/iphone/ios-zxing21-qrcode-decode/

◯for iphone部分の過去commitからのサルベージ

現状のZXingリポジトリではiphone, cppフォルダごと消えてるらしいです。当時のコミットから掘り出す必要があります。ついでにiOS向け差分だけのリポジトリにしてしまいましょう。

git clone https://github.com/zxing/zxing.git
cd zxing
rm -rf *
git checkout 00f634024ceeee591f54e6984ea7dd666fab22ae {iphone,cpp}
git checkout HEAD {AUTHORS,CHANGES,COPYING,NOTICE,README.md,pom.xml}
vi README.md
git add -A .
git commit

◯ScanTest、Barcodesサンプルを動かす。

ZXingWidgetがライブラリ本体、BarcodesがApp Storeで公開されているアプリ、ScanTestがシンプルなデモらしいのでまずはシンプルなやつから。

・iphone/ScanTest/ScanTest.xcodeprojを開きます。
・ビルドするとZXingWidget ChecksumException.hがエラーになります。
http://stackoverflow.com/questions/22411565/build-error-on-ios-7-1-zxing を参考にWarnを潰します。
・ガリガリソース書き換えてもなんとかなります。ちょっとそれっぽいヘッダファイル用のdefineを追加することと、4カ所ほどのunused errorをコメントアウトしてやるだけです。
・Validate Project SettingsのWarnが気になるなら従ってPerform Changeを選択します。Snapshotはdisableでいいでしょう。
・ビルド成功、動きました。

・続けて、iphone/Barcodes/Barcodes.xcodeprojを開きます。
・ビルド成功、動きました。

(余談)Deployment Targetを下手に7.1とかにしてしまうとiOS5->6とiOS6->7時のdeprecated対応をちまちまとやる必要が出ます。そこまで難しいものはありませんでしたが手間でした。

コメントする