Titanium News

Appcelerator Titanium Mobileに関するニュースなどを淡々とお伝えしていきます。

Titanium SDK 3.2β版リリースノート 抄訳

Titanium SDK 3.2リリースノートの抄訳になります。(2013/11/27のβ版の内容を元にしています)

原文はこちらになりますので、あわせてご覧下さい。

3.2の概要

3.2.0では700項目を超える不具合修正と改良を行っています。個々の内容については一覧をご覧下さい。

Alloy 1.3

3.2.0のリリースと同時にAlloy 1.3がリリースされます。Alloy 1.3はTitanium SDK 3.2以降のみをサポートします。

新機能の概要は以下の通り。詳細はこちら

  • WidgetやRequire要素の子要素を持てるように
  • ListView、ListSection、TextField要素にプロパティが追加された
  • TSSファイル内でビット演算子がサポートされた
  • iOSのフリップアニメーションAPIに対応
  • Titanium Studio内にAlloyサンプル

Android 4.4・iOS 7.1のサポート

Android 4.4(KitKat)やiOS 7.1βについて、βレベルでのサポートが含まれています。

あとTizen 2.2にも対応するようです。

Studio 3.2

Titanium Studio 3.2はTitanium CLI 3.2以降が必要となります。

新機能の概要は以下の通り。詳細はこちら

  • 新しいプラットフォームのインストールと設定ウィザード
  • 起動時間を高速化するための非同期ログイン
  • 合理化された起動モード·インターフェースに接続されているデバイスの自動検出
  • ユーザインターフェイスの全面的な見直し
  • Mac OS X 10.9(Mavericks)をサポートするためのEclipse 3.7から4.3にアップグレード
  • GitHubのフォークをサポート

インストール方法

現状β版なのでSDKやTitanium Studioのインストールは通常手順と異なります。

CLIとAlloyについてはバージョン指定してnpmインストールしてください。

npm install -g titanium@3.2.0-beta
npm install -g alloy@1.3.0-beta

Titanium Studioについてはβ版のインストールを行うか、update urlをβ版に設定してください。

3.2での非互換となる変更についての注意点

Android環境について

Buildコマンド

CLIコマンドの刷新により、--device-idフラグによりアプリ実行対象となるエミュレータを選択できるようになりました。(一方で--avd-abi,--avd-id,--avd-skinは非推奨となりました)

キーストアパスワードを指定するための--passwordオプションは--store-passwordにリネームされていましたが、目的を明確化させるため--key-passwordという名称に変わりました。

tiapp.xmlで特段の指定していない場合、一番新しくインストールされたAndroid SDKをビルドに用いますが、次のようなコードを書くと明示的に使用するSDKを指定できます。

<android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
        <uses-sdk android:targetSdkVersion="16"/>
    </manifest>
</android>

CloudPushモジュール

Ti.cloudpushモジュールでのMQTTによるプッシュ通知はサポートされなくなりました。MQTTを用いたい場合はti.cloudpush.mqttモジュールをマーケットプレースから取得するか、もしくは3.2.0未満のバージョンを使用してください。

Fastdev

3.2.0以降、Fastdevについては非推奨となり、デフォルト設定では無効となりました。

Lightweight WindowからHeavyweight Windowへ

3.2.0以降、すべてのWindowはHeavyweightになります。Windowの種別はCreate時に選択できません。

性能を改善し、ウィンドウシステムを簡素化するために再設計を行いました。この性能向上の一環として、すべてのウィンドウがHeavyweightになりました。

3.2以前の動作にするためにはtiapp.xmlに次の行を追加します。

<property name="ti.android.useLegacyWindow" type="bool">true</property>

tiapp.xmlの設定

Android向けのtiapp.xmlの設定を2カ所変更しました。

ti.android.bug2373.finishfalserootプロパティのデフォルト値がtrueとなります。このプロパティは初回起動時、もしくはアップデート直後にアプリケーション再起動確認のダイアログを抑制するものです。従来の挙動にするにはこのプロパティをfalseに設定する必要があります。

<property name="ti.android.bug2373.finishfalseroot">false</property>

Androidマニュフェストセクションにある<tool-api-level>要素は非推奨となりました。

iOS

iOS 5.xサポート外に。

3.2以降、iOS 5はサポートされなくなります。

Titanium.UI.Titanium.UI.iPhone.NavigationGroupクラスも除去されました。

Ti.Map名前空間でのネイティブマップのサポートについて

従来のTitanium.Map名前空間ではiOSのネイティブマップはサポートされなくなりました。iOS7向けにti.mapアドオンモジュールが提供されています。挙動はほぼ同じですがaddRouteメソッドのみRouteオブジェクトを引き渡すよう変更する必要があります。

JavaScript Style Sheet (JSS)がサポート外となりました。

他の方法に切り替える必要があります。

Titanium Studio

外観などが色々変わっています。

App Explorer View

