「Android Bazaar and Conference 2013 Spring」へ出展してきました!

こんにちは。アスカ・クリエイション 大関敦です。

先日の3/15,16に開催された「Android Bazaar and Conference 2013 Spring」へ出展してきました!

場所は明星大学の日野キャンパスです。

たくさんの方々にブースへ来て頂き、おかげさまで大盛況(?)となりました。

ご来場頂いた皆様、大変有り難う御座いました!!

当日のブース風景をご紹介します。

DSC_0115

2013-03-15_11-26-30_156

ブースの全体風景です。

2013-03-15_11-26-57_757

2013-03-15_11-27-10_205

3台のカメラをAndroidへ繋いだ多眼カメラ on Android。

SAMSUNG

取材もあり、後日放映されるみたいです!!

他にも

・画像認識によるコンテンツ表示アプリ(AR)

・6軸センサー(角速度x,y,zと重力加速度x,y,z)によるヘッドスピード計測アプリ

など展示しました!!

ただ、いい写真が無く今回はご紹介はできていませんが。。。

 

次回は「スマートフォンアプリEXPO2013」への出展を予定しています。

今回展示したものをブラッシュアップして展示予定です!!

6軸センサー?多眼カメラ?って何だろうと思った方は是非ご来場ください。

Share

Tizenパッケージビルド奮闘中!(ビルド環境構築手順)

お久しぶりです。研究開発チームの千原です。
Tizen2.0 Magnoliaが先日リリースされました!
Magnoliaはモクレン(属)ですね。
Tizen1.0 Larkspurは飛燕草。
どうやら植物で攻めるようです。
次はABC順だとNなので、Nymphaeaのスイレン(属)とか?発音しにくい・・・

少し脱線してしまいましたが、現在Tizenの実動作環境を作るためにパッケージのビルドに奮闘中であります。
なかなか簡単にビルドが通らず(エラーが連発)、ゴールも見えず・・・

今回はビルド環境の構築手順についてまとめようと思います。
環境は引き続きUbuntu12.10です。

手順については、公式ヘルプページのPlatform Development Environmentを参考にしました。

 

01. 事前準備
Tizenのソースを取得するにはアカウントが必要になります。右上のREGISTERボタンから登録しましょう!
tizen_source_page

次にgerritアクセスし、作成したアカウントでログインしましょう。ログインすると次の画面になります。
tizen_gerrit_page

Gerritで行うことはアカウント情報の設定と、SSHキーの登録の2つです。

右上のSettingsからContact Informationを選択し、Full Nameを入力します。
Register New Email …を押してアカウント作成で登録したEmailアドレスを入力します。認証メールが届くので、メールに記載されたURLにアクセスすると認証完了です。
tizen_gerrit_contact

次にSSHキーの登録を行います。
まずはUbuntu上でSSHキーを作成します。<Full Name>と<Email>は上で設定したものを入力です。

ssh-keygen -t rsa -C “<Full Name> <Email>”

例: ssh-keygen -t rsa -C “Hiroyuki Chihara chihara@a-creation.jp”

~/.ssh/id_rsa.pub が生成されていれば、成功です。
~/.ssh/configを作成して以下の情報を記載します。

vi ~/.ssh/config
Host review.tizen.org
Hostname review.tizen.org
IdentityFile ~/.ssh/id_rsa
User chihara
Port 29418

Userにはアカウント名を記載します。

再びGerritに戻り、右上のSettingsからSSH Public Keysを選択します。
tizen_gerrit_sshkey

~/.ssh/id_rsa.pubの内容を丸ごとコピペしてAddを押します。

次のコマンドを実行してgitの設定を行います。<Full Name>と<Email>はGerritで設定したものを入力です。

git config --global user.name “<Full Name>”
git config --global user.email “<Email>”

ここまで設定するとsshでアクセスできるようになっています。

接続確認は以下のコマンドでできます。

ssh review.tizen.org

準備完了です!

 

02. ツールのインストール
環境構築に必要なツールをUbuntuにインストールするので、まず、Tizenのダウンロードサイトをリポジトリに追加します。

sudo apt-add-repository “deb http://download.tizen.org/tools/latest-release/Ubuntu_12.10/ /”
sudo apt-get update
sudo apt-get install gbs mic curl

gbsをインストールした後、buildを入れ直す必要があるようなので、以下の手順で再インストールします。

sudo dpkg -r --force-depends build
sudo apt-get update
sudo apt-get install build

 

03. パッケージ情報の取得
ソースを落とすにも、ビルドをするにもパッケージ名が分からないと何もできないので・・・
次のコマンドでManifestを落としてきます。
何かに使ったりはしていません。パッケージ名を知るために取得しているので、パッケージ名分かるよって方は不要かも。

