• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
 
 

アプリをアップロードしようとしたのですが、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 Png satoko on Mon 13 Dec 2010 at 03:16 with 1 comment

Fast App Switch周りをガリガリやっていたら、@hkato193さんからメモリ警告絡みでアドバイスを頂きました。大変参考になったのでメモ。

http://twitter.com/hkato193/status/7972941820067840

@satoko ですので、メモリ警告が出てもデータ送信が継続できるようになっているか(ビューとかが捨てられるのは普通通りの対処でOK)、willTermiate(や時間切れハンドラ)で通信遮断やデータ送信失敗への対処が出来ているかがポイントです。Fri Nov 26 01:44:32 via YoruFukurou

つまり、Background突入時、ファイル送信などの処理をTask Completionでやる際に、

  1. メモリ警告で送信処理を中止しない
  2. 一方で、willTerminateやTask CompletionのExpirationHandler内で正しくキャンセル処理を行うこと:
    • 通信遮断
    • データ送信失敗への対処(送信データの保存など)
    • ユーザへの通知

Task Completionとは

Task Completion APIを使えば、Expiration handlerを使ってBackgroundで処理を行える:

   1  // WWDC 2010 Session 109 
   2  // Adopting Multitasking on iPhone OS, Part2 より引用
   3  self.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
   4  	[self prepareForSuspend];
   5  	[self pauseUpload];
   6  }];
   7  
   8  // returns after upload finishes or pauses 
   9  [self uploadPhotos];
  10  
  11  [app endBackgroundTask:self.bgTask];

詳細の書き方については、BlockやらGrand Central Dispatchを理解する必要がありそうなのですが、なんとなく次が見えた感じです。

posted by Png satoko on Thu 2 Dec 2010 at 15:39

s21gとしてはこれまで無料アプリを出していなかったのですが、 どのぐらいダウンロードされるものなのか調べてみたいという意味もあって、 ハンドミラーアプリを作ってみました。

m

ハンドミラー(iTunes Store)

  • 開発期間:コーディング10分、アイコン1時間
  • プロモーション:無し

以下が発売後のDL数の推移です。

graph

コンスタントに250〜300DLぐらいされてます。 日本が97%。他はほとんどなし。文字列はアプリ名ぐらいしか無いので 、国による差異は余り無いと思ったのですが、不思議ですね。

posted by Png genki on Mon 27 Sep 2010 at 18:12

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 Png satoko on Wed 8 Sep 2010 at 03:24

glGetError()がGL_INVALID_FRAMEBUFFER_OPERATION_OESを返した場合、 glCheckFramebufferStatusOES()で理由を確認できます。 返り値は以下のとおり。

   1  GL_FRAMEBUFFER_COMPLETE_OES                      0x8CD5
   2  GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES         0x8CD6
   3  GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7
   4  GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES         0x8CD9
   5  GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES            0x8CDA
   6  GL_FRAMEBUFFER_UNSUPPORTED_OES                   0x8CDD
   7  GL_FRAMEBUFFER_BINDING_OES                       0x8CA6
   8  GL_RENDERBUFFER_BINDING_OES                      0x8CA7
   9  GL_MAX_RENDERBUFFER_SIZE_OES                     0x84E8
  10  GL_INVALID_FRAMEBUFFER_OPERATION_OES             0x0506

posted by Png genki on Mon 2 Aug 2010 at 22:37

iPhoneアプリで凝ったアニメーションを作るとCALayerを多用するようになりますが、 いくつか現時点では欠けている点があるのでメモしておきます。

  • GLに比べて大分遅い。CALayerのレンダリングは内部的にGLを使っていないようですね。そのかわりアンチエイリアシングがキレイだったりします。
  • 3D transformがrenderInContextできない。ドキュメントでも少し触れられていますが、3Dのtransfromを設定しても renderInContextに反映されないです。
  • contentsをkey frameアニメーションさせる場合に、contentsの遅延読み込みが出来ない。そのため、イメージデータを全部メモリに読み込む必要があり、メモリ消費量が大きい。AVVideoCompositionCoreAnimationToolなどを使うときに困ることになります。

ちなみに、CALayerのcontentsプロパティは id 型の retain なんですが、CGImageRefを指定するとちゃんとCGImageRetainを呼んでいる様子。違和感があります。

posted by Png genki on Wed 28 Jul 2010 at 02:39

iPhoneをLandscape状態にしたときの寸法をメモしておきます。

  • ナビゲーションバーの高さ: 32px
  • statusbar height: 20px
  • バーを除いた高さ 268px
posted by Png genki on Mon 19 Jul 2010 at 20:07

iPhone開発アカウントをもう一個とろうとしてみたのですが、1法人につき1つまでという制限があるようです。

posted by Png genki on Tue 13 Jul 2010 at 18:36

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 Png satoko on Tue 13 Jul 2010 at 06:04

iPhone OS 4の対応をしていたら、小さなことにハマってしまったのでメモ。

iPhone SimulatorでiPhone4表示が小さい(320x480)

Hardware - Device - iPhone4にしたのに、普通のiPhoneと同じ大きさで混乱していたら、Window - Scale - 100%にしたらちゃんと640x960で見れました。

xCodeのBuild ResultsでCodeSignとProcessProductPackaging(embedded.mobileprovision)の詳細が見れない

各項目を右クリックExpand All Transcriptsで見る事ができます。

posted by Png satoko on Fri 2 Jul 2010 at 05:09