App Explorer Viewは非推奨になり、今後のバージョンで廃止されます。ProjectExplorer viewを代わりに使ってください。

起動モード

起動モードボタン(実行・デバック・配布等)が各Viewのツールバー部から除去されました。

代替方法は以下の通り。

  • Project Explorer viewにてプロジェクトを選択
  • グローバルツールバー内で起動モードと対象のデバイスをドロップダウンリストで選択。
  • 対象ドロップダウンリストにて自動起動オプションを有効にしている場合、アプリケーションは自動的に起動します。オフにしている場合は手動でビルドプロセスを実行する必要があります。
  • 起動設定画面を呼び出すには、起動モード選択後に<Launch> Configuration...を選択します。

f:id:donayama:20131130220143p:plain

Studioの更新

Studioの更新を確認する機構が他のTitaniumコンポーネントの更新とひとまとめになりました。HelpメニューからCheck for Titanium UpdatesもしくはCheck for Appcelerator Updatesを選択してください。

Titanium 3.2からの新機能

Android

アニメーションの改善

2D・3Dmatrix変換で多くのバグを修正しました。iOSに匹敵するパフォーマンスのため、新たなライブラリが組み込まれています。(TIMOB-11811)

既存のAPIに大しては追加や変更は加えられていません。

Broadcast Intents

BroadcastReceiverに対して受け渡しが行えるブロードキャストインテントの作成(Titanium.Android.createBroadcastIntentメソッド)ができるようになりました。作成したインスタンスはTitanium.Android.sendBroadcastTitanium.Android.sendBroadcastWithPermissionメソッドで操作できます。

sendBroadcastWithPermssionメソッドを使う場合、tiapp.xml内でマニュフェストの設定を変更する必要があります。

<android xmlns:android="http://schemas.android.com/apk/res/android">
    <manifest>
        <permission
            android:name="com.appcelerator.test.withPermission" />
        <uses-permission android:name="com.appcelerator.test.withPermission"/>
    </manifest>
</android>

ビルドコマンド

CLIは書き直され、数多くのバグ修正と改良を加えられました。

前述の非互換の変更での記載内容除けばこれまでのPythonスクリプトと同様に動作します。

主な改善点は以下の通り。

  • 特定のデバイス・エミュレータを指定するための--device-idオプション
  • ti info reportによりAVD情報が取得可能に
  • x86向け配布ビルドに対応
  • 開発用のキーストアで生成されたAPKを実行できるカスタムキーストアに対応
  • SDK/NDKの検出を改善した(サポート対象の一番古いSDKが不要になった)
  • ADBとAndroidエミュレータライブラリに対応

カメラの改良

デバイスのカメラに関する多くの問題が修正し、追加のAPI(Titanium.Media.availableCameras, Titanium.Media.hideCamera, Titanium.Media.switchCameraメソッド)に対応することによりiOSのみの対応であった機能差異を埋めています。

低解像度や横長な画像をオーバーレイに使用した際に画面回転時にクラッシュする不具合や撮影後にフォトギャラリーの最後の画像が表示されるもののキャプチャされない不具合が解消されました。

CloudPushモジュール

ti.cloudpushモジュールはグループ化された通知をサポートします。(バージョンナンバーをSDKに一致させました)

Cookie管理

Titanium.Network.CookieオブジェクトとTitanium.Networkメソッド群はWebView・HTTPClientのCookieストアとしてAndroidのシステムCookie領域を用いて管理するようになりました。

詳細についてはTitanium.Network.HTTPClientTitanium.UI.WebViewの「Androidプラットフォーム実装の注意点」("Android Platform Implementation Notes")をご覧下さい。

超超高解像度の対応

480dpiという超高解像度の画像に対応しました。ファイル名の末尾に-xxhdpiをつけるか、もしくはres-xxhdpiフォルダに格納してください。

ListViewフェーズ2

次に挙げるListViewの機能が追加されています。詳細はListViewガイドAPIリファレンスをご覧下さい。

  • カスタムリスト・セクションヘッダ・フッタ
  • カスタムRow選択
  • 動的なアイテム読み込み
  • 検索対応

Mapモジュール

ti.mapモジュールは以下の新APIに対応しました。

WebView設定

Titanium.UI.WebViewクラスは新たな2つの設定用プロパティを公開しました。

  • cacheModeプロパティ:キャッシュに関する設定。Titanium.UI.Android.WEBVIEW_〜という複数の定数が用意されています。
  • lightTouchEnabledプロパティ:マウスオーバーなどのユーザアクションに応答してリンクハイライトしたりするかどうかの制御。デフォルトでtrueに設定されていますが、この設定はAPI18以降には影響しません。

Cloud Module

ti.cloudモジュールにて次の新APIが追加されました。またバージョン番号もSDKに合わせて3.2.0としました。

  • Chats (remove, queryChatGroups)
  • Likes (create, remove)
  • Push通知 (query, queryChannels, showChannels)
  • Statuses (update, show, delete)
  • Users (resendConfirmation)

iOS

Attributed Strings

iOS6以降で対応している属性付き文字列(NSAttributedString)に対応しました。これにより文字や文字範囲に対して、フォントや文字間設定を設定できるようになります。

Titanium.UI.iOS.AttributedStringは次のようなプロパティとして設定されます。

  • Titanium.UI.Label.attributedString
  • Titanium.UI.TextArea.attributedString
  • Titanium.UI.TextField.attributedString
  • Titanium.UI.TextField.attributedHintText

詳細については属性付き文字列ガイドをご覧下さい。

デバイスへの直接的なビルド配布

USBケーブルでiOSデバイスを接続しているとき、iTunesを使用せずに開発しているiOSアプリケーションをデバイスに直接インストールすることができるようになりました。

Titanium Studio 3.2.0以降では次のように行います。

  • Project Explorer viewで対象となるプロジェクトを選択します。
  • グローバルツールバー内の起動モード選択ドロップダウンリストで"Run"を選択します。
  • 対象ドロップダウンリストで"iOS Device"を選択します。

CLI 3.2.0以降の場合は次のようにします。

ti build -p ios -T device -C <DEVICE_UDID> [-V "<DEVELOPER_CERTIFICATE_NAME>"  -P <PROVISIONING_PROFILE_UUID>]

パラメータを省略した場合、CLIは情報を要求してきます。

なお、従来どおりiTunes経由でアプリケーションをインストールすることも、Titanium Studio、CLIともにデバイス選択時に"itunes"を指定することで可能です。

Dynamic Animations

Titanium.UI.iOS.AnimatorオブジェクトはiOS 7以降に対応した物理エンジンを使用したアニメーション機能を提供します。

フォントスタイル

iOS7以降に対応したフォントオブジェクトの新しいプロパティ Font.textStyleが追加されました。このプロパティを設定すると他のFontプロパティは無視されます。

設定値としては次のような定数が用意されています。

  • Titanium.UI.TEXT_STYLE_BODY
  • Titanium.UI.TEXT_STYLE_CAPTION1
  • Titanium.UI.TEXT_STYLE_CAPTION2
  • Titanium.UI.TEXT_STYLE_FOOTNOTE
  • Titanium.UI.TEXT_STYLE_HEADLINE
  • Titanium.UI.TEXT_STYLE_SUBHEADLINE

iOS 7 Animated Transitions

iOS 7ではNavigationWindowTab内のWindow切替時に新たなアニメーション表現が導入されました。Titanium.UI.iOS.createTransitionAnimationメソッドで遷移アニメーションオブジェクトを作り、WindowのtransitionAnimationプロパティに設定することでWindow遷移時に使用されます。

iOS 7 バックグラウンドサービス

iOS 7からアプリケーションがバックグラウンド動作で大規模なコンテンツのダウンロードができるようにするための実行APIが追加されました。

  • URL session module:NSURLSessionのラッパーモジュール。バックグラウンドダウンロードタスクを作成し、ダウンロード状況を監視するための機能を提供します。
  • backgroundfetchイベント:iOSから不定期にアプリケーションを呼び出す際に発生するイベント
  • silentpushイベント:ダウンロード通知を行うためのプッシュ通知を監視するために使用します

詳細はiOSバックグラウンドサービスガイドをご覧下さい。

ListViewフェーズ2

次に挙げるListViewの機能が追加されています。詳細はListViewガイドAPIリファレンスをご覧下さい。

  • カスタムリスト・セクションヘッダ・フッタ
  • 動的なアイテム読み込み
  • ネイティブ編集対応
  • Pull-to-refresh対応
  • 検索対応

Mapモジュール

iOSネイティブマップをサポートし、3D視点での表示に対応します。詳細はAPIリファレンスをご覧下さい。

Popoverコンテンツ

Titanium.UI.iPad.PopoverクラスにcontentViewという新しいプロパティが追加されました。Popoverの表示前にコンテンツ領域としてViewオブジェクトを割り当てるために使用します。addメソッドの代わりに使用することが望ましい方法となっています。

このプロパティはTitanium.UI.iPad.SplitWindowTitanium.UI.TabGroupではサポートされていません。

Refreshコントロール

iOS 6以降にpull-to-refreshを実装するために用意されたコントロールTitanium.UI.RefreshControlが追加されました。

StoreKitモジュール

ti.storekitモジュールはiOS7のレシート検証システムとアプリ内決済に対応しています。シミュレータ上でテストできない点にご注意下さい。

Windowタイトル属性

Titanium.UI.Windowクラスに新しいプロパティtitleAttributesが追加されました。これによって色・フォント・シャドウを指定できるようになります。

Shadow Text Effect

これまでiOS専用プロパティでしたが、AndroidとモバイルWebプラットフォームでボタンのタイトルやラベルのテキストに対して、shadowColor,shadowOffset,shadowRadiusプロパティを使用することでシャドウ効果を追加することができるようになりました。。