AIR Native Extensions 利用時の最低動作 iOS バージョン設定について

MinimumOSVersion

ANE のおさらい

AIR 3 からサポートされたネイティブ拡張機能(AIR Native Extensions、以下 ANE)を使うことで、Mac/Win/iOS/Android などの OS 固有の機能にアクセスすることができます。ANE の利用方法や作成方法は ADCAdobe Developer Connection)でも解説されています。

ANE に関する日本語の ADC 記事

初めての人は、以下の順番で読むと分かり易いと思います。

すぐ試せる ANE ファイル

また、サンプルやコミュニティが開発した ANE ファイルも用意されていますので、すぐにトライしたい場合はこちらをどうぞ。

最低動作 iOS バージョン設定はできるのか?

さて、前置きが長くなりましたが、先日 iOS 向けに ANE を使った AIR アプリケーション開発をしている方から問い合わせがあった内容について一部共有しておきます。問い合わせの内容は、

「ANE 利用時に最低動作 iOS バージョンを設定できない」

結論から言うと、現状では AIR 開発ツール(AIR Development Tool、以下 ADT)の仕様の問題で簡単には実現できません。

通常、ANE で OS 固有の設定をする場合は、アプリケーション記述子(Application Descriptor)という XML ファイルに記述します。例えば、iPhone 固有の設定をしたい場合は、以下のようになります。

<iPhone>
  <InfoAdditions> 
      <![CDATA[ 
          <key>UIStatusBarStyle</key> 
          <string>UIStatusBarStyleBlackOpaque</string> 
          <key>UIRequiresPersistentWiFi</key> 
          <string>NO</string> 
      ]]> 
  </InfoAdditions>
</iPhone>

つまり、InfoAdditions エレメント内に設定すれば、iOS アプリケーションの設定ファイルである Info.plist 設定ファイルに追加したいキーと値のペアを指定できることになります。

しかし、現在の ADT の仕様で以下のキーは Application Descriptor に設定できません。(設定しても無視されます…)

  • CFBundleDisplayName
  • CFBundleExecutable
  • CFBundleIconFiles
  • CFBundleIdentifier
  • CFBundleInfoDictionaryVersion
  • CFBundlePackageType
  • CFBundleResourceSpecification
  • CFBundleShortVersionString
  • CFBundleSupportedPlatforms
  • CFBundleVersion
  • CTAutoOrients
  • CTInitialWindowTitle
  • CTInitialWindowVisible
  • DTPlatformName
  • DTSDKName
  • MinimumOSVersion
  • NSMainNibFile
  • UIInterfaceOrientation
  • UIStatusBarHidden
  • UISupportedInterfaceOrientations

残念ながら、このリストの中に「MinimumOSVersion」が含まれています。したがって、InfoAdditions エレメントを使う方法で iOS の最低動作バージョンを指定することは現状できません。

参考ページ

対応策

現時点での対応策は、Info.plist の直接編集しかありません。ここでは詳しい手順を書きませんが、以下の様な方法になります。

  1. とりあえず、ipaファイルを生成
  2. ipa ファイルから Info.plist ファイルを取り出す
  3. Info.plist ファイルを直接編集
  4. 再度、署名&パッケージ

かなり面倒な方法になりますが、確実な方法です。

なお、iOS のリンケージオプションファイルを使った方法でも最低動作 iOS バージョンの設定ができる記述がありますが、うまく行かないという報告を受けています。(自分ではまだ試してません。)

<platform xmlns="http://ns.adobe.com/air/extension/3.1"> 
    <description> 
        <text lang="en_US">An optional description.</text> 
    </description> 
    <copyright>2011 (optional)</copyright> 
    <sdkVersion>5.0.0</sdkVersion> 
    <linkerOptions> 
        <option>-ios_version_min 5.0</option> 
        <option>-framework Accelerate</option> 
         <option>-liconv</option> 
    </linkerOptions> 
</platform>

参考ページ

AIR 開発チームには、ADT の仕様変更をリクエストしていますので、何か動きがあれば追記したいと思います。

追記(2012/6/5)

ADTの仕様変更をリクエストしたところ、AIR チームが FIXしてくれました。AIR 3.3 から最低動作 iOS バージョンの設定が可能になる見込みです。ヨカッタヨカッタ。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。