« 2011年9月 | トップページ | 2012年2月 »

2011年10月21日 (金)

Android 4.0のAVDがSegmentation faultする(Ubuntu11.04)

Android 4.0が公開された。
早速、SDKをダウンロードして、
AVDを作成。

で、起動してみた。


・・画面すぐ消えるんだけど・・。
しかも、Android 4.0のAVDだけ。

別のPCで試すと動くのだけど、
ノートPC(VAIO君)でやるとだめ。
(Ubuntu 10.10と11.04)

いじってみると、追加された、
「ウェブカメラエミュレーション」の
影響でSegmentation fault が発生してる模様。

 ウェブカメラエミュレーションは、
 adakodaさんのページにあるので、
 興味ある方はぜひ。


予想だけど、
カメラ付きのPCだと、
発生する可能性があるのかな。
(Windowsはさっぱり)

解決方法は、2つある。
 1.エミュレータ起動時にオプション指定
 2.AVDの設定ファイルを変更


1.エミュレータ起動時にオプション指定
 adakodaさんのページにある、
 ウェブカメラエミュの機能を無効化する方法。
 "-webcam off" を付ければいい。
 なので、こんなコマンドになる。
  $emulator @ICS -webcam off


2.AVDの設定ファイルを変更
 こっちは、
 Googleグループの
 Android Developers にあった方法。

 AVDの設定ファイルの「config.ini」に、
 以下の1行を追加。
  hw.webcam.count = 0

 AVD managerで作ると、
 ~/.android/avd/<名前>.avd/config.ini
 になるのかな。


最後にFaultの場合のログの最後の部分を張り付けておく。
(最後繰り返しっぽいので・・)
$strace emulator @ICS とやった場合のログ。


--- SIGALRM (Alarm clock) @ 0 (0) ---
clock_gettime(CLOCK_MONOTONIC, {19671, 86038083}) = 0
clock_gettime(CLOCK_MONOTONIC, {19671, 86069175}) = 0
sigreturn() = ? (mask now [])
clock_gettime(CLOCK_MONOTONIC, {19671, 86341994}) = 0
--- SIGALRM (Alarm clock) @ 0 (0) ---
clock_gettime(CLOCK_MONOTONIC, {19671, 87045010}) = 0
clock_gettime(CLOCK_MONOTONIC, {19671, 87080382}) = 0
sigreturn() = ? (mask now [])
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Segmentation fault

同じようにはまってる人がいないことを祈って・・。


リンク:
「[Android] エミュレーターで
 ウェブカメラエミュレーションを使用する」
 by adakoda様

「SDK 4, if I select WXGA resolution,
emulator doesn't start.」
 from Android Developers

| | コメント (0) | トラックバック (0)

2011年10月13日 (木)

onPause()とonStop()の経路

勉強会の資料を作るついでに、
ActivityのonPause()/onStop()が
呼ばれる場所を調べてみた。

前回のonResume()と同じく、
個人メモ程度だけど・・。

関係者は同じくこれぐらいかな。
 android.app.Instrumentation
 android.app.Activity
 android.app.ActivityThread

ActivityをPause/Stopするのは、
こんなケースになるのかな。
(必要そうなところだけ抜粋)
関数の後にインデントがあるのは、
内訳って感じで・・。
(ifの中身もインデント)


ポーズする場合。
元々onSaveInstanceState()を見たかっただけなの。

ActivityThread.handlePauseActivity()
 if (userLeaving)
  performUserLeavingActivity()
   mInstrumentation.callActivityOnUserLeaving()
    activity.performUserLeaving()
     onUserInteraction()
     onUserLeaveHint()
 performPauseActivity(IBinder,?,?)
  performPauseActivity(ActivityClientRecord,*,*)
   mInstrumentation.callActivityOnSaveInstanceState()
    activity.performSaveInstanceState()
     onSaveInstanceState()
     saveManagerdDialogs()
   mInstrumentation.callActivityOnPause()
    activity.performPause()
     onPause()
   listeners.get(i).onPaused()
 ActivityManagerNative.getDefault().activityPaused()


再起動する場合。
これがどんな場合に発生するのか不明だけど、
一旦閉じてからの起動になるのかな。

handleRelaunchAcitivity()
 handleConfigurationChangede()
 performPauseAcitivity()
 handleDestroyAcitivity()
 handleLaunchActivity()


ストップする場合。
正直、onPauseと間違えて調べた・・。
(中途半端かも・・)

ActivityThread.handleStopActivity()
 performStopActivityInner()
  activity.performStop()
   mInstrumentation.callActivityOnStop()
    activity.onStop()
 updateVisibility()
 ActivityManagerNative.getDefault().activityStopped()


見えなくなる場合。
呼ばれるケースがあったのでついでに。

ActivityThread.handleWindowVisibility(?,false)
 performStopActivityInner() →上で。

詳しく知りたい方は、がんばって・・(謎)
Resumeと同じくGingerBread。

| | コメント (0) | トラックバック (0)

2011年10月12日 (水)

onResume()の経路

勉強会の資料を作るついでに、
ActivityのonResume()が呼ばれる場所を
調べてみた。

個人メモ程度だけど・・。

関係者はこれぐらいかな。
 android.app.Instrumentation
 android.app.Activity
 android.app.ActivityThread

