query: tag:xcode

Xcodeのバージョンアップをしてから、/Developer ディレクトリがなくなり
/Applicationsの下に引っ越したようなので、
xcodebuildコマンドが動かなくなりました。

pre>>
Error: No developer directory found at /Developer. Run /usr/bin/xcode-select to up
date the developer directory path.
<<--

xcode-selectコマンドで新しい場所を教えて上げる必要があるようです。

pre>>
xcode-select -switch /Applications/Xcode.app
<<--

これでok.

posted by genki genki on Mon 27 Feb 2012 at 16:42 with 0 comments

どこが違うのか気になったのでメモ。
Window-based ApplicationをView-based Applicationと同じところまで持っていく作業を書き出してみます。

※ Xcode 4.1で動作確認しています。

###Window-based Applicationを作成

###RootViewControllerを作成
File - New - New FileでUIViewControllerテンプレートを選び、RootViewController(.h, .m, .xib)を作成する

###Interface Builderで作業
MainWindow.xibを開く
View - Utilities - Show Object Library を開いて、

  1. View ControllerをDrag & Drop

View - Utilities - Show Identity Inspector を開いて、

  1. 先にDropしたView Controllerを選択
  2. Custom ClassのClassをRootViewControllerに
  3. (LabelをRoot View Controllerに)

View - Utilities - Show Attributes Inspector を開いて、

  1. View ControllerのNIB NameをRootViewControllerに

View - Assistant Editor - Show Assistant Editor を開いて、

  1. AppDelegateクラス(h)を開く
  2. IB上でoptionキーを押しながらRoot View Controllerを選択、(hファイル上まで)DragしてInsert Outlet Connectionを追加(Name:viewController)

下記のようにコード生成されます:
rails>>
@interface RootViewControllerProtoAppDelegate : NSObject {
RootViewController *_viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *viewController;
<<--

###エディタでの作業
AppDelegateクラスのhで、@classを追加:
rails>>
@class RootViewController;
<<--

AppDelegateクラスのmで、#import、さらにself.viewControllerをself.window.rootViewControllerに
rails>>
#import "RootViewController.h"

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    // Override point for customization after application launch.
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
    }
    <<--

厳密に言うと、View-based ApplicationではviewControllerの宣言のされ方が若干違います。そこは各自確認下さいませ。。
作業をしてみてIB経由でクラスにViewController変数を追加するのはやったことなかったので、とても勉強になりました :)

posted by satoko satoko on Tue 6 Sep 2011 at 15:33 with 0 comments

アプリをアップロードしようとしたのですが、Xcode 3.2.5+SDK4.2のbuildで、Application Loader.app(Version 1.4 (92))でもdwarfdumpエラーが出ます:

The dwarfdump binary must exist and must be executable: /usr/bin/dwarfdump (-19036)

ネットを色々見たところ、Xcodeを再インストールなんていう解決策も見たのですが、それはちょっと…と思ったので、

iTunes ConnectのManage Your Applicationsの一番下段にあるドキュメント
Using Application Loader内に、Application Loader1.3へのdmgリンクがあったのでそれをインストール

https://itunesconnect.apple.com/apploader/ApplicationLoader_1.3.dmg

Application Loader
Version 1.3 (89)

Upload & 更新申請うまく行きました!
ちなみに、Xcode3.2.5についてくるApplication Loader.appのバージョンは下記でした:

Application Loader
Version 1.4 (92)

posted by satoko satoko on Mon 13 Dec 2010 at 03:16 with 1 comment

結末に驚いたのでメモ。

XcodeでBuild & Analyzeすると、下記のようなメッセージが出て困っていました。UILabelのインスタンスを返すような関数なのですが、ちゃんとautoreleaseして返しているのにも関わらず、です。

Object with +0 retain counts returned to caller where a +1 (owning) retaincount is expected

メモリ管理周りをググったり、stackoverflowをうろつくなりして色々調べること数時間、原因を突き止めました:

Object with +0 retain counts returned to caller where a +1 (owning) retaincount is expected - Stack Overflow
http://stackoverflow.com/questions/3553401/object-with-0-retain-counts-returned-to-caller-where-a-1-owning-retaincount-i

結局、コード自体は間違っていなくて、「関数名が良くない」ということでした。AppleのMemory Management Programming Guideには下記のような記述があります:

