スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SnowLeopard上に Titanium StudioのiOS5.1の開発環境を構築する

最近、iPhoneのソフトを作るのは案外簡単かもしれないと思って情報集めにハマっていたのですが、
その実、環境をビルドするのに四苦八苦という意味でハマってしまっていました(苦笑)。
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

スポンサーサイト

この記事のトラックバックURL

http://tagisuya.blog12.fc2.com/tb.php/375-ce08737e

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。