git clone git://gitorious.org/tizen-toys/tizen-manifest.git

toysさんが公開されているManifestを参照しました。
ただ、リポジトリの構成が頻繁に変わったりするようなので、100%信用できないようです・・・
作ろうとしている環境が車載向けでは無いので、ivi系は要らないような気がします!
04. 参照リポジトリの設定
一度gbs buildを実行すると~/.gbs.confが作成されますので、内容を編集します。

gbs build
vi ~/.gbs.conf
[general]
tmpdir = /var/tmp
[build]
build_cmd = /usr/bin/build
build_root = /var/tmp/build-root-gbs
su-wrapper = sudo
distconf = /usr/share/gbs/tizen-1.0.conf
; optional, repos definitions
repo1.url = https://download.tizen.org/releases/latest/2.0/repos/main/armv7l/packages/
repo1.user =
repo1.passwdx =
; one more repo
repo2.url = https://download.tizen.org/releases/latest/2.0/repos/main/armv7l/packages/
repo2.user =
repo2.passwdx =

 

05. リポジトリの取得
Manifestの中にパッケージ名が書いてありますので、その名前を使ってソースを取得します。
今回はブラウザを取得してビルドを試してみます。
ブラウザのパッケージ名はapps/web/browserです。

git clone review.tizen.org:apps/web/browser apps/web/browser

git clone [package] [output-path]で指定します。
[output-path]を指定しないときは、カレントにディレクトリを作って放り込まれます。

 

06. パッケージビルド
ビルドはgbsを使います。

gbs build -A armv7l apps/web/browser

リポジトリとなんやかんや通信しつつビルドが始まります。

が!

どうもうまくいきません・・・
たくさんのパッケージがlibblkid.soというライブラリの参照しているバージョンが食い違っているという内容のエラーで失敗してしまいます。

info: generate repositories ...
info: build conf has been downloaded at:
    /var/tmp/chihara-gbs/tizen2.0.conf
info: start building packages from: /home/chihara/tmp/apps/web/browser (git)
info: prepare sources...
info: retrieving repo metadata...
info: parsing package data...
info: building repo metadata ...
info: package dependency resolving ...
info: next pass:
org.tizen.browser
info: *** [1/1] building org.tizen.browser-0.0.1-1 armv7l tizen2.0 (worker: 0) ***
--repository /home/chihara/GBS-ROOT/local/repos/tizen2.0/armv7l/RPMS --repository http://download.tizen.org/releases/latest/2.0/repos/main/armv7l/packages --repository http://download.tizen.org/releases/latest/2.0/repos/base/armv7l/packages
logging output to /home/chihara/GBS-ROOT/local/scratch.armv7l.0/.build.log...
[    0s] Memory limit set to 21222168KB
[    0s] Using BUILD_ROOT=/home/chihara/GBS-ROOT/local/scratch.armv7l.0
[    0s] Using BUILD_ARCH=armv7l:armv7el:armv6l:armv5tejl:armv5tel:armv5l:armv4tl:armv4l:armv3l:noarch
[    0s]
[    0s]
[    0s] A-2013-01-H started "build org.tizen.browser.spec" at Wed Feb 27 06:04:41 UTC 2013.
[    0s]
[    0s]
[    0s] processing specfile /home/chihara/GBS-ROOT/local/sources/tizen2.0/org.tizen.browser-0.0.1-1/org.tizen.browser.spec ...
[    0s] init_buildsystem --configdir /var/tmp/chihara-gbs --cachedir /home/chihara/GBS-ROOT/local/cache --repository /home/chihara/GBS-ROOT/local/repos/tizen2.0/armv7l/RPMS --repository http://download.tizen.org/releases/latest/2.0/repos/main/armv7l/packages --repository http://download.tizen.org/releases/latest/2.0/repos/base/armv7l/packages --clean --use-system-qemu /home/chihara/GBS-ROOT/local/sources/tizen2.0/org.tizen.browser-0.0.1-1/org.tizen.browser.spec ...
[    0s] initializing /home/chihara/GBS-ROOT/local/scratch.armv7l.0/.srcfiles.cache ...
[    0s] /usr/lib/build/createrpmdeps /home/chihara/GBS-ROOT/local/repos/tizen2.0/armv7l/RPMS
[    0s] /usr/lib/build/createrepomddeps --cachedir=/home/chihara/GBS-ROOT/local/cache http://download.tizen.org/releases/latest/2.0/repos/main/armv7l/packages
[    1s] /usr/lib/build/createrepomddeps --cachedir=/home/chihara/GBS-ROOT/local/cache http://download.tizen.org/releases/latest/2.0/repos/base/armv7l/packages
[    2s] expanding package dependencies...
[    2s] expansion error
[    2s]   nothing provides libblkid.so.1(BLKID_2.18) needed by util-linux
[    2s]   nothing provides libblkid.so.1(BLKID_2.17) needed by util-linux
[    2s]   nothing provides libblkid.so.1(BLKID_2.20) needed by util-linux
warning: build failed, Leaving the logs in /home/chihara/GBS-ROOT/local/repos/tizen2.0/armv7l/logs/fail/org.tizen.browser-0.0.1-1/log

