FC2ブログ

Android sdkをwindows 7(64bit)で使う

Android開発をする時の環境構築でエラーが出たのでメモ。

基本の通りに

・AndroidSDKのインストール
・path設定
・Eclipseのインストール
・EclipseにAndroidPluginのインストール



ここまでは問題無くいける。

仮想デバイスの設定で

C:\> android list targets


でデバイスIDを調べようと思ったら、エラーが。

WARNING: Java not found in your path.
Checking it it's installed in C:\Program Files\Java instead.



フォルダを見ると、C:\Program Files (x86)にはJavaがあるけど、C:\Program Filesの中にはJavaが無い
という事は64bit用のjreが入ってないって事。

oracleのサイトからjreをダウンロードし、インストールすると、さっきのエラーは無くなって、デバイスIDのリストがしっかりと表示されます。

C:\>android list targets

Available Android targets:
id: 1 or "android-3"
   Name: Android 1.5
   Type: Platform
   API level: 3
   Revision: 4
   Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
id: 2 or "Google Inc.:Google APIs:3"
   Name: Google APIs
   Type: Add-On
   Vendor: Google Inc.
   Revision: 3
   Description: Android + Google APIs
   Based on Android 1.5 (API level 3)
   Libraries:
   * com.google.android.maps (maps.jar)
   API for Google Maps
   Skins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
id: 3 or "android-4"
   Name: Android 1.6
   Type: Platform
   API level: 4
   Revision: 3
   Skins: HVGA (default), QVGA, WVGA800, WVGA854
id: 4 or "Google Inc.:Google APIs:4"
   Name: Google APIs
   Type: Add-On
   Vendor: Google Inc.
   Revision: 2
   Description: Android + Google APIs
   Based on Android 1.6 (API level 4)
   Libraries:
   * com.google.android.maps (maps.jar)
   API for Google Maps
   Skins: WVGA854, HVGA (default), WVGA800, QVGA
id: 5 or "android-7"
   Name: Android 2.1-update1
   Type: Platform
   API level: 7
   Revision: 2
   Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854
id: 6 or "Google Inc.:Google APIs:7"
   Name: Google APIs
   Type: Add-On
   Vendor: Google Inc.
   Revision: 1
   Description: Android + Google APIs
   Based on Android 2.1-update1 (API level 7)
   Libraries:
   * com.google.android.maps (maps.jar)
   API for Google Maps
   Skins: WVGA854, WQVGA400, HVGA (default), WQVGA432, WVGA800, QVGA
id: 7 or "android-8"
   Name: Android 2.2
   Type: Platform
   API level: 8
   Revision: 2
   Skins: HVGA (default), QVGA, WQVGA400, WQVGA432, WVGA800, WVGA854
id: 8 or "Google Inc.:Google APIs:8"
   Name: Google APIs
   Type: Add-On
   Vendor: Google Inc.
   Revision: 2
   Description: Android + Google APIs
   Based on Android 2.2 (API level 8)
   Libraries:
   * com.google.android.maps (maps.jar)
   API for Google Maps
   Skins: WVGA854, WQVGA400, HVGA (default), WQVGA432, WVGA800, QVGA



スポンサーサイト



PHP5.3でCakePHPエラー

PHPを5.2から5.3にすると、CakePHPでエラーが出た。

Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in~


timezoneの設定がまずい。We selected 'Asia/Tokyo' for 'JST/9.0/no DST' 
設定を直せって事かな。

まずはapp/config/core.phpを見てみる。

/**
* If you are on PHP 5.3 uncomment this line and correct your server timezone
* to fix the date & time related errors.
*/
//date_default_timezone_set('UTC');

5.3の場合は、コメントを外してサーバーのタイムゾーンを設定するって事かな。
コメントアウトして設定

date_default_timezone_set('Asia/Tokyo');



エラーが出なくなった。


PHP5.3インストールでエラー

PHP5.3.3がリリースされた。5.2を使っているので、この機会にと5.3への移行をする。

・お決まりのソースの取得、解凍(/usr/local/srcにて)

$ wget http://jp.php.net/get/php-5.3.3.tar.gz/from/jp2.php.net/mirror
$ tar zxvf php-5.3.3.tar.gz
$ cd php-5.3.3



・configure
5.2で設定したものをそのまま使用

