UX-Studioは、アプリを作るための直接的な開発方法を提供することではありません。従って、アプリは Android、iOSで提供する開発環境を使用して作る必要があり、一般的なアプリの開発手順に従ってください。
アプリ開発環境設定
Android
Android用アプリは、Eclipse、Android SDKを利用して開発し、その方法は一般的なアプリを作る方法と同じです。Eclipseと Android SDKをインストールするためのダウンロード及び説明を提供するGoogle Androidウェブページは、http://developer.android.com/sdk/installing.htmlです。Eclipse及び Android SDKは、最新バージョン最新版の更新サイクルが早いので上記のウェブページのリンクを使用して、最新の開発環境にインストールする必要があります。インストールの詳細については、Eclipse/ ADT/ Android SDKのバージョンが更新されるたびに少しずつ変更されるため、該当部分のご案内ウェブページを参照してください。
Android 開発環境は、基本的に次のような手順に進みます。
Eclipseインストール
ADT Pluginインストール
Android SDKインストール
iOS
iOS用アプリは、XCode、iOS SDKを利用して開発し、その方法は一般的なアプリを作る方法と同じです。XCode、iOS SDKは、Macでのみ駆動可能のため、最新バージョンの OS Xが搭載可能な Macが必要です。端末機で実行するためには Apple開発者アカウントが必須です。
iOS開発環境は基本的に次のような手順によって構成され、詳細は XCode/ iOS SDKバージョンがアップデートされるたびに少しずつ変更されるため、 該当部分のご案内ウェブページを参照してください。 (参照 : http://developer.apple.com/devcenter/ios/index.action )
Apple開発者アカウント生成
iOSは、テスト時にも開発者アカウントに登録された端末機でのみテストが可能です。従って、Androidとは異なり、配布時だけでなく、開発時にも、開発者アカウントが必ず必要です。iOS アプリの開発のためのAppleの開発者アカウントは、以下のウェブページで生成します。 http://developer.apple.com/devcenter/ios/index.action アカウント生成後、証明書生成(開発用/配布用)、テスト端末機登録、アプリIDの生成、プロビジョニング生成(開発用/配布用)を進める必要があります。 上記のウェブページで生成されたアカウントでログイン後、右側のiOS Developer ProgramでiOS Provisioning Portalに進入して、設定に必要な項目を確認して生成することができます。
証明書生成(開発用/配布用)
証明書は生成する Macに従属的に生成されます。開発用と配布用を別々に 生成する必要があります。 How Toタブの内容を従いながら進んでください。
テスト端末機登録
テスト端末機は、アカウントごとに100個まで登録することができ、開発者アカウント更新サイクルである1年になる前に追加した端末機を削除することができません。従って、必要な端末機を指定して登録する必要があります。How Toタブの手順に従って進みます。
App ID生成
App IDは、Appごとに一つずつ生成される必要があります。 How Toタブの手順に従って進みます。
プロビジョニング生成(開発用/配布用)
プロビジョニングとは、証明書、テスト端末機、App IDを繋ぐ機能です。開発用と配布用を別々に生成する必要があります。 How Toタブの手順に従って進みます。
開発環境 XCodeインストール
XCodeは、Apple開発者ウェブページまたは Mac AppStoreを利用してダウンロード/インストールすることができます。MacのOS X Snow Leopardでは、App Storeが基本的に搭載されています。 ここで XCodeをダウンロードしてインストールすることができます。
上記の Mac App Storeがなければ、OS Xを最新バージョンにアップデートする必要があります。OS Xソフトウェアアップデートは、画面の左上段のAppleのロゴの形のボタンをクリックすると、メニューから実行することができます。
Mac App Storeで、XCodeに検索し、インストールボタンをクリックすると XCodeと共に iOS SDKもインストールされます。
アプリプロジェクト開発
各 OSに合うアプリ開発ツールで、アプリプロジェクトを開発します。
Android
Eclipseで、下記のような手順によって Android用アプリプロジェクトを開発します。
アプリプロジェクトを生成します。
ProjectName : 生成するプロジェクト名を入力します。
Contents : “Create new project in workspace”
Build Target : Android 3.0にチェックします。
Application name : アプリケーション名を入力します。
Package name : ドメイン形のパッケージ名を入力します。
(例 : com.tobesoft.test)
Min SDK Version : 最小サポート SDK Versionで7を入力します。
(XPLATFORM Hybridは、Android 2.1からサポートし、Android 2.1の SDKレベルは7です。)
XPLATFORM.jarを参照するようにプロジェクトに追加します。
Resourceを追加します。
XPLATFORM Hybridのサポートのために必要なリソースを、次のようにプロジェクトに追加します。UX-Studioで生成された hybrid_typedef.xmlも追加される必要があります。
icon.png : アプリケーションのアイコンイメージです。
splashimage_phone_landscape.png : Android Phone Landscapeモード(画面の横)インストールイメージです。(全て小文字です。)
splashimage_phone_portrait.png : Android Phone Portraitモード(画面の縦)インストールイメージです。(全て小文字です。)
splashimage_pad_landscape.png : Android Tablet Landscapeモード(画面の横)インストールイメージです。(全て小文字です。)
splashimage_pad_portrait.png : Android Tablet Portraitモード(画面の縦)インストールイメージです。(全て小文字です。)
strings.xml : Applicationで使用するストリングリソースが定義されています。(Eclipseで Androidプロジェクトの生成時にデフォルトで生成されるファイルで酢。)
hybrid_typedef.xml : UX-Studioで生成された type definition xmlです。
生成された Activityが XPLATFORM Activityを継承するように修正して、インストールイメージとhybrid_typedef.xmlを指定するコードを挿入します。
package com.tobesoft.TestTobe; // [XPLATFORM] XPLATFORM Main Activity import import com.tobesoft.xplatform.loader.Main; import android.app.Activity; import android.os.Bundle; // [XPLATFORM] XPLATFORM Main Activity 상속 public class TestTobeActivity extends Main/*Activity*/ { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } }
Android Manifestを整理します。
XPLATFORM Hybridで動作する Activity、Receiverの設定のため Android Manifestの Applicationタグの中に下記の情報を入力します。
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:hardwareAccelerated="true"> <activity android:label="@string/app_name" android:name=".TestTobeActivity" android:configChanges="keyboardHidden|orientation" android:screenOrientation="sensor"> <activity android:name="com.tobesoft.xplatform.deviceAPI.CameraListener" android:screenOrientation="landscape"> <intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.tobesoft.xplatform.deviceAPI.SmsSend" > <intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.tobesoft.xplatform.deviceAPI.FileDialogActivity" android:screenOrientation="sensor"> <intent-filter> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.tobesoft.xplatform.deviceAPI.SmsRecv"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> <receiver android:name="com.tobesoft.xplatform.deviceAPI.SmsRecv"> <intent-filter> <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" /> <data android:mimeType="application/vnd.wap.mms-message" /> </intent-filter> </receiver>
XPLATFORM Hybridで提供する MobileAPIを使用するために、下記の permissionも Android Manifestに追加します。
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" />
iOS
XCodeで下記のような手順によって iOS用アプリプロジェクトを開発します。
アプリプロジェクトを生成します。
Fileメニューで New Projectを選択し、Empty Projectを生成します。
生成時に必須入力情報は次のようです。
Product Name : アプリケーション名を入力します。
Company Identifier : ドメイン形の会社の識別子を入力します。
(例 : com.tobesoft)
最終的に生成するフォルダを選択すると空のプロジェクトが生成されます。
XPLATFORM.frameworkを参照するようにプロジェクトに追加します。(iOS frameworkも追加)
XPLATFORM.frameworkは、drag & dropでプロジェクトに追加します。
iOS framwworkは MobileAPIの動作時に必要なので追加します。
iOS frameworkは、次のようにプロジェクトを選択し、XCodeの右側ビュー > Build Phrasesタブで Link Binary With Libraries項目を追加してください。
frameworkを全部追加すると、次のような構成になります。
インストールイメージを指定するためのイメージリソースを追加します。
インストールイメージの詳細は次のようです。
splashimage_phone_landscape.png : iPad Landscapeモード(画面の横)インストールイメージ
splashimage_phone_portrait.png : iPad Portraitモード(画面の縦)インストールイメージ
splashimage_pad_landscape : iPhone Landscapeモード(画面の横)インストールイメージ
splashimage_pad_portrait.png : iPhone Portraitモード(画面の縦)インストールイメージ
プロジェクトナビゲータでプロジェクトを選択すると、Summaryタブが表示されるが、その中でLaunch Images項目を検索して下記の図のようにインストールイメージを指定します。設定後、Defaultで始まるイメージが自動的に作成されますが、XCodeで自動的に生成して管理するため、名前を変更しないでください。
次は、自動的に適用されるデフォルトイメージの詳細です。
Default@2x : iPhoneデフォルトイメージ(自動生成)
Default-Landscape~ipad.png : iPad Landscapeデフォルトイメージ(自動生成)
Default-Portrait~ipad.png : iPad Portraitデフォルトイメージ(自動生成)
UX-Studioで生成されたhybrid_typedex.xmlファイルをプロジェクトのすぐ下のdataフォルダに追加します。hybrid_typedef.xmlファイルは、以下のように構成されています。(追加/1015)
<?xml version="1.0" encoding="utf-8"?> <TypeDefinition> <Update> <Item systemtype="XP-HybridApp" url="http://127.0.0.1:8080/hybridtest"> <Os type="default" url="./HBDeviceTest"> <Device type="all" url="./"> <Resource type="Theme" file="default.zip" targetpath="/_theme_"/> <Resource type="Engine" file="Component.zip" targetpath="/" /> <Resource type="Engine" file="Run.zip" targetpath="/" /> <Resource type="File" file="Arcive00.xzip" targetpath="/" /> </Device> </Os> <!-- <Os type="Android" url="./Android"> <Device type="default" url="./"> <Resource type="Theme" file="default.zip" targetpath="/" /> </Device> </Os> <Os type="IPhone" url="./IPhone"> <Device type="default" url="./"> <Resource type="Theme" file="default.zip" targetpath="/" /> </Device> </Os> --> </Item> </Update> </TypeDefinition>
プロジェクトを選択し、コンテキストメニューから「Add files to (project)」項目を選択して、dataフォルダを参照するように設定します。
下記のような手順でエラーメッセージを設定します。(追加/1015)
ローカライズ設定
[プロジェクト>Info>Localization]項目から「+」をクリックして必要な言語を追加します。ここではEnglish、Japanese、Koreanを追加しました。
エラーメッセージ処理ファイル作成
SupportingFilesフォルダを選択して、コンテキストメニューから[New File]を選択します。テンプレートファイル選択ウィンドウが開いたら、[OSX>Resource>Strings File]を選択し、ファイル名を「Localizable」として生成します。
SupportingFilesフォルダの下に「Localizable.stirngs」というファイルが生成された結果を確認し、該当ファイルを選択して、画面の右側の[Localization]領域にある「Localize」ボタンをクリックします。
[Localization]領域で、English、Japanese、Korean項目のチェックが活性化され、すべてチェックします。
各言語別「Localizable.strings」ファイルにエラーメッセージを追加します。エラーメッセージファイルは、配布されているXPLATFORMモジュールの[Engine>errordefile>iOS]にUTF8ファイル形式のテキストファイルとして提供されます。
生成された AppDelegateが XPLATFORM AppDelegateを継承するように修正します。
AppDelegate.h/mファイルを次のように修正して XPLATFORM.frameworkが動作できるようにします。
AppDelegate Header修正
XPlaform.frameworkの AppDelegateを継承するように修正し、自動生成された 不必要なコードは削除します。
#import <UIKit/UIKit.h> #import <XPlatform/XPlatformAppDelegate.h> // [XPLATFORM] @interface AppDelegate : XPlatformAppDelegate <UIApplicationDelegate> // クラス内部のコードは全て削除します。 @end
AppDelegate修正
XPLATFORM.frameworkの AppDelegateで、すべての delegateが処理されるように、AppDelegateに属した delegateで、すべての super classの delegateを呼び出せるようにします。(// [XPLATFORM]の部分はご注意してください。)
#import "AppDelegate.h" @implementation AppDelegate // クラス内部のコードは全て削除します。 @end
main.m 修正(追加/1015)
Supporting Filesフォルダの下位にあるmain.mファイルを下記のように修正します。
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); [pool release]; return retVal; }
プロジェクトの設定を整理します。
XPLATFORM.frameworkが使用するiOS frameworkにより、次の設定をBuild Settingsに追加する必要があります。
Other Linker Flags : -lxml2
Header Search Paths : /usr/include/libxml2
アプリ生成及び実行
Android
Android端末機を PCに USBで接続します。
Eclipseで Runを実行します。Eclipseの Runは APKを生成、及び端末機にインストールして実行までできる機能です。
次の図のようにポップアップメニューを利用して実行することもできます。
iOS
iOS端末機を Macに USBで接続します。
XCodeで Runを実行します。XCodeの Runは APKを生成、及び端末機にインストールして実行までできる機能です。