error: *** Error Summary ***
=== the following packages failed to build due to rpmbuild issue ===
org.tizen.browser-tizen2.0-armv7l: /home/chihara/GBS-ROOT/local/repos/tizen2.0/armv7l/logs/fail/org.tizen.browser-0.0.1-1/log

error: <gbs>rpmbuild fails

 

ホームアプリと思われるmenu-screenなどはビルドが成功するので、リポジトリ側の問題のような気がするのですが、どうなのでしょうか。
引き続き調査が必要なようです。

Share

Androidソースビルド Panda Board カーネルビルド

こんにちは。アスカ・クリエイション 石原繁彦です。

前回のAndroidのソースビルドに引き続きPanda Board用にカーネルをビルドしてみます。

カーネルビルドができるようになればカーネルの設定を変更できるのでデバイスドライバを追加するなどが可能になります。

AOSPの以下のページに情報がありますので、これを参考に進めます。

 

http://source.android.com/source/building-kernels.html

まず以下を実行します。

$ git clone https://android.googlesource.com/device/ti/panda
$ cd panda
$ git log kernel

 

PandaboardはOmapですのでOmapのカーネルソースを取得します。

$ git clone https://android.googlesource.com/kernel/omap.git

 

コンパイルのためのツールチェインを取得し、パスを通します。

$ git clone https://android.googlesource.com/platform/prebuilt
$ export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

 

クロスビルドのための環境変数を設定します。

$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-

 

カーネルソースをチェックアウトします。ブランチはandroid-omap-panda-3.0を使用します。

$ cd omap
$ git checkout remotes/origin/android-omap-panda-3.0

 

panda_defconfigでカーネル設定を行い、ビルドします。

$ make panda_defconfig
$ make -j4

 

正常に終了するとarch/arm/boot/zImageができます。これがカーネルになります。前回の記事で取得したAndroidソースのdevice/ti/panda/kernelにコピーします。

$ cp omap/arch/arm/boot/zImage ~/panda_work/device/ti/panda/kernel

 

これで、システムをビルドし、焼き込むことでビルドしたカーネルが使用できます。AndroidのSettings ->About tabletにてカーネルのバージョンやビルド日時で確認できます。

2013-02-21_20-39-08_548

続いて、カーネルの設定を変更してみます。Linuxカーネルの設定変更にmenuconfigを使いたいので、libncurses-devをインストールしておきます。

$ sudo apt-get install libncurses-dev

 

カーネルソースツリーで以下を実行します。

$ make menuconfig

Screenshot_from_2013-02-21 16:55:41

今回はUSB WEBカメラを使用可能にしてみます。

Device Driver —>Multimedia support —>Video For Linux

Device Driver —>Multimedia support —>Video capture adapters —>V4L USB devices —> USB Video Class

それぞれチェックします。モジュールではなくカーネルに組み込みたいので<M>ではなく<*>にします。

これで良いはずですが、drivers/media/video/omapgfxのビルドでエラーとなります。linux/videodev.hの不整合のようですが、とりあえずこのドライバをビルドから外します。

Device Driver —>Multimedia support —>Video capture adapters —>V4L USB devices —> OMAP V4L2-GFX driver

セーブしてmenuconfigを終了し、makeします。正常終了したらデバイスに書き込み、USB Webカメラを接続し/dev/video0ができていたら成功です。

カメラの確認には工学院大学金丸研究室様で同じようなことをされていましたので、アプリのソースを頂き、動作させてみました。

/dev/video0のパーミッションを666に変更してアプリを実行させてみたところ、うまく動作しました。(工学院大学金丸研究室様ありがとうございます)

2013-02-21_20-51-22_143

 

カーネル設定を変更できるとAndroidの可能性が広がりますね。

今回はここまでです。

Share

Androidソースビルド&Panda Boardで動かす

こんにちは。アスカ・クリエイション 石原繁彦です。

今回は前回行ったAndroidのソースビルドの続きでビルドしたイメージをPanda Boardで動かしてみたいと思います。

2013-02-21_20-38-29_587

 

Panda BoardはARM系アーキテクチャのTexas Instruments社OMAPを採用した開発ボードです。スペックはこちら

