2013年2月21日木曜日

Conversion to Dalvik format failed with error 1

仕事で開発しているアプリで、apkを出力する際に以下のエラーメッセージが表示されて、apkが作成出来ない状態になりました。
Conversion to Dalvik format failed with error 1

このエラーメッセージで検索すると、同じ症状に遭遇している人は結構いるらしいことがわかります。
ただ、どのサイトも解決策がはっきりしない印象です。
この症状について書かれているのはだいたい以下の点です。

・Androidのソース形式のライブラリを参照するプロジェクトで起きている
・プロジェクトのcleanを行ったら直った
・Eclipseに-cleanオプション付けて起動し直したら直った
・binとgenディレクトリを削除したら直った

自分もこのあたりは試したのですが、直りませんでした。
その後、いろいろ試しているうちに、binの中のファイルをたまたま開きました。すると、Eclipseから同期されてない状態になっていたのです(refreshしろと言われる状態)。
なんとなくあやしいと思い、binディレクトリをリフレッシュした後、apkの作成を試してみると…ちゃんと出力されるではありませんか!

ただ、これで完全に解決したわけじゃないのですよね…。
その後、プロジェクトをcleanしたら、また同じ症状が…。またbinをリフレッシュしたり、もう一回cleanしてみたりしていたら、再びapk作成が成功…。よくわかりません。
原因を特定出来るようなエラーメッセージがどこかに出力されてると良いんですが…(されてるけど英語を読めてないだけかな…?)。
一応apk作成に成功する(こともある)ようになったので、あまりコレばかりに時間をかけるわけにもいかず、よくわからないまま、また必要性になったら調べることにしました。
 うーん、どうもすっきりしません。

ご存知の方がこの記事を読まれましたら、コレどうしたら良いのか是非とも教えてくださいませ。よろしくお願いします。

追記:
[menu - Project - Build Automatically]のチェックを付けていると失敗しやすいような気がします。

2013年2月18日月曜日

画面遷移時にIMEを表示しない方法

Androidのアプリで、画面遷移時にIMEを表示しない方法について。
検索すればいくらでも出てくるだろうけど、備忘録としてメモ。


AndroidManifest.xmlの対象の<activity>に以下を記述する。

android:windowSoftInputMode="stateAlwaysHidden"

http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft


または、対象のActivityのonCreate()で以下を実行する。

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

http://developer.android.com/reference/android/view/Window.html#setSoftInputMode(int)
http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_STATE_ALWAYS_HIDDEN

2013年2月6日水曜日

XtraFinderをインストール

もう3ヵ月も前の記事ですが、この記事を見てXtraFinderをインストールしてみました。

これは見た目も良い感じで便利そうですね。
少しずつMacを便利に使う方法も覚えていかなければ。

2013年2月5日火曜日

ScrollViewの中でlayout_weightが効かない

下のような構成にしたとき、ScrollViewの中でlayout_weightが効かない状態になっていました。                                 原因がわかりません。 検索してみると以下のページが見つかりました。 android - layout_weight is not work in scrollview - Stack Overflow http://stackoverflow.com/questions/10312272/layout-weight-is-not-work-in-scrollview ScrollViewに「android:fillViewport="true"」を指定するだけで良いみたいですね。 まだまだ知らないことがたくさんあるなぁ。

理由が知りたい

「実装者は基本設計書を見ないでしょ?」
先日、詳細設計書レビューで言われた言葉が気になっています。
これは他の職業で言えばこういうことでしょうか。
「薬剤師はカルテを見ないでしょ」
確かにそうですね(よく知らないですけど)。薬剤師は処方箋を見て薬を用意してくれます。
これは「前工程の決定を正」として、それに基づいて仕事をするということですね。
ウォーターフォールです。

しかし、どうにもこのやり方は自分の性に合わないようです。
「こう実装してください」という資料があったとしても、「どうしてこういう実装にするのか」が気になります。どういう意味があって、この実装を選択したのか。他にもっと良い実装方法があるんじゃないのか、そんなことを考えます。

自由にコードを書きたいなぁ。