忘れちゃいそうなアレやコレをメモっておくサイト。



デバッグ

ビルド設定を追加する

開発終盤になってリリースビルドと同じビルド内容で調査したいときがでてくると思います。
  1. プロジェクトの設定を選択
  2. TARGETではなくPROJECTSを選択する。
  3. [Info]タブを選択すると[Configurations]にビルド構成があるので,ここで追加・削除する。

Releaseビルド構成をコピーして[Code Singning]のところを[iPhone Developer]に変えればリリースビルドの内容で実機テストできる。

Objctive-C内のメモリアクセス違反(EXEC_BAD_ACCESS)のとき

Instrumentsを使って調査する手がある。
ただしシミュレータでないと動作しないので注意が必要。

調査手順

リリースビルド時のNSLogを削除する


1. {ProjectName}_Prefix.pchファイルを開いて以下のコード追加

#ifdef NS_BLOCK_ASSERTIONS
#ifndef NSLog
#define NSLog( m, args... )
#endif
#else
#ifndef NSLog
#define NSLog( m, args... ) NSLog( m, ##args )
#endif
#endif

2. ターゲットのBuild SettingのPreprocessing
Enterprise, Release に NS_BLOCK_ASSERTIONS=1 追加


http://footmark.wordpress.com/2012/10/31/nslog-nsa...

メモリ管理

ARC

ARCはコンパイル時に自動でretain, releaseが追加される。

コードの記述には、以下の開発環境が必要。
  • Xcode4.2以降
  • Apple LLVM 3.0以降のコンパイラ
  • Max OS X 10.7以降

コードの実行には以下の環境が必要。
  • iOS 4.0以降
    ゼロ化弱参照にはiOS5.0以降が必要

弱参照

weakはiOS5.0以降でしか使えないため
iOS5.0未満のOSでは置き換えが必要。
weakunsafe_unretained (注意 : releaseされたときのゼロまたはnil初期化が行われない)
retainstrong
assign, unsafe_unretainedstrong

std::shared_ptrを使用する。

iOSでstd::shared_ptrを使用できるのはiOS5.0からとなる。

プロジェクトのBuild Settingsで以下の設定をする。
  1. C++ Language Dialectを「C+11[-std=c+11]」に変更
  2. C++ Standard Libraryを「libc++ (LLVM C++ standard library with C++11 support)」に変更
  3. iOS Development Targetを「iOS 5.0」(以降)に変更

使用したいファイルにて「#include <memory>」を追加。

ソースコード管理

gitにリモートを追加する

  1. [File] - [Source Control] - [Repogitrories...]を選択
  2. Organizer - Repogitories画面の左ペインから[Remotes]を選択
  3. 画面下の[Add Remote]を押す。
  4. [Remote Name]には任意(例:origin), [Location]には「git@*****.git」(*はそれぞれのサーバ側の設定に従って)を入力

パスワードは設定を求められるが設定せずにPushができた。
(gitコマンドで登録していたからかもしれない)

開発その他

AdMobバナーの追加

以下の公式ページで手順が書かれている。
ただし公式ページには書かれていないフレームワークも追加しないといけない。

Google公式ページ

AdMob6.3.0でビルドしたとき

(手順に書かれていないフレームワーク)
  • AdSupport
  • StoreKit

(手順に書かれているフレームワーク)
  • AudioToolbox
  • MessageUI
  • SystemConfiguration
  • CoreGraphics

frameworkはiOSのバージョンによっては存在しない。
そのため古いOSに対応するには「Optional」に設定しておく必要がある。

frameworとiOSバージョンの対応表


また以下の設定をする。

[Build Setting] - [Linking] - [Other Linker Flags]に「-ObjC」を追加する。

AdMob公式リンクの設定方法について
AdMobをObjective-C++で使用するときの注意
ファイル「GADAdSize.h」がC言語として定義されている。
このためObjective-C++(またはC++)のコードから利用しようとするとリンクエラーになってしまう。
これを解決するためには以下のようにAdMobのヘッダーファイルをC++側でも利用できるようにする。

extern "C"
{
    #import "GADBannerView.h"
}

これはファイル「GADAdSize.h」に定義されたC言語の関数を
C言語として利用するための設定。

もしこれを設定しないとC++の関数と見なされてシンボル名がマングリングされる。
このため静的ライブラリの関数とリンクしようとしても一致するシンボル名が見つからない為にリンクエラーになってしまう。

リンクエラーの内容としては以下のようなものになる。

Undefined symbols for architecture i386:
  "CGSizeFromGADAdSize(GADAdSize)", referenced from:
      -[ViewController viewDidLoad] in ViewController-815DF8D3D8FDE7A.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

アーキテクチャがi386なのはシミュレータ用のコードを生成するときのものであるため。


機器

機器名称解像度初期iOS ver.ver.画面比率
幅(px)高さ(px)3:2
iPhone3GS320480iPhone OS3.0iOS6.03:2
4640960iOS4iOS6.03:2
4S640960iOS5iOS6.03:2
56401136iOS6iOS6.016:9
iPadiPad7681024iPhone OS3.2iOS5.1.14:3
iPad27681024iOS4.3iOS6.04:3
iPad(3)15362048iOS5.1iOS6.04:3
iPad(4)15362048iOS6.0iOS6.04:3
iPad mini7681024iOS6.0iOS6.04:3
iPod touch2G320480iPhone OS2.2iOS4.2.13:2
3G320480iPhone OS3.1iOS5.1.13:2
4G640960iOS4.1iOS6.03:2
5G6401136iOS6.0iOS6.016:9
GalaxyS2(SC-02C)480800Android2.3.3Android4.0.315:9


iOS4.3に対応するときの最低解像度はiPod touch 3Gのw320 x h480 (2:3)になる。


xcodebuildでビルドする


参考ページ

プロジェクトファイルがあるフォルダまで移動する。

xcodebuild -showsdks

でコマンドの確認。

xcodebuild -list

configuration や targetを確認。

xcodebuild -configuration コンフィギュレーション名 -sdk SDK名 -target ターゲット名

スクリーンショットの大きさ

https://developer.apple.com/library/ios/documentat...
iPhone5640 x 1136
640 x 1096ステータスバーの高さ40pxを除いたもの。
1136 x 640
1136 x 600
iPhone4640 x 960
640 x 920
iPad1536x2048
1536x2008

iPadのRetinaを基点に作るとしたら...


<縦画面のとき>
機種名高さを合わせたときの幅センタリングするときのX値
iPhone41365 x 204885
iPhone51153 x 204885

アイコン

Inkscapeで角丸にするときの設定値 : 37% (iOS6)
Inkscapeで角丸にするときの設定値 : 45% (iOS8)

ビルド

Archiveファイルをビルドする


  1. 「iOS Device」または「実機」を選択する
  2. [Product] - [Archive]をクリックする。
  3. [Organizer]にビルドしたファイルがリストに表示される。
  4. ビルドしたArchiveを選択して[Validate]を押す。~リストのStatusが「Passed Validation」になる。
  5. [Distribute]でAppStoreに送信する。
  6. 「*.dSYM」「」ファイル


DerivedData/「プロジェクトの名前」/Build/Intermediates/ArchiveIntermediates/FindDifferences/BuildProductsPath/Release-iphoneos/*.dSYM
タグ
×

この広告は60日間更新がないwikiに表示されております。

フリーエリア

Menu

メニューサンプル1

メニューサンプル2

開くメニュー

閉じるメニュー

  • アイテム
  • アイテム
  • アイテム
【メニュー編集】

管理人のみ編集できます