1

iPad と iPhone4 で動作するユニバーサル ビルドを作成したいと考えています。基本的に、これは高解像度のディスプレイ デバイスで実行されるゲームの「HD」ビルドです。

私の知る限り、iPad と iPhone4 はどちらも armv7 を実行しているため、armv6 と armv7 を選択しても意味がないようです。ただし、これはAppleが行うように指示していることです。これらの手順は iPhone4 が登場する前に作成されたものであることは承知しているので、iPad 3.2 および iPhone 4.0 のビルド手順を知っている人がいるか知りたいです。

これが SDK ドキュメントでカバーされている場合、申し訳ありませんが、見つかりません!

おまけとして、ビルドされている特定の SDK の定義を知りたいので、3.2 コンパイルを実行するときにエラーが発生しないようにコンパイル時のチェックを行うことができます。4.0 で現在存在する contentsScale と呼ばれるレイヤー クラスに特定のメンバーがあります。それらの一方または両方の定義の名前を知る必要があるだけです。(3.2 および 4.0)

本当にありがとう!

カイル

4

1 に答える 1

2

サポートしたいデバイスがアプリケーション内のiPhone4とiPadだけである場合、armv7に対してのみビルドできます。これにより、実行可能ファイルのサイズがわずかに減少します。ただし、 Info.plistarmv7のキーの下にあるリストに追加してUIRequiredDeviceCapabilities、AppStoreのリストでこれをarmv6デバイスにインストールできないようにする必要があります。ただし、iPhone4とiPadを許可しながら購入してarmv7iPhone3GSと第3世代iPodtouchで実行できないようにするのは難しいでしょう。

それ以外の場合は、他のユニバーサルアプリケーションと同じようにこのアプリケーションを作成します。iPhoneプロジェクトから始めてユニバーサルアプリケーションに変換するか、ユニバーサルアプリケーションテンプレートから始めることをお勧めします。

特定のメソッドが実行時に実装されているかどうかの検出は、そのメソッドを使用して実行できます-respondsToSelector:。たとえば、次のコードは-contentsScaleCALayerでの可用性をチェックし、ディスプレイのスケールと一致するようにレイヤーのスケールを調整します。

if ([self respondsToSelector:@selector(setContentsScale:)])
{
    Class screenClass = NSClassFromString(@"UIScreen");
    if ( screenClass != Nil)
    {
        id scale = [[screenClass mainScreen] valueForKey:@"scale"]; 
        [(id)self setValue:scale forKey:@"contentsScale"]; 
    }
}
于 2010-07-12T22:48:34.823 に答える