2014年7月28日月曜日

Ubuntu14.04にCordovaの開発環境を構築してFirefoxOSとAndroidアプリを作ってみる

画面が切り替わるようにする 編


今回は画面が切り替わるようにする。

1. ライブラリの導入

前回、画面を追加したが、画面が重なったままだった。これをまずはなんとかする。
いよいよJavaScriptを書く訳だが、ここで便利なライブラリを導入する。

Backbone.js
ごちゃごちゃになりがちなJavaScriptをすっきりした状態にしてくれる。
ModelとViewにレイヤー分けしてJavaScriptが読みやすくなる。

http://backbonejs.org/ よりbackbone-min.jsをダウンロード。

Backbone.jsは以下のライブラリに依存しているのでこれもダウンロード。
Underscore.js ( >= 1.4.3) またはLo-Dash
json2.js
jQuery ( >= 1.7.0)またはZepto

全部、www/jsフォルダにコピー。
www/index.htmlに以下を追加。
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript" src="js/underscore-min.js"></script> 
<script type="text/javascript" src="js/backbone-min.js"></script>
ソースのコメント:@@@1

2. 重なった画面をなおす

JavaScriptで画面を切り替える。
Opening画面だけを表示して他は非表示にする。

www/js/index.jsに以下を追加。
var ViewOpening = Backbone.View.extend({
    el : "#opening",
});

var ViewSettings = Backbone.View.extend({
    el : "#settings",
});

var ViewMain = Backbone.View.extend({
    el : "#main",
});

var viewOpening = new ViewOpening;
var viewSettings = new ViewSettings;
var viewMain = new ViewMain;
var view = {
    showOpening: function() {
        viewOpening.$el.show();
        viewSettings.$el.hide();
        viewMain.$el.hide();
    },
    showSettings: function() {
        viewOpening.$el.hide();
        viewSettings.$el.show();
        viewMain.$el.hide();
    },
    showMain: function() {
        viewOpening.$el.hide();
        viewSettings.$el.hide();
        viewMain.$el.show();
    },
};
 
view.showOpening(); 
ソースのコメント:@@@2

3. 設定画面を表示

オープニング画面の右上のギア(設定アイコン)を押すと設定画面に切り替わるようにする。

まず、ギア(設定アイコン)にIDを付ける。
www/index.htmlに以下を追加。
<span id="settings_button" class="icon icon-settings">settings</span>

www/js/index.jsに以下を追加。
var ViewOpening の中に追加

    events : {
        "click #settings_button" : "settingsButtonClicked",
    },
    
    settingsButtonClicked: function() {
        view.showSettings();
    },
ソースのコメント:@@@3

4. 設定から戻る

設定画面が表示されるようになった。
今度は、「done」を押すとオープニング画面に戻るようにする。

「done」ボタンにIDを付ける。
www/index.htmlに以下を追加。
<button id="settings_done">done</button>

www/js/index.jsに以下を追加。
var ViewSettings の中に追加

    events : {
        "click #settings_done" : "settingsDoneClicked",
    },
    
    settingsDoneClicked: function() {
        view.showOpening();
    },
ソースのコメント:@@@4

5. メイン画面を表示

オープニング画面の「Start」ボタンを押すとメイン画面に切り替わるようにする。

「Start」ボタンにIDを付ける。
www/index.htmlに以下を追加。
<button id="start_button">Start</button>

www/js/index.jsに以下を追加。
var ViewSettings の中に追加

    events : {
        "click #settings_done" : "settingsDoneClicked",
        "click #start_button" : "startButtonClicked", //これを追加
    },
    
    startButtonClicked: function() {
        view.showMain();
    },
ソースのコメント:@@@5

今日の全ソースはこちら

これで、Cordovaで「Hello World」はおしまい。

次回は、これをベースにしてちょっとしたアプリを作ってマーケットプレイスにリリースするまでをやりたい。

2014年7月26日土曜日

Ubuntu14.04にCordovaの開発環境を構築してFirefoxOSとAndroidアプリを作ってみる

画面を追加 編


今回はいくつか画面を追加し、画面が切り替わるようにする。

1. 最初の画面を整える

まず、Hello World の最初の画面をオープニング画面として整える。

タイトルを「Apache Cordova」から「Opening」 に変える。
www/index.html
<h1>Apache Cordova</h1>
↓
<h1>Opening</h1>

画面下部に「Start」ボタンを付ける。
www/index.html
<link rel="stylesheet" type="text/css" href="shared/style/buttons.css" />

<br />
<div class="bb-docs skin-organic">
    <button>Start</button>
</div>

<div class="app">〜</div> の部分を <section id="opening" の中に入れる。
www/index.html
</section> <!-- これを移動 -->
    <script type="text/javascript" src="cordova.js"></script>
ソースのコメント: @@@1


2. 画面を追加する

