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の下のチェックボックスに
チェックを入れて、少し待ったらインストールできるもの一覧が。。
とりあえずauのIS01使ってるんで、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