./configure \
--prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--build=i686-redhat-linux-gnu \
--target=i386-redhat-linux \
--cache-file=../config.cache \
--datadir=/usr/share \
--host=i686-redhat-linux-gnu \
--includedir=/usr/include \
--infodir=/usr/share/info \
--libdir=/usr/lib \
--libexecdir=/usr/libexec \
--localstatedir=/var \
--mandir=/usr/share/man \
--program-prefix= \
--sbindir=/usr/sbin \
--sharedstatedir=/usr/com \
--sysconfdir=/etc \
--enable-calendar \
--enable-cli \
--enable-dom \
--enable-exif \
--enable-ftp \
--enable-gd-native-ttf \
--enable-json \
--enable-mbstring=all \
--enable-mbregex \
--enable-pdo \
--enable-shmop \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-ucd-snmp-hack \
--enable-wddx \
--enable-xmlreader \
--enable-xmlwriter \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-curl=/usr \
--with-exec-dir=/usr/bin \
--with-freetype-dir=/usr \
--with-gd=/usr \
--with-gdbm \
--with-gettext \
--with-jpeg-dir=/usr \
--with-kerberos \
--with-layout=GNU \
--with-libdir=lib \
--with-libxml-dir=/usr \
--with-mcrypt \
--with-mysql \
--with-pgsql \
--with-openssl \
--with-pear \
--with-pic \
--with-png-dir=/usr \
--with-pspell=/usr \
--with-sqlite \
--with-t1lib=/usr/local \
--with-xpm-dir=/usr \
--with-zlib \
--without-mime-magic \
--enable-zend-multibyte \



configureが通ったので、makeすると途中でエラーが。

/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] エラー 1

ltdlが無いと言われている、、、って事はひょっとしてlibtool?
試しにyumにて試みる。

# yum install libtool-ltdl-devel


Dependencies Resolved

=================================================
Package Arch Version Repository Size
=================================================
Installing:
libtool-ltdl-devel i386 1.5.22-7.el5_4 base 31 k
Installing for dependencies:
libtool-ltdl i386 1.5.22-7.el5_4 base 37 k

Transaction Summary
=================================================
Install 2 Package(s)
Upgrade 0 Package(s)


インストールして、再度makeすると通った!通常通りにmake installにて完了。

設定ファイルが、php.ini-developmentとphp.ini-productionに分かれている。
開発用なので、php.ini-developmentを/etc/php.iniへ。

apacheを起動すると表示は出来たけど、CAKEPHPでエラーが出るようになった。
php.iniを見ると、5.2の時と若干違うな。

また設定は後で。

printとechoどっちを使う

昔、基本の表示はprintで、エラーとか一時的に表示するのはechoで
と、根拠の無いコーディングルールの会社があって、それが正しいと信じてた。

最近はずっとechoばかり使っているんだけど、「あれ?なんでだ?」と急に思い改めて調べてみる事に。

print
print ― 文字列を出力する

int print ( string $arg )


返り値
常に 1 を返します。



echo
echo ― 1 つ以上の文字列を出力する

void echo ( string $arg1 [, string $... ] )


すべてのパラメータを出力します。
返り値
値を返しません。


実際には、
print 'test';
echo 'test';

と()は必要が無い。昔あるPHP本だと、printには必ず付けるとかあったような無いような、、、
どちらも関数では無く、言語構造なので、()が無くても表示は出来る。

違いはって考えると、
echo "test1","var1";は出来るけど
print "test1","var1";はエラーになる。

複数の文字列(パラメーター)を出力出来るけど、printは文字列を出力するのでエラー。

後は帰り値がechoだと無いので、若干速い。(といっても目に見える差ではないけど)。

unixのコマンドではechoはあるけど、printは無い。

使い訳はやはり入ったプロジェクトだったり、会社だったりのルールでやればどっちでもいいのかと思う。

Mysqlにgroongaをインストール(補足)

ストレージエンジンのリファレンスに

test/sql/t の中のファイルに

ファイル一覧

btree.test delete.test drop_table.test hash.test select_all.test show_create_table.test update.test
create_table.test drop_database.test fulltext.test insert.test select_pkey.test show_table_status.test

ここに記述されているSQL文が現在利用可能なSQL文となります。



と書いてあるファイルが見つからなかったのだが、見つかった。

ダウンロードページを見れば解るけど、ストレージエンジンのソースコードではなく、
(※groonga-storage-engine-0.1.tar.gzではない)

ページの下にあるhttp://github.com/mroonga/mroonga/tarball/v0.1の中にあった。
プロフィール

hryu72

Author:hryu72
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR