kaz_konno's blog: walkthisway

Titanium Mobileの事など。

Android用バーコードモジュール for Titaniumがアップデート

Titaniumに対応したAndroid用バーコードモジュールが先日0.1から0.2へアップデートした。
Twitterで時々やり取りをしている@dan_tamasさんが、M-Way Solutions社で公開しているバーコードスキャンモジュールを改修できる人はいないかと言うヘルプのツイートが流れてきて、その存在を知った。

0.1では、どうもroot windowでしか動作していなかったそうだ。
結局、M-Way Solutions社が改修をしてくれることになって、先日0.2にアップデートされた。
◇変更内容:
・Titanium Mobile SDK 1.6への対応
・root window以外での動作に対応

M-Way Solutions社のブログを見てもらうと、どういう経緯があったか見る事ができる。
http://blog.mwaysolutions.com/
ソースはこちら。https://github.com/mwaylabs/titanium-barcode

ちなみに、このモジュールのbuild.propertiesでは、/opt/android-sdk/〜となっていたので、自分の環境に合わせて、/android-sdk/〜と修正してからビルドしてみた。

モジュールを使ったサンプルも用意されているので、参考にしてみてほしい。
https://github.com/mwaylabs/titanium-barcode-example


f:id:kaz_konno:20110414003506p:image
私のGalaxyTabでもあっさり動作した!


このモジュールソースの中には、いろいろな機能のソースが含まれている。
f:id:kaz_konno:20110414003735p:image
他のモジュールを作成する上でも、とても参考になると思う。

Android用モジュール作成コマンド on MacOSX

【モジュール作成】
Android用モジュールを作成するには、以下のコマンドをTerminal.appからたたきます。

/Library/Application\ Support/Titanium/mobilesdk/osx/1.7.0/titanium.py create --platform=android --type=module --name=[module名(例:myModule)] --id=[id名(例:com.kazkonno.myModule)] --android=/android-sdk

※「\」はバックスラッシュ


【モジュールのビルド】
Android用モジュールをビルドするには、以下のコマンドをたたきます。

ant clean && ant

すると、プロジェクトファイル内にzipファイルが出来上がります。
これをダブルクリックして解凍します。解凍されたフォルダは、「com.kazkonno.mymodule」となります。

※注意:作成時モジュール名にmyModuleとMが大文字にしていましたが、できあがるフォルダは小文字になります。(1.7.0使用)。ソース内でrequireする際は、myModuleとMを大文字にして利用します。


【モジュールの設置】
/Library/Application\ Support/Titanium/modules/android/にcom.kazkonno.mymoduleフォルダを移動します。
※「\」はバックスラッシュ


【モジュール利用設定】
実際使用する際は、iPhone用と同じように、tiapp.xmlにモジュールを明記し、ソース内でrequireして利用します。

AdMobモジュールをインストールする際の注意点

先日AdMobモジュールの記事を書いたが、Titanium Mobileのバージョンが目まぐるしくアップデーとしているため、モジュールがうまく動かない場合もある。簡単なポイントを追記しておいたので、悩んでいる人は参考にしてください。AdMobモジュールの設置方法 - kaz_konno’ blog: walkthisway

Xcode4 で実機インストールできない問題の回避法

Xcode4もGM Seed2になり、ストア用のビルドにも問題無いので、メインマシンに入れてしまったが、Titanium Mobileでの実機転送ができない問題が発生している。
f:id:kaz_konno:20110309115321p:image

自分はpython分からないが(他も分かっている訳ではない)、/Library/Application Support/Titanium/mobilesdk/osx/1.6.0/iphone/builder.pyとエラー画面
を眺めていたら、分かった。解決法が!

修正したbuilder.pyを下のURLに置きました。
1.6.0用です。
http://www.pastie.org/private/uxlsnoeihbssviu28b5foq

/Library/Application Support/Titanium/mobilesdk/osx/1.6.0/iphone/builder.pyを置き換えてください。


何でこんな簡単に解決できるところを修正しないのだろう。
忙しすぎて手が回らないのが実情だろうなぁ〜。

同じ問題がある人はお試しください。

AdMobモジュールの設置方法

「Ti+Plus」が開始され、今後様々なモジュールが提供されるそうだ。
価格は2500ドル/年〜。

開始に当たり、以下の3モジュールがサンプルとして無料で提供されている。

・Flurry for iOS
・AdMob for iOS
・Paint for iOS

ソースコードこちら


この3つの中で一番利用したいのは恐らくAdMobモジュールではなかろうか。
モジュールの設置はコツをつかめば結構簡単。モジュールを使った事が無い人には、何をどうして良いか分からないと思うので、まずは以下の手順を読んでから試してほしい。

