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...
を選択します。
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.sendBroadcast
やTitanium.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.HTTPClientやTitanium.UI.WebViewの「Androidプラットフォーム実装の注意点」("Android Platform Implementation Notes")をご覧下さい。
超超高解像度の対応
480dpiという超高解像度の画像に対応しました。ファイル名の末尾に-xxhdpi
をつけるか、もしくはres-xxhdpi
フォルダに格納してください。
ListViewフェーズ2
次に挙げるListViewの機能が追加されています。詳細はListViewガイドとAPIリファレンスをご覧下さい。
- カスタムリスト・セクションヘッダ・フッタ
- カスタムRow選択
- 動的なアイテム読み込み
- 検索対応
Mapモジュール
ti.map
モジュールは以下の新APIに対応しました。
- Map.Annotation.showInfoWindowプロパティ:クリック時にannotationクリック時のView表示状態を表します。
- Map.View.longclickイベント:マップ内を長押しした際に発生します。
- Map.View.zOrderOnTopプロパティ:Window内のzOrderを設定します。
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ではNavigationWindow
やTab
内の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.SplitWindow
やTitanium.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
プロパティを使用することでシャドウ効果を追加することができるようになりました。。