SnowLeopard上に Titanium StudioのiOS5.1の開発環境を構築する
その実、環境をビルドするのに四苦八苦という意味でハマってしまっていました(苦笑)。
SnowLeopard で iOS5.1の開発をしたい、というまるで標準外なことをしようとしているのがそもそも問題なんですが、でも新しいMacを買う余裕は無いのです(すごく欲しいけれど)。
結局こんな感じで泥沼を脱出しました。苦節4日(笑)
今回作った環境は次の通り。(作り方は末尾の方に参考を書きました)
・OSX SnowLeopard 10.6.8
・Xcode 3.2.6 and iOS SDK 4.3 に Xcode 4.3.2(lion) のiOS SDK 5.1を追加
・Titanium SDK version: 2.0.1 (04/12/12 16:33 999c68a)
でも作っただけでは動かなくて。
エラーを排除するのに以下の作業が必要でした。
[出たエラー]
[ERROR] /Users/yasu/Documents/Titanium Studio Workspace/Kitchen Sink/build/iphone/Classes/NetworkModule.m:252:44: error: use of undeclared identifier 'UIRemoteNotificationTypeNewsstandContentAvailability'
[ERROR] /Users/yasu/Documents/Titanium Studio Workspace/Kitchen Sink/build/iphone/Classes/NetworkModule.m:304:33: error: use of undeclared identifier 'UIRemoteNotificationTypeNewsstandContentAvailability'
[ERROR] /Users/yasu/Documents/Titanium Studio Workspace/Kitchen Sink/build/iphone/Classes/TiDOMElementProxy.m:499:13: error: non-void method 'removeAttributeNode:' should return a value [-Wreturn-type]
[ERROR] /Users/yasu/Documents/Titanium Studio Workspace/Kitchen Sink/build/iphone/Classes/TiDOMElementProxy.m:515:9: error: non-void method 'removeAttributeNode:' should return a value [-Wreturn-type]
[ERROR] /Users/yasu/Documents/Titanium Studio Workspace/Kitchen Sink/build/iphone/Classes/TiDOMElementProxy.m:532:3: error: non-void method 'insertBefore:' should return a value [-Wreturn-type]
[ERROR] /Users/yasu/Documents/Titanium Studio Workspace/Kitchen Sink/build/iphone/Classes/TiDOMElementProxy.m:590:3: error: non-void method 'replaceChild:' should return a value [-Wreturn-type]
[ERROR] /Users/yasu/Documents/Titanium Studio Workspace/Kitchen Sink/build/iphone/Classes/TiAppiOSProxy.m:55:3: error: non-void method 'registerBackgroundService:' should return a value [-Wreturn-type]
このうち、一つ目と二つ目のNetworkModule.mに関するエラーは、
/Library/Application Support/Titanium/mobilesdk/osx/2.0.1.GA/iphone/Classes/ASI/ASIHTTPRequest.h
の39行目に以下のコードを追記して解決。
#ifndef __IPHONE_5_0
#define __IPHONE_5_0 50000
#endif
#ifndef __IPHONE_5_1
#define __IPHONE_5_1 50100
#endif
→参照 ■[Titanium Mobile]error: use of undeclared identifier 'UIRemoteNotificationTypeNewsstandContentAvailability と出るエラー #TitaniumJP (Titanium SDK 2.0.1.GA2) 18:09
三つ目以後のTiDOMElementProxy.mやらは、説明が長くなるので引用は省略しますが、
→参照 https://github.com/appcelerator/titanium_mobile/pull/2040/files
に沿って手修正して解決しました。(本当はpatchコマンドとか使うんですよねこれ、きっと)
参照URLで修正を指定されているファイルは全て、
/Library/Application Support/Titanium/mobilesdk/osx/2.0.1.GA/iphone/Classes/
にあります。
この場所にあるのはSDKの元ファイルで、各プロジェクトはこのファイルをコピーしてビルドされます。
なので一度エラーが出てからこれらの修正をする場合は、プロジェクトをCleanしてからリビルドしてください。
はー、やれやれ長かった。(4日でか!)
+++
そもそもSnowLeopardでiOS5.1の開発環境は動かない(開発環境がLion用だから)のですが、
Apple Developer Center に登録してみたら、SnowLeopard用のxcodeアーカイブ、
xcode_3.2.6_and_ios_sdk_4.3.dmg
と、Lion用の最新xcode
xcode_432_lion.dmg
が手に入ったので、これをXcode 4.2 for Snow LeopardにiOS5.1 SDKを入れるを参考にニコイチにした、というのが出発点です。
これに上記の修正を加えるとiOSシミュレータまでは動いたのを確認ずみ。
・・・・・・でも、実機に転送して動作させてみていません。動くんだろうな、え?(爆)
動いたとしてもAppStoreに登録出来るかどうかはさっぱりわかりません:-p
ライフログ的なモノ
今日から試してみます。
起動しなかった辞書+
iOS5.1にアップデートしたら起動後に初期化中のまま先に行かなくなっていました。
原因はiCloudの設定で、書類とデータの設定のうち、モバイルデータ通信をONにしていなったこと。
開発者さんにもメールしたり、バタバタしてしまいました。
iOS5.1にしてしばらく、電池のもちが悪くなったように思えたので設定をいじったんでした。
履歴か何か、ネットへ保存していたのですねぇ。
パワー!
技術は当たり前に企業クリエイターの方が上だけれど、ファン作品の方が見ていて楽しい。
これも「好きこそ物の上手なれ」ということなのでしょうか? 愛があふれているから?(^^;;
ま。
それはともかく…ミクサイコー!(爆)
ジョブズの功績
物を作ることは楽しい!
ということじゃないか。
ふと、思いました。
作って、それを使ってもらえたら、それは本当に楽しいよ?