モジュールのインストール

ダウンロードしてきたzipファイルを解凍すると3つモジュールが入っている。

f:id:kaz_konno:20110306011819p:image

そして、AdMobフォルダの中身はこんな感じ。
f:id:kaz_konno:20110306011820p:image

難しい話は置いておいて、インストールしてみよう。
Terminal.appを開き、以下のコマンドでインストール用にビルドする。

cd AdMobモジュールフォルダ
./build.py

ビルドに成功すると、こんな画面になる。
f:id:kaz_konno:20110306011821p:image
titanium.xcconfigファイル内、TITANIUM_SDK_VERSIONが古いままになっていると、buildが失敗します。その場合は、利用しているバージョンに修正してください。
f:id:kaz_konno:20110328232355p:image
(※2011/3/28修正)


そして、ti.admob-iphone-1.0.zipが出来上がっていることを確認しよう。
f:id:kaz_konno:20110306011822p:image

インストールは/Library/Application Support/Titanium内のモジュールが入っているフォルダへ、手動で移動させることになる。

マニュアルには、移動先までzipのまま持っていって、そこで解凍するように説明されているが、自分の場合は、zipファイルの今ある場所でダブルクリックして解凍してしまう。

すると、modulesというフォルダができあがる。
f:id:kaz_konno:20110306011823p:image

つまり、/Library/Application Support/Titanium/modules/iphone/の中に、ti.admobフォルダを移動すれば良いということだ。別ウィンドウを開いておき、ドラッグ&ドロップする。
f:id:kaz_konno:20110306011824p:image

これでモジュールのインストールができた。次はプロジェクト側の設定だ。

プロジェクト側の設定

プロジェクト側では、tiapp.xmlに設定を追加する。
モジュールは、 の間に入れてあげる。
f:id:kaz_konno:20110306011825p:image
こんな感じ。

<modules>
          <module version="1.0">ti.admob</module>
</modules>

これでtiapp.xml側の設定は完了。
後は、jsファイル側でモジュールを呼び出してあげれば良い。

admobモジュールフォルダにexampleというフォルダがある。この中のapp.jsファイルを参考にすると良い。

モジュールを呼び出す場合は、requireを使う。

/* 
 * Loads the admob module and tests it, with some custom colors.
 */

// open a single window
var window = Ti.UI.createWindow({
  backgroundColor:'#444'
});

Titanium.Admob = require('ti.admob');

var adview = Titanium.Admob.createView({
	top:0,
	left:0,
	right:0,
	testing:true,
	adBackgroundColor:'black',
	primaryTextColor:'blue',
	secondaryTextColor:'green',
	publisherId:'<<<YOUR PUBLISHER ID HERE>>>'
});
window.add(adview);

var label = Titanium.UI.createLabel({
	text:'Play around with the ad!',
	bottom:40,
	height:'auto',
	width:'auto'
});
window.add(label);

window.open();

(※2011/3/28修正)


後は、上記ソースにpublisherIDを入れれば良い。
このpublisherIDは、AdMobでアカウントを作成し、アプリケーションを登録すると、このIDが発行される。
ここで登録するアプリケーションは、実際にストアで販売するもので無くても大丈夫。テストのため、適当なアプリケーション名を登録してみると良い。

これを使って、2500ドル稼ぐかな〜(無理無理w〜)。

コマンドラインでTitanium Mobileを操作する パート2

おまけ:Mac編 コマンドラインからアプリを実機転送


先ほどのbuilder.py本体で何をやっているかを覗けばだいたい分かる。
そこで、以下のコマンドで実機転送が可能である。

builder.py install [IOSバージョン] [プロジェクトディレクトリ] [AppID] [アプリ名] [プロビジョニング] [デベロッパ認証名]

実際にやってるみると、以下の要領となる。

/Library/Application\ Support/Titanium/mobilesdk/osx/1.6.0/iphone/builder.py
 install 4.3 ./ com.xxxxx.firstTrial firstTrial "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
 "kazuaki konno (xxxxxxxxxx)"

※「x」の箇所は数字


これも毎回打つのは面倒なので、shellスクリプトファイルにしてしまう。

nano install.sh

これでスクリプトファイルを用意して、上記のコマンドを入れて保存する。


実行する際は、プロジェクトフォルダ内で、

sh ./install.sh

以上で、実機転送もできてしまう。


エミュレータ起動にしても、実機転送にしても、コマンドラインから行った方が早い。
他にも、いろいろな事がコマンドラインでできてしまう。興味があれば、builder.pyの中を見ると良い。