早速ですが、まず前準備として開発マシンがUSB接続されたPanda Boardを認識できるよう/etc/udev/rules.d/に51-android.rulesを作成し、以下の内容を書き込みます。OWNERはビルドに使用しているマシンのログインアカウントを指定すれば良いようです。


# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="ishihara"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="ishihara"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="ishihara"

 

ビルド環境は前回構築したものを使用します。ソースツリーに関しては、今回はPanda Board向けのjb-mr1-dev-plus-aospブランチを使ってみようと思います。新たに作業ディレクトリを作成しソースを取得し直してビルドします。

$ mkdir panda_work

$cd panda_work

 

特定のブランチを指定してソースを取得するには -bオプションを使用します。

$ repo init -u https://android.googlesource.com/platform/manifest -b jb-mr1-dev-plus-aosp

 

-jオプションを付けると並列同期できるようです。

$ repo sync -j4

 

~/panda_work/device/ti/panda/READMEに後の手順が書かれていますので、これを参考に進めてみます。

プロプライエタリなドライバのバイナリファイルを取得する必要があるようです。下記リンクから最新のpanda用ドライバをダウンロードします。現時点では20120807が最新でした。

https://developers.google.com/android/nexus/drivers?hl=ja#panda

ソースのルートで以下を実行して取得します。

$ wget https://dl.google.com/dl/android/aosp/imgtec-panda-20120807-c4e99e89.tgz

 

このtgzファイルを展開するとスクリプトファイルが出てくるので実行します。

$ tar -zxvf imgtec-panda-20120807-c4e99e89.tgz
$./extract-imgtec-panda.sh

 

途中ライセンスの同意が求められるので同意します。これによってソースツリーのvendor以下にファイルが取得されます。

ここで、Panda Boardの電源アダプタ、mini-USBポートと開発マシンを接続し、USBキーボード、マウス、HDMI(DVI出力)、LANケーブル(必須ではない)を接続します。

まずfastbootをビルドします。


$ source build/envsetup.sh
$ lunch full_panda-userdebug
$ make fastboot

 

ビルドが正常に完了したらPanda BoardのSDカードが入っていない状態で以下を実行します。

$ device/ti/panda/usbboot device/ti/panda/bootloader.bin

 

コマンドが正常終了したら4GB以上のSDカードを挿入し以下を実行します。

$ fastboot oem format
$ fastboot flash xloader device/ti/panda/xloader.bin
$ fastboot flash bootloader device/ti/panda/bootloader.bin

 

ここまで正常に完了したら全体をビルドします。ビルドターゲットはfull_panda-userdebugを指定します。なおlunchコマンドをオプション無しで実行すると指定可能なターゲットの一覧が表示され選択できます。

$ source build/envsetup.sh
$ lunch full_panda-userdebug
$ make -j4

 

ビルドが正常に完了したら、Panda BoardのGPIO_121のボタンを押しながらPWRON_RESETを押すことでfastbootで起動し、ビルドしたファイルシステムを書き込みます。


$ fastboot erase cache
$ fastboot flash userdata
$ fastboot flashall

 

これでシステムが書き込まれたはずです。システム起動後、以下を実行して日時を合わせます。


adb shell date $(date +%s)

 

LANを接続している場合、以下を実行してLAN設定を行います。


adb shell dhcpcd eth0

 

2013-02-20_18-15-56_910

 

Unfortunately, System UI has Stoppedというダイアログが出てOKを押しても、数秒後に同じダイアログの表示を繰り返すという不具合がありましたが、壁紙を適当なLive wallpaperに変更することで、とりあえず現象は治まりました。

2013-02-20_20-09-52_4292013-02-20_20-10-31_786

 

 

ちなみにPanda Boardのシリアルポートがシリアルコンソールになっていますので、PCとシリアルケーブルで接続してターミナルエミュレータでコンソールにアクセスできます。ボーレートは115200です。

wifiも接続できました。bluetoothも周囲のデバイスを検知していたので使用できそうです。

今回はここまでです。次回はカーネルのビルドに挑戦しようと思います。

 

Share

Androidソースビルド手順

こんにちは。アスカ・クリエイションの石原繁彦です。

ネタとしては少々枯れていますが、今回はAndroidをソースからビルドする手順をおさらいを兼ねて紹介しようと思います。

基本的な情報はAndroid Open Source Projectのサイトにまとまっているので、この内容をベースに進めます。

http://source.android.com/

ビルド環境はUbuntuまたは、Mac OS Xがサポートされています。Windowsではビルド出来ません。今回はUbuntu 12.04の64bit版を使用します。