設定画面を追加する。
www/index.html
<section id="settings" role="region" class="current" data-position="current">
    <header>
        <menu type="toolbar">
            <button>done</button>
        </menu>
        <h1>Settings</h1>
    </header>
    <div class="app">
        <h1>Settings</h1>
    </div>
</section>
ソースのコメント: @@@2

メイン画面を追加する。
www/index.html
<section id="main" role="region" class="current" data-position="current">
    <header>
        <h1>Main</h1>
    </header>
    <div class="app">
        <h1>Main</h1>
    </div>
</section>
ソースのコメント: @@@3






画面が重なっている。
これは、JavaScript で必要ない画面を非表示にする処理が必要。

が、今回はここまで。
ソースはこちら

2014年7月21日月曜日

Ubuntu14.04にCordovaの開発環境を構築してFirefoxOSとAndroidアプリを作ってみる

FirefoxOSぽい外観の作成 編


今回は画面を作っていく。

1. 画面上部のオレンジ色のヘッダを作る

Gaiaというツールを導入すれば簡単に作れるらしい。
mozilla-b2g/gaiaをダウンロード。
その中の「shared」フォルダを www フォルダにコピー。
www/index.htmlを修正。
<link rel="stylesheet" type="text/css" href="shared/style/headers.css" />

<section id="opening" role="region" class="current" data-position="current">
  <header>
    <h1>Hello World</h1>
  </header>
</section>
ソースのコメント: @@@1

文字が勝手に大文字になるので、www/css/index.cssを修正。
  text-transform:uppercase; /* これをコメントアウト */
ソースのコメント: @@@2

タイトルを左寄せにしてアイコンをつける。
www/css/index.css
section[role="region"] > header:first-child h1 {
  text-align: left;
}
header h1 {
    background:url(../img/logo.png) 0 50% no-repeat;
    -moz-background-size:contain;
    background-size:contain;
    padding-left: 5rem !important;
}
ソースのコメント: @@@3
※どういう訳かpadding-leftが効かなかったので!importantを付けた。


タイトルの右上にメニューアイコン(設定アイコン)を付ける。
www/index.html
<menu type="toolbar">
    <a href="#"><span class="icon icon-settings">settings</span></a>
</menu>
ソースのコメント: @@@4

www/css/index.css
section[role="region"] > header:first-child .icon.icon-settings {
  background-image: url(../img/settings@2.25x.png);
}
ソースのコメント: @@@4

www/img/に画像をコピー
・settings.png  (30x30)
・settings@1.5x.png  (45x45)
・settings@2.25x.png  (68x68)





タイトルが途中で切れるので、www/css/index.cssを修正。
font-size: 1.3rem !important; /* これを追加 */
ソースのコメント: @@@5




全ソースはここ

今日はここまで。

2014年7月16日水曜日

Ubuntu14.04にCordovaの開発環境を構築してFirefoxOSとAndroidアプリを作ってみる

Hello World + adMob 編


1. サンプルアプリ(Hello World)の作成

適当なフォルダ(例:/home/user/CordovaProject)で、以下を実行。
$ cordova create HelloWorld com.example.hello "Hello World"
create 時に指定するパラメータの意味。
第1パラメータ(HelloWorld):フォルダ名
第2パラメータ(com.example.hello):ドメインの逆順+アプリ名
第3パラメータ("Hello World"):表示されるアプリの名前

上記コマンドを実行すると「HelloWorld」というフォルダが作成され、その中にアプリのひな形が作られる。

アプリのフォルダに移動。
$ cd HelloWorld

ターゲットを追加。
$ cordova platform add firefoxos
$ cordova platform add android

ターゲットの確認。
$ cordova platform ls
Installed platforms: android 3.5.0, firefoxos 3.5.0
Available platforms: amazon-fireos, blackberry10, ubuntu

2. 実行してみる

Androidの実機をUSBで接続して、以下を実行。
※事前に /etc/udev/rules.d/51-android.rules を作成しデバッグできる状態にしておくこと。
例(LGの場合):「SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev"」
$ cordova run android
エミュレータで実行する場合は、以下を実行。
※事前に「android avd」で仮想マシンを作成しておくこと
$ cordova emulate android

動いた!

Firefox OS の場合は実機がないのでFirefox OS Simulatorで動かす。

↑よりSimulatorをインストール。

Firefoxでアプリマネージャ(about:app-manager)を起動。

パッケージアプリを追加し、「HelloWorld/platforms/firefoxos/www」を選択

なんか、manifest.webappにiconsがないとエラーになる。
manifest.webappsに「"icons": {"128": "/img/logo.png"}」を追加。

動いた!

Firefox OS SimulatorはAndroidのように重くなくて良い。実に軽くて早い。
これからは、Firefox OS 向けにアプリを書いてテストしたあと
Androidに持っていたほうが開発がやりやすいかな?

3. アプリに広告を出したいのでadMobを追加

adMobプラグインを追加
$ cordova plugin add https://github.com/MobileChromeApps/google-play-services.git
$ cordova plugin add https://github.com/floatinghotpot/cordova-plugin-admob.git

