2010年July30日(Fri) 00:26 JST
空き時間ができたもので、久々にAndroidプログラミングでもしてみようかと
思い立ちました。
環境を確認してみると、SDKがなんと1.5r3のまま放置されています。
最新のSDKをインストールして、eclipseもついでに 3.4から 3.5へと
アップグレードしました。いざサンプルプロジェクトをコンパイルしようと
するとエラーがでて止まってしまいます。
「Error generating final archive: Debug certificate expired」
ん?なんだこれ。
Android SDKのパスが通っていないのか、Javaのパスが通っていないのか
と確認したり、もう一度 eclipseのインストールをやり直してみたりして
もやはり一緒。エラーが出てコンパイルできません。
そもそも expiredって? SDKは無料で使えるんじゃなかったの?
試用版みたいに期限があったの?期限っていっても新しいSDKに
入れ替えたばかりなのに・・・・
しかたないので検索エンジン様に頼りました。
「.android/debug.keystoreというファイルを消せ」とのこと。
1.5r1のころにコンパイルしてできたファイルが期限を超えていた
ようです。なんで1年間で期限を切るようにしているのか、意味が
わかんないです。
しかも偶然にも 1年前のファイルと今回の環境アップデートが重なった
おかげでてっきり今回の環境構築のどこかがミスっているかと
勘違いしてしまいました。
Androidの会と日経BPさんとが協同で開催したXPERIAの体験イベントに参加してきました。
会場入りすると受付でXPERIAを渡してくれました。(帰りに返さないといけませんが・・・)勉強会の間中、さわりまくれるという趣向です。ただし、SIMを挿してはいけませんと念押しされました。なので用意してくださっていたWiFiを利用しての体験です。
肝心のXPERIAを使った感想ですが、
は感じましたが、それだけですかね。
逆に不満に感じたのは
あたりですかね。
裏蓋をあけて、バッテリ・SIM・MicroSDカードを交換することになるのでしょうけれども、その裏蓋がかなりちゃちく見受けられました。大丈夫かな?これって。それにバッテリを外さないとMicroSDカードを抜き差しできないなんて、データのやりとりを考えているユーザからみれば面倒にうつるでしょう。
画面タッチはかなりあやしいです。ブラウザ画面で目的のリンクを指で選んでもなぜか2行ぐらい下が選ばれてしまいます。まったくタッチに反応してくれないこともしばしば。逆にスクロールしたいだけなのに、「選択」ととらえられてしまったり。EMONSTERに入れたAndroidのほうがこのあたりについてはしっかりしているように思います。この画面タッチのイマイチさに付随して、画面スクロール用のキーがついていないのが残念です。CLIEについていたジョグダイアルが恋しくなりました。
SQL Serverってたまにしか使わないので、よく忘れる・・・・
SQL Server にハングル文字を登録しようとして思いっきり躓きました。知っていればどうといったこともないことなんでしょうが。最近のMicrosoft製品は、(Microsoftに限らず世の中ほとんどそうかもしれませんが) Unicode対応されています。なので問題なくハングル文字とて登録できるものと思ってました。
ハングル文字を登録するINSERT文をファイルに書き込んでSQL ServerのManagement Studioで動かしてみる。と、なぜかハングル文字が「?」に化けます。しょうがないので、Visual Studioの Web Developerで C#のコードを書いて 先ほどのINSERT文のファイルを読み込み実行、、、、うまくいかない!
さっぱりわからなくて数日悩んでしまいました。(他の事に時間とられてたのもあるけど)
原因は SQLでハングル文字を表記するのに単純にシングルクオテーションで囲っただけだったからです。Unicode対応させるにはシングルクオテーションの前に「N」をつけなければなりません。「VALUES ( N'ハングル' ) 」みたいに。なんだよこれ、って正直思いました。普通に「VALUES ( 'ハングル' )」でいいやんけ!と思うんだけど、わざわざNをつけなきゃいけないという意味がわからんです。デフォルトUnicodeちゃうのん??
あと、ファイルのコードも、UTF8Nではダメで、UTF-16LE-BOMならC#で通りました。Management Studioのほうでは、UTF8Nでも通りましたけどね。UTF-16LE-BOMでしか通らないんだから、ますますNが必要な意味がわからんです。
慣れてる人ならこんなの常識なんでしょうけれどねぇ。
CakePHPのSecurityコンポーネントって扱いづらいですよね。でもやっぱりセキュリティには気をつけておきたいし・・・・ デフォルトでは使用して、局所的に適用を外す・・・ということができたらいいな、と思ってました。でもやり方がわかんなかったんですね。
日本語化したドキュメントには、$disabledFieldsに無視するフィールドを入れると評価対象にならないという記述があります。これ使うと、Javascriptで値を変えたりする項目があった時には便利ですが、それでも data['_Token']は発行されています。
他のアクションではSecurityコンポーネントを使っていても、あるアクションだけはSecurityコンポーネントを外したい、そういった使い方は日本語化したドキュメント読んでてもわかんなかったのですが、ソースみて気がつきました。
$this->Security->enabled = false;
これです! これでSecurityコンポーネントを止めることができます。単純だったんですね。
じつはWebシステムではなかったりするのですが・・・・
とあるWebシステムで使っている複数のDBからいろいろ集計するために毎日定時にバッチ処理を走らせようとするもの。これを「ちいたん」使ってやってみることに。
ビューは使わず、action()内にやりたいことを記述してけば、コマンドラインのスクリプトと同等に動きます。
ところが、あるDBのテーブルから値を取得して別のDBのテーブルへ値を書き込むことはできたのですが、日本語の文字列が文字化けしています。
1.6→2.0へのアップグレードは eclipse上でできる、みたいな記事を読んでやってみてから、ハマってしまいました。たしかにeclipse上でアップグレードできた(みたいにみえた)のですが、次に使おうとeclipseを起動すると、ADTがメニュー上から消えてなくなってました。
しょうがないので、もういちどインストールしようとすると、「もう入っているよ!」という意味のメッセージがでてインストールさせてくれません。ちょうどubuntuも 9.10が出たところなので、ubuntu 9.10へアップグレードした後に再挑戦しました。
dynabook SS 1610ですが、WinXP/ubuntuのデュアルブートにしています。
HDDが40GBしかないので、ubuntu用にちょっとしかパーティション割り当てをしてなかったせいか、ubuntuでハイバネーションしようとすると、swap領域が足りないと言われてしまいました。
GPartedで起動してパーティションを増やした後、mkswapして、vol_idでuuidを調べ、/etc/fstabと/etc/initramfs-tools/conf.d/resumeのuuidを修正し、swaponと、dpkg-reconfigure initramfs-toolsをしました。これで無事ハイバネーションできるようになりました。
普段はデスクトップ機を使っているのだが、やはり出先でノートを使いたくなることもあるもの。所有しているノートPCもずいぶんと古くなってしまいました。なにせPentium3の600MHz/メモリ192MBですから。
ヤフオクでdynabook SS 1610が 1万円で出ていたものですから、思わず落札してしまいました。しかし掲示では無線LANつきモデルだったのに届いたのを確認してみれば、無線LANなしモデルでした。出品者に連絡とると、1500円OFFにしてくれました。けっこうお買い得!!
とはいえ、PCカードやらUSBやらで無線LANをつなげると、出っ張りが不格好です。やはり無線は内蔵がいいな、というところで、無線LAN内蔵手術を施しました。
ふつう、ノートに無線LANモジュールを入れるといえば、裏蓋をあけて、miniPCIスロットに差し込むという流れになるのでしょうが、このdynabookはminiPCIスロットが完全に内部に隠れています。筐体あけて、マザボを取り外さないといけません。さらにそれだけではデバイスの認識はするけれど、使えないという情報がネットに。無線LANをON/OFFするスイッチをつけなきゃいけないようです。
http://otd12.jbbs.livedoor.jp/1000036858/bbs_plain?base=240&range=1
↑上記ページを参考に、無線LANのON/OFFスイッチを増設しました。
このページの写真はかなりアップで写しています。あけてびっくり、この狭い範囲で本当に半田付けができるのか、かなりビビリました。なにせもう十年ぐらい半田付けなんてやってませんし。でもがんばって完成しましたよ。ちゃんとスイッチでON/OFFできるようになりました。よかった、よかった。
いつのまにやら BINDを起動すると、エラーログに「the working directory is not writable」という文字が出るようになっていました。
みてみると namedの設定ファイルとかが置かれているディレクトリの所有者が namedでなく、rootに変わってました。それを直して named停止、named起動。
でもやっぱり同じエラーが出てきます。
あれ?? さっきなおしたはずの所有者がまた rootに戻っている。
よくよく試してみると、/etc/rc.d/namedを使って起動すると、勝手に所有者を変えてしまうようです。所有者を変えて、namedを手打ちで起動させるとエラー出ずに動きます。
そっか、これじゃぁ何度ディレクトリ所有者をchownとかしても無駄でしたね。
/etc/mtree/BIND.chroot.distの「/set type=dir uname=root gname=wheel mode=0755」をuname=bindへ修正すると、エラーが出なくなりましたし、ディレクトリ所有者もbindになりました。
今更ながらですが、S11HT (EMONSTER)を中古で入手しました。
分厚いのと画面表示がQVGAであることをのぞけばWindowsMobile機としてよく
できた端末だと思います。ただ、同じWMのAxim X51vを放り出して買うほどで
もないのに買ったのは、そう、Android化できるからにほかなりません。
DoCoMoに毎月上納金を納めるほどの財力はありませんので、Androidで遊ぶに
はコイツがちょうどいいところです。
■しばらく使ってみた印象
◇電池のもちが悪い。
WindowsMobile機として使っているときよりも電池残量がどんどん減ります。
なにもしないでほっとくだけでもどんどん減ってくので、使用率に応じて
パワーセーブする機構がまだできていないのでしょうか。それとも設定で
きるけど気がついてないだけ?? Android状態のまま放っておくと、電池
残量がなくなってしまうので、使うたびにAndroid終了させてます。
ちょっと実用じゃないですね。
◇WiFiとW-CDMAがなぜか共存できない。
ようやくWiFi対応がなされましたが、なぜかWiFi対応カーネルで起動すると
W-CDMAが繋がらなくなってしまいました。WiFi未対応に戻すと使えます。
基本的にWiFiでつなぐことが多いでしょうからなんとか我慢できますが、
いちいちリブートしてファイル書き換えてAndroid起動させるのは面倒です
ね。
Geeklogへようこそ!
Geeklogのサポートは、Geeklog Japaneseへ。ドキュメントは Geeklog Wikiドキュメントをどうぞ。