必要なツールをインストールしていきます。まず、重要なポイントとしてJDKをインストールする必要があります。Ubuntuの標準ではOpenJDKが採用されていますが、OpenJDKではビルドエラーになりますのでOracle JDKをインストールします。Ubuntu10.04の頃にはsun-java6-jdkがリポジトリからインストール出来ましたが、現在は削除されているようですので、Oracleのサイトからダウンロードしてインストールします。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java SE Development Kit 6を上記サイトよりダウンロードします。

oracle_jdk1oracle_jdk2

Accept License Agreement にチェックし、jdk-6u39-linux-x64.binをダウンロードします。 これは実行ファイルですが、ダウンロードしたままの状態では実行権限が無いため、実行権限を付与します。

$ chmod a+x jdk-6u39-linux-x64.bin

/usr/lib/jvmにインストールします。ディレクトリが無ければ作成します。

$ sudo mkdir /usr/lib/jvm

先ほどのバイナリをコピーまたは移動します。

$ sudo cp jdk-6u39-linux-x64.bin /usr/lib/jvm

/usr/lib/jvmに入り、実行することでカレントディレクトリにファイルが展開されます。

$ cd /usr/lib/jvm
$ sudo ./jdk-6u39-linux-x64.bin

jdk-6u39-linux-x64.binはもう必要ないので削除しても構いません。


$ sudo rm jdk-6u39-linux-x64.bin

update-alternativeコマンドでデフォルトのjavaとして登録します。

$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_39/bin/javac 1
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_39/bin/java 1
$ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_39/bin/javaws 1
$ sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_39/bin/jar 1
$ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_39/bin/javadoc 1
$ sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_39/bin/javap 1
$ sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/jdk1.6.0_39/bin/javah 1
$ sudo update-alternatives --install /usr/bin/jdb jdb /usr/lib/jvm/jdk1.6.0_39/bin/jdb 1
 

既にOpenJDKなど別のJDKが入っている場合は優先順位を変更します。


$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javaws
$ sudo update-alternatives --config jar
$ sudo update-alternatives --config javadoc
$ sudo update-alternatives --config javap
$ sudo update-alternatives --config javah
$ sudo update-alternatives --config jdb

javaのバージョンを表示させインストールが正常に完了したか確認します。

$ java -version

JDKのインストールは以上です。

引き続き、必要なツール群をインストールします。JDK以外のツールはリポジトリからapt-getで一気にインストールしてしまいます。

$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

libGL.soのシンボリックリンクを作成します。

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

続いて、ソースコードをダウンロードします。

Androidのソースコードをダウンロードするにはrepoを使います。まず、ホームディレクトリに~/binディレクトリを作成し、PATHを通します。

$ mkdir ~/bin

ubuntuではログイン時にホームディレクトリにbinディレクトリがあると自動的にPATHが通るようになっていますので、一旦ログアウトし再ログインします。

curlコマンドでrepoスクリプトをダウンロードし、実行権限を付与します。

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

 

ソースコードのダウンロード先となる作業ディレクトリを作成します。ディレクトリ名は好きにつけてよさそうです。

$ mkdir work

$cd work

カレントディレクトリを作業ディレクトリに移動しリポジトリの初期化を行います。

$ repo init -u https://android.googlesource.com/platform/manifest

途中、名前とメールアドレスを尋ねられるので入力します。

以下のコマンドでソースコードを取得します。

$ repo sync

 

さて、いよいよビルドを行います。まず、以下を実行します。

$ . build/envsetup.sh

次にビルドターゲットを指定します。様々なターゲットを指定できるようですが、今回はfull-engでビルドしてみることにします。

$ lunch full-eng

ビルドを開始します。今回使ったビルドマシンはCore2Duo E7500なので2コアです。一般的に並列コンパイルはコアの数x2が目安とされてますので-j4オプションを付けてmakeします。

$ make -j4

ビルド完了後、以下のコマンドでエミュレータを起動します。

$ emulator

emu1 emu2

Settings→About phone→Build numberからビルド情報が確認できます。

今回はここまでです。次回はPandaboardでビルドしたイメージを動かすことに挑戦したいと思います。

 

Share

Windows8/RTストアアプリ開発 ~開発環境構築~

こんにちは。アスカ・クリエイション株式会社 研究開発チームの石原です。前回に続き、今回は開発環境の構築について書きたいと思います。

まず、開発には以下のソフトウェアが必要となります。

  • Windows8
  • Visual Studio 2012 Professional以上、または Visual Studio Express 2012 for Windows8

Windows8は開発PC用のOSとして必要になります。Windows7以前のOSでストアアプリの開発は出来ません。

Visual Studioに関してはほとんどの場合、無償のExpressで十分アプリ開発が可能ですが、カスタムデバイスを制御するようなアプリの場合、ドライバのSDKの関係でProfessional以上が必要になってきます。今回はVisual Studio 2012 for Windows8での開発環境構築を説明しようと思います。Visual Studio 2012 for Windows8は以下よりダウンロード可能です。