ActivityThreadが管理してるイメージなのかな。
Instrumentationの役割がよくわからないが、
よく真ん中にいる。

ActivityをResumeするのは、
こんなケースになるのかな。
(必要そうなところだけ抜粋)

関数の後にインデントがあるのは、
内訳って感じで・・。
(ifの中身もインデント)


リジュームする場合1。
onStop後だと、onStartを呼ぶルートがある。

ActivityThread.handleResumeActivity()
 ActivityThread.performResumeActivity()
  if (pendingIntents)
   deliverNewIntents()
  if (pendingResults)
   deliverResults()
  activity.performResume()
   performRestart()
    if (mStopped)
     mInstrumentation.callActivityOnRestart()
      activity.onRestart()
     performStart()
   mInstrumentation.callActivityOnResume()
    activity.onResume()
   onPostResume()


リジュームする場合2。

Activity.performResume()
 Instrumentation.callActivityOnResume(this)
  activity.onResume()
 onPostResume()


起動する場合1。

ActivityThread.handleLaunchAcitivity()
 performLaunchActivity() →下で。
 handleResumeActivity()


起動する場合2(続き)。
onCreate→onStart→onResumeの流れが見える。

performLaunchActivity()
 mInstrumentation.callActivityOnCreate()
  activity.onCreate()
 activity.performStart()
  mInstrumentation.callActivityOnStart()
   activity.onStart()
 mInstrumentation.callActivityOnRestoreInstanceState()
  activity.performRestoreInstanceState()
   onRestoreInstanceState()
 mInstrumentation.callActivityOnPostCreate()
  activity.onPostCreate()


詳しく知りたい方は、
ソースでもがつがつと・・。
上の調査は、Gingerbreadのソースから。
(バージョンはどれだろう・・)

| | コメント (0) | トラックバック (0)

2011年10月 6日 (木)

「相手に9割しゃべらせる質問術」を読んで

話すのが苦手なので・・

相手に9割しゃべらせる質問術
おちまさと:著(PHP新書)
を読んでみた。


エッセンス的なことは書いてあるが、
やっぱり訓練なんだな。
その証拠に、
最後に「エクササイズ」がついてた。

エッセンス的には、
相手をよく観察することと、
素直さというか真摯さになるのかな。


流れの導入とか、方向性とか、
テクニック的なことも書いてある。
一方で、
相手がいることなので・・と、
各所にちりばめられている。

そして、結論的に、
場慣れというか、
経験値を稼ぐ必要があると進む。

その根底となる心構えが
この本の中心になっている。
そんな印象を受けた。


話を続ける手段がほしいと
手に取った記憶があるが、
ちょっと私には早かったかな。

まずは、まねまね用の
文言集でも探した方が
てっとり早そう。

質問がある程度できてる人には、
心構えを学ぶ意味でいいのかもしれない。


リンク:
amazon(この本)
おちまさとオフィシャルブログ

| | コメント (0) | トラックバック (0)

2011年10月 5日 (水)

OSC広島2011に行ってみた

セミナーの事前登録無しに、
OSC広島に行ってきた。

でも、なぜか、
スタッフ登録されてたんだけど・・(汗)
スタッフらしいことしてないけど・・(滝汗)


今回が広島初らしいけど、
なんか人がいっぱいいた。

全体的に狭い印象があったけど、
初めてだとそんなもんなのかなぁー。
セミナーによっては、
入れないところもあったようで、
盛り上がってたのかな。
(私も中国GTUGのに入れなかった・・)


参加してきたセミナーは、
キーワード的に、
QT、クラウド、KVM、
NetBSD、キャリアデザイン。

内容と関係ないけど、
MACでのプレゼン率が高かった。

それでは、簡単にひとつずつ。

QTは便利そうだけど、
私にはC++の壁が・・。
追加されたQT quickなるものが、
なかなか取っつきやすそうだった。
これでUIだけとかいいかも。

クラウドは、IIJさんの話。
ぶっちゃけ、web関係さっぱりだけど、
インフラ提供が使命という感じが
伝わってきた。
Rubyの環境提供というのも、
方向のあったサービスになる気がする。

KVMの話は、環境構築の話。
説明ができそうな感じで聞けたし、
注意点とか聞けたのでやってみたいが・・。
説明がFedoraだったので、保留。
やっぱ、Ubuntuがいいな。

NetBSDな話。
と思いきや、x68kのエミュの話だった。
x68kは特に・・だったので。
でも、エミュの苦労話は、
なかなかおもしろかった。
アライメントの話とか、
エミュならではのバグ発見談とか、
普段聞けないよね。

最後に、キャリアデザインな話。
いきなり、
就職して目指してたイメージと
仕事内容が違ってた話から始まった。
身に染みて感じてることだけど、
前からそんなんだったのね・・。
そして、一番印象だったのは、
「知識の陳腐化」みたいな言葉かな。
いろいろ考えないとなぁ。


ってことで、簡単に、振り返ってみた。
全体的におもろい話を聞けたけど、
キャリアデザインの話が
今一番合ってたのかな。

次回もあれば、また参加したいな。
(もっとゆったり会場希望・・)


リンク:
OSC広島2011の公式

| | コメント (0) | トラックバック (0)

« 2011年9月 | トップページ | 2012年2月 »