You “create” an object using a method whose name begins with “alloc” or “new” or contains “copy” (for example, alloc, newObject, or mutableCopy).

http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/MemoryMgmt/Articles/mmObjectOwnership.html#//apple_ref/doc/uid/20000043-SW1

[意訳] Objectを作成する際にはalloc, new, copyなどで始まる関数名を使う(例、alloc, newObject, mutableCopy)

コード内の関数名を書き換えて、解決!
(newで始まるだけではダメなのですね…)

rails>>
//NG
(UILabel *)newLabelWithPrimaryColor:(UIColor *)primaryColor;

//OK
(UILabel *)createLabelWithPrimaryColor:(UIColor *)primaryColor;
<<--

posted by satoko satoko on Wed 8 Dec 2010 at 00:22 with 0 comments

project.pbxprojファイル内に各ターゲットに対するSDKROOTが二つあって混乱したのですが、プロジェクトとターゲット、別々にSDKROOTを持つようです。

project.pbxproj内の下記のコメント部分辺りを読むと、別々に設定があることがわかります:

/* Build configuration list for PBXNativeTarget …
/* Build configuration list for PBXProject …

色々見ていると、各ターゲットの設定がプロジェクトより優先されるようなんですが、Appleの資料(詳細は下の資料の参考3を参照)を見ると、

ターゲットごとにSDKを指定することもできますが、そのようにすると、プロジェクト全体に作用するようなSDK設定を使用している他のXcodeの機能の処理が妨げられる可能性があります

ということが書いてあって、結局はSDKの設定はプロジェクトもターゲットも同じ方が間違いがないかなと思いました。

###資料
参考1:

1つのプロジェクトに複数のターゲットを持てるので、ターゲットごとに設定ができるようターゲットの設定が優先されます。全ターゲット(1つの場合も)同じ設定で良いなら、プロジェクトの方だけ設定すれば良いです。 [twicco.jp @tucitter ] posted at 23:15:29
http://twilog.org/iphone_dev_jp/date-090328

参考2:

結論としては、プロジェクトとターゲット、別々に設定できるんだね。
project.pbxprojを直接読んでやって発覚。
http://denrinken.tsbps.com/diary/2009-10.html#2009-10-12b

参考3:

SDK設定がビルドにどのように影響するか

Important: Xcodeにおいて、プロジェクトに対するSDKを選択すると(“「クロス開発のためのプロジェクトの設定」”を参照)、選択したSDKは、プロジェクト内のすべてのターゲットに適用されます(すべてのターゲットが、指定したSDKのヘッダとライブラリを使ってビルドされます)。ターゲットごとにSDKを指定することもできますが、そのようにすると、プロジェクト全体に作用するようなSDK設定を使用している他のXcodeの機能の処理が妨げられる可能性があります。(略)
http://developer.apple.com/jp/documentation/DeveloperTools/Conceptual/cross_development/HowItWorks/chapter_2_section_7.html#//apple_ref/doc/uid/20002001-1105070

posted by satoko satoko on Wed 8 Sep 2010 at 03:27 with 0 comments

Release設定で、Code Signing IdentityAutomatic Profile Selectorを設定していて、Buildすると上記のようなエラーが出る様です。
どうやら、アイコンサイズ(57x57)やらチェックしてくれるOptionらしい。

###Project SettingsのBuild OptionsでValidate Build Productをチェック
"Project - Edit Project Settings - Build - Configuration(Release)"内にあるBuild Optionsの項です。これでwarningは出なくなります。

詳細はこちらから:

Xcode 3.2.2 Validate Built Product - Blog - Use Your Loaf
http://useyourloaf.com/blog/2010/4/3/xcode-322-validate-built-product.html

posted by satoko satoko on Tue 13 Jul 2010 at 06:04 with 0 comments

tech-tips系なので久しぶりにこちら更新です:

"option-command-double click" で doc windowが出るようになったようです。

どうやら3.2系では以前からこうみたいです。最近、やっとSnow Leopardにしたので、やっとこの仕様になったのかも。

BTW - do you know if there is a way to instantly open the item in the docs window? Option-double click used to do this, now it opens the quick help view

Ah, option-command-double click!

http://www.iphonedevsdk.com/forum/iphone-sdk-tools-utilities/27625-xcode-3-2-bug-documentation-not-available.html

posted by satoko satoko on Tue 22 Jun 2010 at 03:41 with 0 comments

Trying to install my app to iPhone 2.2.1, but it fail with following message:
Cantinstallapp.jpg

The Info.plist for application at /Users/satoko/repos/ezPhotoMail/build/Debug-iphoneos/ezPhotoMail.app specifies a minimum OS version of 3.0, which is too hight to be installed on satoko の iPhone

###Check the Base SDK in target
If "Base SDK" is set to "iPhone Device 3.0", it could no be installed to iPhone 2.2.1 or former. But My target's "Base SDK" was OK.

###Two target, two Info.plist
Then suddenly my instincts tells me: Wait, there's another *.plist file for second target!

Well, there's two targets in this project: currently selected target's Base SDK is "iPhone Device 2.2.1" , the other one's is "iPhone Device 3.0".

Maybe that's the problem, I thought. Here's my action:

  1. I deleted below:
  • second-target
  • second-Info.plist(used in second-target)
  1. Then clean up caches:
  • Clear target
  • Close the project
  • delete build directory
  1. re-open the project and build/run with my iPhone 2.2.1...
  2. Voila! It worked!
posted by hibi hibi on Fri 19 Jun 2009 at 07:32 with 0 comments

こういう感じのメッセージが出ます(グレーで見にくいですが):
Picture 9.png
profile doesn't match any valid certificate/private key pair in the default keychain

###Keychain AccessでDefaultのkeychainを確認
Xcodeが検索するkeychainが、iPhone Developerの証明書が入っているkeychainと違っていることが原因が多いらしい(下記リンク)。
なのでKeychain Accessでデフォルトのkeychainをlogin(iPhone Developerの証明書が入っているkeychain)にする(私の場合は正しくなってました)

###その他試した事

  • iPhone Developer証明書を再発行
  • 新しいAppIDを用意
  • 新しいprovistioningを用意

これ全部やってもだめだった...

###iPhone SDK 3.0 GM SeedのXcodeを再インストール
次の日Xcodeを削除して、SDKを再度ダウンロード、インストールしてみました。→ まだ、同じメッセージがでます。
で、やったこと:

  • 再度iPhone Developer証明書を再発行して、Keychain Accessに
  • 使えなくなったprovisioningをModifiedで再度自分と動作確認に使うiPhoneを選択
  • Xcodeと3.0 GM SeedのiPhoneにprovisioningをインストール

正しく動作するようになった!! Yay!

posted by satoko satoko on Wed 17 Jun 2009 at 07:24 with 0 comments
posted by satoko satoko on Wed 17 Jun 2009 at 01:51 with 0 comments

Xcodeで開発しているiPhoneアプリをgitで管理する場合には、
以下のような
.gitignore
ファイルを使っています。

pre>>
.xcodeproj/.mode1v3
.xcodeproj/.pbxuser
build
.DS_Store
<<--

posted by genki genki on Wed 4 Mar 2009 at 18:34 with 0 comments

iPhoneアプリの開発をしていると、たまに、
Xcodeがプロビジョニングファイルを検出してくれなくて困ることがあります。
あれこれとやってるうちになんとか検出出来るようになるのですが、
これさえやれば100%大丈夫というような処方箋には未だ出会えずにいます。
とりあえず自分がよくやる事をメモしておきます。

  1. Xcodeのプロセスを全て終了して起動し直す
  2. オーガナイザを起動し、問題がありそうなプロビジョニングファイルを削除して入れ直す
  3. ~/Library/MobileDevice/Provisioning\ Profiles/の下を確認し、当該ファイルを削除してみる
  4. Macを再起動する
  5. iTunesも再起動する
  6. プロビジョニングファイルを削除してからiTunesにD&Dしてみる
  7. YourAppName.xcodeproj/project.pbxprojファイルをテキストエディタで開き、プロビジョニングファイルの指定を確認する

何かしらいろいろとやってるうちに問題は解決するのですが、
一度はまると小一時間ぐらい無駄にしてしまうので、
なんとか解決方法を確立したいですね。

posted by genki genki on Sun 16 Nov 2008 at 22:41 with 0 comments