http://www.microsoft.com/visualstudio/jpn/downloads

vs2012

.exe形式と、.iso形式が用意されていますので、好みのほうをダウンロードします。.isoの場合はマウントするかCDに焼き付けwin8express_full.exeを実行します。

 

vs2012_inst

ライセンス条項に同意するにチェックしインストールを開始します。しばらくするとインストールが完了します。特に迷う部分は無いと思います。

初回起動ではプロダクトキーの入力を求められるのでオンライン登録を行いプロダクトキーを入手します。また、Windows8開発者用ライセンスを取得するよう促されるので同意して取得します。

Visual Studioでは開発用PCのローカル環境でアプリを実行しデバッグ可能な他に、以下のスクリーンショットのような端末のシミュレータが使用できます。

vs2012_emu

シミュレータでは、解像度の変更やマウスで疑似的にタッチ操作のシミュレートやGPSセンサーのシミュレートが可能です。しかし、これはOSイメージを仮想マシンで動かすようなものではなく、ローカル環境に別ウインドウでログインしているようなもので、ローカル環境で実行しているのとあまり変わりません。別解像度でのレイアウト確認など、補助的な用途には便利な場面もありますが、加速度センサーやジャイロセンサー等はシミュレート出来ませんし、マウスでのタッチ操作のシミュレートはやはり実際の操作感とはかけ離れているので、本格的な動作確認には確認用ハードウェアを用意するのが望ましいです。

ハードウェアについては、タッチ操作や各種センサーを利用したアプリの動作確認にはそれらを備えたWindows8やRTが動作するPCやタブレット端末が必要になります。もう一つ注意すべき点として古いPCにWindows8をインストールして動作確認に使用する場合、ストアアプリを実行するには最低1024 x 768 以上の画面解像度が必要なこと、さらにスナップという横端にアプリを小さくドッキングさせて表示する機能を使用するには1366 x 768 以上の画面解像度が必要となります。スナップ時にはレイアウトを大きく変更する必要が出てきますので、動作確認のために1366 x 768以上の端末を用意することが望ましいです。

別の端末にリモートでアプリを配置しデバッグを行うにはターゲット端末にRemote Tools for Visual Studio 2012をインストールする必要があります。このツールはARM版もあるのでWIndowsRT機にインストールしてデバッグすることも可能になります。このツールは前述のVisual Studioのダウンロードページからダウンロードします。

vs2012_Remote

ターゲット端末のCPUに応じたインストーラーを選択します。インストール後、Remote Debuggerを起動します。

remote_debug

このツールが開発PCと通信することになるので立ち上げっぱなしにしておきます。開発PCとターゲット端末の接続はネットワークで行いますので、有線LANやWifi等で同一ネットワーク上に属している必要があります。

remote_debug2

リモートでアプリを実行するにはVisual Studioのツールバーにある実行ボタンからリモートコンピューターを選択します。

remote_debug3

初回時はネットワーク上をサーチしデバッグモニターの起動している端末が表示されるのでターゲット端末を選択します。またユーザー名とパスワードが求められるのでターゲット端末側のログインユーザーとパスワードを入力します。認証を保存にチェックを入れることで次回から省略出来ます。

以上で、リモートでアプリが実行されリモートデバッグが可能になります。

次回以降はコードを交えて、より踏み込んだ内容を書いていこうと思います。

Share

Tizen SDK インストール手順@Ubuntu on iMac

研究開発チームの千原です。前回に続き、TizenのSDKインストール手順について書きたいと思います。

splash

自社都合で、なぜかiMacを使っているため、iMac 2012 LateにTizen SDKを入れます!ちなみにTizen SDKは、現在Macに対応していません・・・。

SDKが現在対応しているOSはWindowsXP/7とUbuntu11と公式サイトには記載されていますが、あえて最新のUbuntu12.10にインストールすることにしました。(調べてみると、12.10で動かしている人もちらほら、実績があるみたい)

公式サイトでの必要動作環境は以下

OS

Ubuntu11.04 11.10 / Windows XP 7

CPU

DualCore 2GHz

RAM

2GB

HDD

3GB

Java

Oracle Java 7

Library(Ubuntu ONLY)

procps, gettext, libdbus-1-3, libcurl3, expect, gtk2-engines-pixbuf, grep, zip, make, and qemu-user-static

01     Ubuntu12.10をVMwareに入れる。

          プロセッサとメモリの項目で、CPUを「2個のプロセッサコア」メモリを「3.5GB」に設定。かなり適当に設定。これでVMでもかなり快適に動くはず。

          仮想マシン作成後、Ubuntuにログインすると、VMwareが強制終了する!

          なぜ!?

          何度も環境を作り直して試行錯誤してもダメ。

          違う観点で調べてみると、VMwareが強制終了するバグがVMwareのページに載っていた・・・。

          もし発生したら、次の設定で回避できます。

          仮想マシンの設定の「ディスプレイ」で、3Dグラフィックスの高速化を「OFF」に設定

                   参考手順:http://d.hatena.ne.jp/wadap/20080706/1215323979

 ※ここからはUbuntu上で作業

02     UbuntuにJRE7を入れる。(インストーラーを動かすだけなのでJREにした)

          Oracle のサイトからJREをダウンロードします。

                   取得先:http://www.oracle.com/technetwork/java/javase/downloads/index.html

          ダウンロードされたディレクトリに移動して、以下のコマンドを実行してJRE内のjavaにパスを通します。

          (/usr/bin/java は二重のシンボリックリンクになっているので、注意)

sudo mkdir -p /usr/lib/jvm
sudo mv jre-* /usr/lib/jvm
sudo cd /usr/lib/jvm
sudo tar xvzf jre-*
sudo rm -f jre-*
sudo ln -s jre* oracle-java
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/oracle-java/bin/java 1000
sudo update-alternatives --config java

参照手順:http://www55.atwiki.jp/loveubuntu/pages/25.html

03     Tizen SDKをダウンロードする。

          Tizen のサイトからSDKをダウンロードします。

                   取得先:https://developer.tizen.org/downloads/sdk

          インストーラーを実行すると不足しているライブラリが表示されるので、まずは一度起動して不足ライブラリを特定しましょう。

chmod +x tizen-sdk-2.0-ubuntu32.bin
./tizen-sdk-2.0-ubuntu32.bin

          If you want to install TIZEN-SDK, you must install “gettext” “libcurl3″ “expect” “gtk2-engines-pixbuf” “libgnome2-0″ “qemu-user-static” package(s).

04     不足しているライブラリをインストールする。

          不足ライブラリが分かったら、グイッと一気に追加します。

sudo apt-get install gettext libcurl3 expect gtk2-engines-pixbuf libgnome2-0 qemu-user-static

05     Tizen SDKのインストーラーを起動する。

./tizen-sdk-2.0-ubuntu32.bin

          とりあえず、カスタムインストールを選択して、全てを入れる。

          あとは、Next連打でガンガン進めて構いません。

06     Simulatorを動かすために必要なGoogleChromeをインストールする。

          Chrome ブラウザをダウンロードします。

sudo dpkg -i google-chrome*

          エラーが起きた場合は、強制インストールを実施!!

sudo apt-get install -f

07     Tizen SDK を起動してSimulatorの設定をする。

          前の手順でChromeが /opt/google/chrome にインストールされていれば、この手順はスキップしてokです。デフォルト設定がそのパスになっているため。

          [Preferences] – [Tizen SDK] – [Web] – [Simulator]

          Google Chrome location にインストールしたChromeブラウザの実行ファイルを設定します。

08     Tizen SDK で Tizen Web Project を新規作成時にエラーが出る場合、以下の設定し、SDKを再起動する。

          MOZILLA_FIVE_HOME not set

sudo apt-get install libwebkitgtk-1.0-0
vi ~/tizen-sdk/ide/eclipse.ini

          最終行に次の設定を追記

          -Dorg.eclipse.swt.browser.DefaultType=webkit

これで、Tizen SDKでHTML5のアプリケーションを作成できるようになります!
Sampleも色々あるようなので、次の機会に紹介したいと思います。

Share

Tizenはじめました。

お初にお目にかかります。アスカクリエイション株式会社の研究開発チームの千原です。

現在、巷で噂になりつつあるTizenの調査を行っています。

初回なので、今回はTizenについて(すごく)簡単に紹介しようと思います。

 

TizenはMeeGoというNokiaとIntelが開発していたプラットフォームを前身としたLinuxベースのモバイルOSです。

ターゲットはスマートフォンをはじめ、車載機器、ネットブック、TVなどとなっています。

現在は、SamsungとIntelが主導して、Linux Foundationが開発を行っているようです。

 

次に、Tizenのシステム構成ですが、TizenのアプリケーションはHTML5になるため、以下のようになっています。

TizenSystemFramework

TizenWikiを参考にしています。)

UIはHTML5で、APIコールはJavaScriptでといった形です。

どうやらWeb開発者を取り込もうという意図があるようです。

 

図の青い部分が、Tizenのコアモジュール群になります。

各モジュールでは以下のサービスが提供されます。

Application Framework

  • アプリの起動
  • 他アプリを起動(パッケージ名、URI、MIME)
  • イベント送信