www/js/index.js をエディタで開き、以下を追加。

※コメントで「+++ add adMob」と書いてあるところを追加した。
※Androidのときだけ表示するようにしてある。(FirefoxOSで動かすとエラーが出たので...)

adMobが表示された!

続きはまた。

Ubuntu14.04にCordovaの開発環境を構築してFirefoxOSとAndroidアプリを作ってみる

開発環境の構築編


1. JDKのインストール

途中、ライセンスに同意するか聞かれるので「はい」を選択する。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer
$ java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) Server VM (build 24.60-b09, mixed mode)

2. Android SDKのインストール

Android SDKだけでもいいのだが、あったほうが便利なので、Android Studioを入れる。
※Android Studio には Android SDKが付属してある。

https://developer.android.com/sdk/installing/studio.html よりダウンロード

(どこでもいいのだが)/usr/localに入れる。
$ cd /usr/local
$ sudo tar -xvzof /tmp/android-studio-bundle-135.1245622-linux.tgz
$ sudo chown -R $USER:$USER /usr/local/android-studio

環境変数のセット
$ echo 'export PATH=$PATH:/usr/local/android-studio/sdk/tools:/usr/local/android-studio/sdk/platform-tools:/usr/local/android-studio/bin' >> .bashrc
$ echo 'export ANDROID_HOME=/usr/local/android-studio/sdk' >> .bashrc

※64ビットのUbuntuの場合は、ia32-libsのインストールが必要。
$ sudo apt-get install ia32-libs

3. Android SDK Managerでツールのインストール

$ android
※パスが通ってない場合はターミナルを再起動
Android SDK Manager が起動するので以下を選択してインストール

  • Android SDK Tools
  • Android SDK Platform-tools
  • Android SDK Build-tools
  • Android 4.4.2 (API 19)
  • Android 2.3.3 (API 10)

4. Cordovaのインストール

$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ sudo npm install -g cordova
$ cordova -v
3.5.0-0.2.6

nodeがないというエラーが出たので
sudo ln -s /usr/bin/nodejs /usr/bin/node
を追加して「sudo npm install -g cordova」からやり直し。今度は動いた。

5. Antのインストール

Androidの開発をするには必要。
$ sudo apt-get install ant
$ ant -version
Apache Ant(TM) version 1.9.3 compiled on December 3 2014

以上で環境構築は終わり。
続きはまた。

2014年7月12日土曜日

Arch Linux (Manjaro/openbox)にCordovaの開発環境を構築してFirefoxOSとAndroidアプリを作ってみる

開発環境の構築編

1. JDKのインストール
sudo pacman -S jdk7-openjdk
java -version
※今回はOpenJDKにしてみた

2. Android SDKのインストール
(どこでもいいのだが)/usr/localに入れる。
$ cd /usr/local
$ sudo tar -xvzof /tmp/android-studio-bundle-135.1245622-linux.tgz
$ sudo chown -R $USER:users /usr/local/android-studio

環境変数のセット
$ echo 'export PATH=$PATH:/usr/local/android-studio/sdk/tools:/usr/local/android-studio/sdk/platform-tools:/usr/local/android-studio/bin' >> .bashrc
$ echo 'export ANDROID_HOME=/usr/local/android-studio/sdk' >> .bashrc

3. Android SDK Managerでツールのインストール
$ android
※パスが通ってない場合はターミナルを再起動
Android SDK Manager が起動するので以下を選択してインストール

    Android SDK Tools
    Android SDK Platform-tools
    Android SDK Build-tools
    Android 4.4.2 (API 19)
    Android 2.3.3 (API 10)


4. Cordovaのインストール

cd
curl https://raw.githubusercontent.com/creationix/nvm/v0.11.2/install.sh | bash
ホーム直下に「.nvm」というフォルダが作成され、そこにインストールされる。

.bashrcに以下を追加
source ~/.nvm/nvm.sh

ターミナルを開きなおして
nvm ls-remote
でインストール可能なバージョン一覧を表示。

必要なバージョンのnodejsをインストール。
nvm install 0.10.29
偶数が安定バージョン、奇数が開発バージョンらしい。

.bashrcに以下を追加
nvm use v0.10.29

ターミナルを開きなおして
$ node -v
v0.10.29
$ npm -v
1.4.14
$ sudo npm install -g cordova
$ cordova -v
3.5.0-0.2.6

5. Antのインストール
Androidの開発をするには必要。
$ sudo pacman -S apache-ant
$ ant -version
Apache Ant(TM) version 1.9.4 compiled on June 14 2014



ごめんなさい。
ここで力つきました。

2014年7月3日木曜日

Android emulator 内のブラウザが起動しない

OS: elementary OS (Ubuntu 12.04 base)
 
次のような Android エミュレータを作り、ブラウザを起動すると...



E/EGL_emulation(2637): Failed to establish connection with the host というエラーが出る。
 
NVIDIA のドライバーを変えたら動いた。