android開発環境構築 with Aptana & Titanium

ゼミの卒業制作で、androidアプリを作る方向へ路線変更しました!
そのための環境構築の備忘録っす

ちなみに、Aptanaの日本語化で何回もミスったから
開き直って英語環境で使ってます!
そのへんは自分の環境に置き換えてね〜ノシ

Aptana Studio2にADTインストール

このページに従って
sdkをダウンロード、展開してとりあえず/opt以下に置いといた
次にADT(=Android Development Tools)をAptanaにインストールするんだが、
AptanaでHelp->Install New Softwareで
https://dl-ssl.google.com/android/eclipse/といれても

Cannot complete the install because one or more required items could not be found.
 Software being installed: Android Development Tools 0.9.9.v201009221407-60953 (com.android.ide.eclipse.adt.feature.group 0.9.9.v201009221407-60953)
 Missing requirement: Android Development Tools 0.9.9.v201009221407-60953 (com.android.ide.eclipse.adt.feature.group 0.9.9.v201009221407-60953) requires 'org.eclipse.jdt 0.0.0' but it could not be found

というエラーが…><
org.eclipse.jdt 0.0.0がないってのは分かる。
そりゃAptanaだもんw
調べても分からんのでこれはeclipseに乗り換えないといかんのか〜?
と思いつつ、なにげなくHelp->Check for Updatesで
Aptanaのアップデートをしてからやると、なぜかすんなりインスト成功!
なじぇ??アップデートしたの半年以上前、つまり'10/4月より前だから?


Window->PreferencesをクリックするとGeneralの下にAndroidの項目が!
無事インストできてたね☆
SDK LocationにSDKのあるディレクト
(ウチは/opt以下に置いたので/opt/android-sdk-linux_x86)を指定。
何かしら反応あるかな〜と思ったがApplyを押してもOKを押しても反応がない(T_T)

そしてAptanaのWindow->Android SDK and AVD Managerをクリック。
Available PackagesのSites,Packages and Archivesの下のチェックボックス
チェックを入れて、少し待ったらインストールできるもの一覧が。。
とりあえずauIS01使ってるんで、1.6は必須。
それと1.6以上のものも今後のために一応入れておくか。ということでインストールしとく
インストが終わったら同じくAndroid SDK and AVD Managerの
Virtual Devicesをクリック、Nameにプロジェクト名(ここではAndroid1.6-HVGA)、Targetに
プラットフォーム(同じくandroid1.6)、SD cardはとりあえず512MiB、SKINは
Defaultのままで、Create AVDをクリック!

さて、これでエミュレーターの設定が終わったんだが、作ったばかりの
AVDを選択して起動しようとしても動かないΣ(゚д゚lll)ガーン
なにゆえ!?
これまた調べてみたがよくわからないという結果に…orz


ここは置いといて、先に進むことにした。
File->ProjectをクリックしてAndroid Projectを選択して次へ。
Project Nameを入れてBuild Targetを選択、下の方にある
Propertiesにもそれぞれ入力。このへんの設定がよく分からんからあとで調べるか…
入力し終わったらFinishをクリックして、
早速できたファイルを見てみる。
本家サイトのようにHelloAndroid/src/com.example.helloandroid/HelloAndroid.java

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        	tv.setText("Hello,Android!");
        	setContentView(tv);
    }
}

このように修正して、Run->Runで実行すると

エミュレーターの起動にかなり時間はかかったけど無事に動いてくれましたー\(^o^)/

Titaniumインストール

さて、AndroidアプリはJavaで書かれてるからJava勉強するか〜とか
友達と話してたら、Titaniumってのがあるよ〜-v-と。。

Titaniumとはなんぞや〜?ということで調べてみると、
AndroidアプリをJavaScriptとHTMLで書くことができるフレームワークらしい!
それだけでなく、1つのソースからAndroidアプリ、iPhoneアプリの両方を作れるようにしてくれるのだとか!

ちょうどJavaScriptは勉強してたし、学習コストの面でもこっちかな〜?
(卒業制作の提出期限は来年1月初めってのもありw)Titaniumでやることに。。
Titanium本家サイト


さて、本家サイトからソースをダウンロードしてきて解凍。
インストールしようとしたらgksudo,kdesudoが見つからないとか言われたんで
#./Titanium\ Developerで管理者権限でインストールできた。
インストール場所は/opt/titaniumにしといた。。


起動しようとすると、

"undefined symbol:g_malloc_n" error

こんなエラーが…
このページに従って

rm /opt/titanium/runtime/linux/1.0.0/libg2*
rm /opt/titanium/runtime/linux/1.0.0/libgio*
rm /opt/titanium/runtime/linux/1.0.0/libglib*
rm /opt/titanium/runtime/linux/1.0.0/libgobject*
rm /opt/titanium/runtime/linux/1.0.0/libgthread*

を実行して再度挑戦。

icedteanp plugin error: Failed to run /etc/alternatives/../../bin/java.  For more detail rerun "firefox -g" in a terminal window

こんな感じの警告が…orz
コンソールでfirefox -gと打っても問題なく動くんですが…
特にエラーメッセージとか出てこないんですが…?


管理者権限なら行けるかな?と思ってやってみると、

# ./Titanium\ Developer 
[15:21:03:583] [Titanium.Host] [Information] Loaded module = api
[15:21:04:251] [Titanium.Host] [Information] Loaded module = javascript
[15:21:04:288] [Titanium.Host] [Information] Loaded module = tiapp
[15:21:04:314] [Titanium.Host] [Information] Loaded module = tifilesystem
[15:21:04:334] [Titanium.Host] [Information] Loaded module = tiplatform
[15:21:04:458] [Titanium.Host] [Information] Loaded module = tiui
[15:21:04:485] [Titanium.Host] [Error] Could not load module (/opt/titanium/modules/linux/python/1.0.0/libpythonmodule.so): "Error loading module (/opt/titanium/modules/linux/python/1.0.0/libpythonmodule.so): libpython2.5.so.1.0: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
"
[15:21:04:499] [Titanium.Host] [Information] Loaded module = ticodec
[15:21:04:538] [Titanium.Host] [Information] Loaded module = tidatabase
[15:21:04:551] [Titanium.Host] [Information] Loaded module = tidesktop
libnotify-Message: Unable to get session bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
[15:21:04:630] [Titanium.Host] [Information] Loaded module = tigrowl

(gst-plugin-scanner:6343): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-0.10/libgstsouphttpsrc.so': /usr/lib/libgnome-keyring.so.0: symbol gcry_cipher_setkey, version GCRYPT_1.2 not defined in file libgcrypt.so.11 with link time reference
GConf エラー: 設定サーバ (gconfd) に接続できませんでした: いくつか考えられる原因として、ORBit の TCP/IP ネットワークを有効にしていない、あるいはお使いのシステムで古い NFS のロックがクラッシュを引き起こしたことが考えられます。これに関連する情報については http://projects.gnome.org/gconf/ を参照して下さい: (詳細 -  1: セッションへの接続に失敗しました: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.)
[15:21:07:682] [Titanium.Host] [Information] Loaded module = timedia
[15:21:07:721] [Titanium.Host] [Information] Loaded module = timonkey
[15:21:07:765] [Titanium.Host] [Information] Loaded module = tinetwork
[15:21:07:773] [Titanium.Host] [Information] Loaded module = tiprocess
[15:21:07:779] [Titanium.Host] [Information] Loaded module = tiworker
[15:21:07:779] [Titanium.Javascript] [Information] Loading JS path=/opt/titanium/modules/linux/tianalytics/1.0.0/tianalyticsmodule.js
[15:21:07:803] [Titanium.Host] [Information] Loaded module = tianalytics
[15:21:07:803] [Titanium.Javascript] [Information] Loading JS path=/opt/titanium/modules/linux/tinotification/1.0.0/tinotificationmodule.js
[15:21:07:817] [Titanium.Host] [Information] Loaded module = tinotification
[15:21:07:817] [Titanium.Javascript] [Information] Loading JS path=/opt/titanium/modules/linux/tiprocess/1.0.0/tiprocessmodule.js
[15:21:07:827] [Titanium.Host] [Information] Loaded module = tiprocess
[15:21:07:827] [Titanium.Javascript] [Information] Loading JS path=/opt/titanium/modules/linux/tiworker/1.0.0/tiworkermodule.js
[15:21:07:830] [Titanium.Host] [Information] Loaded module = tiworker
GConf エラー: 設定サーバ (gconfd) に接続できませんでした: いくつか考えられる原因として、ORBit の TCP/IP ネットワークを有効にしていない、あるいはお使いのシステムで古い NFS のロックがクラッシュを引き起こしたことが考えられます。これに関連する情報については http://projects.gnome.org/gconf/ を参照して下さい: (詳細 -  1: セッションへの接続に失敗しました: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.)
GConf エラー: 設定サーバ (gconfd) に接続できませんでした: いくつか考えられる原因として、ORBit の TCP/IP ネットワークを有効にしていない、あるいはお使いのシステムで古い NFS のロックがクラッシュを引き起こしたことが考えられます。これに関連する情報については http://projects.gnome.org/gconf/ を参照して下さい: (詳細 -  1: セッションへの接続に失敗しました: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.)
GConf エラー: 設定サーバ (gconfd) に接続できませんでした: いくつか考えられる原因として、ORBit の TCP/IP ネットワークを有効にしていない、あるいはお使いのシステムで古い NFS のロックがクラッシュを引き起こしたことが考えられます。これに関連する情報については http://projects.gnome.org/gconf/ を参照して下さい: (詳細 -  1: セッションへの接続に失敗しました: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.)

** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param

*** Unable to locate valid config! Falling back to auto-detection...
*** Unable to locate PAC! Falling back to direct...

** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_ispell.so: undefined symbol: enchant_fopen


** (Titanium Developer:6341): WARNING **: Error loading plugin: /usr/lib/enchant/libenchant_myspell.so: undefined symbol: enchant_get_dirs_from_param

/usr/src/packages/BUILD/icedtea6-1.8.1/plugin/icedteanp/IcedTeaNPPlugin.cc:1506: thread 0x80d8ba8: Error: Failed to spawn applet viewer: /etc/alternatives/../../bin/java を子プロセスとして起動できませんでした: そのようなファイルやディレクトリはありません
*** Unable to locate valid config! Falling back to auto-detection...
*** Unable to locate PAC! Falling back to direct...
*** Unable to locate valid config! Falling back to auto-detection...
*** Unable to locate PAC! Falling back to direct...
[15:21:23:369] [Titanium.API] [Error] Exception communicating to update service: TypeError: Result of expression 'TiDev.messageArea' [undefined] is not an object.
** Message: console message:  @0: [15:21:23:369] [Titanium.API] [Error] Exception communicating to update service: TypeError: Result of expression 'TiDev.messageArea' [undefined] is not an object.

** Message: console message:  @0: [15:21:23:369] [Titanium.API] [Error] Exception communicating to update service: TypeError: Result of expression 'TiDev.messageArea' [undefined] is not an object.

*** Unable to locate valid config! Falling back to auto-detection...
*** Unable to locate PAC! Falling back to direct...
*** Unable to locate valid config! Falling back to auto-detection...
*** Unable to locate PAC! Falling back to direct...
*** Unable to locate valid config! Falling back to auto-detection...
*** Unable to locate PAC! Falling back to direct...
[15:26:13:936] [Titanium.API] [Error] Exception communicating to update service: TypeError: Result of expression 'TiDev.messageArea' [undefined] is not an object.
** Message: console message:  @0: [15:26:13:936] [Titanium.API] [Error] Exception communicating to update service: TypeError: Result of expression 'TiDev.messageArea' [undefined] is not an object.

** Message: console message:  @0: [15:26:13:936] [Titanium.API] [Error] Exception communicating to update service: TypeError: Result of expression 'TiDev.messageArea' [undefined] is not an object.

こんな感じの長ったらしいエラーが…><

[15:21:04:485] [Titanium.Host] [Error] Could not load module (/opt/titanium/modules/linux/python/1.0.0/libpythonmodule.so): "Error loading module (/opt/titanium/modules/linux/python/1.0.0/libpythonmodule.so): libpython2.5.so.1.0: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
"

こんなこと言ってるから、とりあえずPython関係のエラーか?と当りをつけて
YaSTで検索かけてみるが2.6しかない…
それでぐぐってみると、どうやらTitaniumはPython2.6以上に対応してないようだ
それならPython2.5を入れればいいんじゃね?ということなんだが、
ここによるとただソースからインストしてもうまくいかないようだ
さて、どーするか?ということで、
選択肢1.Windowsを使う
選択肢2.仮想化を使う


せっかくsuse使ってる(?)んだから仮想化ダヨネ☆ということで
vmware入れて再挑戦!OSはPython2.5がデフォルトで使えるUbuntu8.04をチョイスしてみた

使ってるノートPCが8年ほど前のやつなんでスペック的にいっぱいいっぱいだが、
なんとか仮想化は動きそう…<-まだTitaniumは試してない


ちょっと助言をいただいて、ActivePython入れてみることに。。
ここからPython2.5をインストールして、実行してみると

[[11:28:25:158] [Titanium.Host] [Error] Could not load module (/opt/titanium/modules/linux/python/1.0.0/libpythonmodule.so): "Error loading module (/opt/titanium/modules/linux/python/1.0.0/libpythonmodule.so): libpython2.5.so.1.0: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません

という同じエラーが…
これもダメか?とか思ってたら何故か動いたw


せっかくなんで本家サイトにあるKitchen Sinkを試そうとしたが、
エミュレーターのエラーかな?
[ERROR] /opt/android-sdk/tools/apkbuilder
とか
/opt/android-sdk/tools/adbが見つからないというエラーが…
ん〜、、、adbはあるはずなんだがなー?
他にはjava関連のエラーがアラートで出てくるが…
とりあえずコンソールにunable to locate...とか出てくるから
パーミッション関係かな〜と思い管理者権限で立ち上げてみるが変わらず…
で、ふと見たらエミュレータ動いてる?
そのままにして置きたくないけどまあいっか?


よくわからないので分かる人教えてくださいm(_ _*)m