Base

  • Linuxライブラリ
  • データベース
  • ローカライズ
  • XMLのパース

Connectivity

  • ネットワーク接続(3G)
  • Wi-Fi
  • Bluetooth
  • HTTP
  • NFC

Graphics & UI

  • X11ベースのウィンドウシステム
    • EFL(Enlightenment)
  • OpenGL ES

Location

  • GPS
  • WPS

Messaging

  • SMS: Short Message Service
  • MMS: Multimedia Messaging Service
  • Email
  • IM: Instant Messaging

Multimedia

  • 動画
  • オーディオ
  • 画像・写真

PIM

  • カレンダー
  • 連絡先
  • タスク
  • 検索履歴
  • デバイス情報

Security

  • アクセス制限
  • 認証
  • 安全なアプリケーションの配布

System

  • デバイス制御(センサー、画面、バイブレーション)
  • 電源管理
  • 外部接続イベント管理
  • アップグレード

Telephony

  • 電話(UMTS、CDMA)
  • パケット通信
  • SMS
  • SIM管理(電話帳)

Web

  • Webアプリケーション用ランタイム
  • 低機能機種向けのWeb API

 

次回はSDK環境の構築手順について詳しく書こうと思います。

Share

Windows8/RTストアアプリ開発 ~アーキテクチャ概要~

はじめまして。ASTEC LABでWindows8/RTストアアプリの開発を担当させて頂いております、アスカ・クリエイション株式会社の石原繁彦と申します。

Windows8、WindowsRTが発売されて3ヵ月が立ち、ストアアプリも少しづつ充実してきました。私も発売の数か月前からRelease Preview版での検証や、開発者セミナーに参加するなど情報収集してきましたが、限られた情報の中で、まだまだ試行錯誤の連続です。このブログを通して、これまでの成果や、実験的な内容も交えつつノウハウの蓄積と発信を目指していこうと思います。

さて、記念すべき第一回は、ざっくりWindows8/RTストアアプリのアーキテクチャをまとめてみたいと思います。

ストアアプリでは下図のような構成になっています。従来のデスクトップアプリとの大きな違いは、これまでのWin32 APIではなくWinRTという新しいAPI群を使用するということです。

WinRT

Windows8/RTではWin32 APIとその上位フレームワーク及び、デスクトップ環境も搭載しているためWindows7までのデスクトップアプリも動作します。が、しかし、ストアアプリの実行環境はAPIレベルで全くの別物、別環境と言っても過言ではないほど異なります。そしてストアアプリはご存じの通り、タッチ操作に特化しており、動作やコンセプトはAndroidやiOSのそれに近いものとなっております。従来のデスクトップ環境とタッチ向けの環境が同じカーネル上に同居しているようなOSとなっています。つまり、WinRT APIはWindowsにタブレット端末の実行環境を実現させるためのAPI群という位置付けになるかと思います。

ストアアプリを作成するためのプログラミング言語の組み合わせは以下にになります。

  • HTML/CSS + JavaScript
  • XAML + C#
  • XAML + VB
  • XAML + C/C++
  • DirectX + C/C++

この他に、一部C++ でDLLを作成してC#から呼び出すハイブリッドアプリという手段もあります。HTML/CSSとJavaScriptの組み合わせでストアアプリが作成できるのでWeb系開発者も参入しやすいかもしれません。一方でDirectXを使用した3Dゲーム等はC/C++で作成する必要があります。標準的なアプリ開発ではUIをXAMLで作成しロジックをVB、C#、C/C++で好みのものを選択するケースが多いのではないでしょうか。XAMLによるUI作成はWPFのWindowsアプリケーションと共通する部分も多く、WPFを触ったことがある方なら扱いやすいと思います。

 

ストアアプリの開発で留意しなければならない点としてライフサイクルが従来のデスクトップとは異なる点が挙げられます。

storeapp_lifecycle

図のように一時停止という状態が存在します。具体的にはバックグラウンドに回った時に一時停止状態に遷移します。さらに、一時停止中のアプリはメモリ等のリソース減少によりOSの判断で自動的に終了します。しかもアプリは終了前に通知を受けません。状態の保存には一時停止時にイベントが発生するので、このタイミングで保存しておく必要があります。また、この中断処理は5秒以内に終わらせる必要があります。

その他の留意点としてサンドボックスで実行されるためデバイス等にアクセスするにはアプリマニフェストの定義とユーザーの許可が要ること、アプリ間やOSとのデータ受け渡しにコントラクトという仕組みを使うことなどが挙げられます。これらは、また後日詳しく紹介していこうと思います。

 

Share

ASTEC LAB

アスカ・クリエイション株式会社の研究開発コミ二ティASTEC_LAB(Asuka technology Lab)が開発ノウハウを公開します。

Share