Android基礎:初めてのAndroidではまりどころ[android]

アンドロイド開発ではまりやすいポイント(というかハマった所)をまとめました。

アクティビティーのマニフェストファイルへの追加忘れ

Activityを追加した場合は「AndroidManifest.xml」に追加するのを忘れずに。 

XMLデータのエラー

Javaのソースコードを触りながら間ですこしXMLを編集してソースに戻ってさぁ実行!??…………..あれエラーは無いけどコンパイルできない、、てときはXMLを一度確認してみてください。コンソールには場所が表示されないのでエラーの箇所が見つけにくいです。

resフォルダの要素がコードヒント(コード補完)にでない。

resフォルダにたしかにあるのに、コードヒント(コード補完)にでない場合はだいたいXMLファイル郡のどれかに構文エラーなどがあることが多いです。
本来の正しい動きとしては、

1,resフォルダ群のXMLを編集。
2,Exlipseが「gen」フォルダのR.javaを自動更新
  (1で追加したファイルを自動で定義)
3,2の「R.java」が更新されているためコードヒント
  (コード補完)が出てくれる。
  
という流れになります。
コードヒント(コード補完)がでないということは、ほぼXMLのどこかに構文エラーがあり、2の自動更新が出来ていないことが多いです。

GoogleMapのAPIキーが取得できない。というか.keystoreのパスワードがわからない。

これはうっかり系ですが、Eclipseを設定プロジェクトを作っていると、自動できているキーストアのパスワードが分からないーと思って深追いしてしまう件。

パスワードは無しです。

だいたいチュートリアル系をみるといかの様にコマンドを叩けとでてきます。

まっく
# keytool -list -keystore ~/.android/debug.keystore	
うぃんXP
C:\Documents and Settings\\LocalSettings\Application Data\Android\debug.keystore
うぃんビスタ
C:\Users\\AppData\Local\Android\debug.keystore

ですが、打ち込んだ後に

キーストアのパスワードを入力してください:

とでてきてユーザパスワードかな?あっルートで実行か?と思ってしまうと結構やばいです、実はパスワード無しでOKなんです。
あとで気づくと悲しいです。
ちなみにMacでシェルをutf-8とかにしていると文字化けします。ターミナルの設定でShift-jisにすると文字化けしません。

エミュレータのサポートが足りない or マニフェストで許可を与えていない

インターネットアクセス、SDカードアクセス、カメラ機能、GPS機能などは適切にサポートに追加、マニフェストで許可擦る必要があります。

SQLiteアクセスでバインドを使うとエラー

//こうするとアカン
where ="HOGE like '?%'";
where_arg = {String.valueOf(params.id)};	

//こうするとアカンくない
where ="HOGE like '"+String.valueOf(params.id)+"%'";
where_arg = {};								

Could not find HelloAndroid.apk!

と出て急にビルドできなくなりました。
さすがにこれには参った、、まずビルドできなくなり、
USBデバッグ端末をクリーンにアンインストール。
~/.android/debug.keystore を削除、
プロジェクトを右クリック→リフレッシュ
プロジェクトを「クリーン」
エミュレーターに変えてみる。
ビルドパスをかえてみる。
.genフォルダを消してみる。
 ・
 ・
いろいろありとあらゆるものを試すがダメでした。
結局ファイルを一旦逃がしておいて、プロジェクトを一旦削除。
プロジェクトの設定のみ行って、「.project」(隠しファイル)意外を
新しく作ったプロジェクトへ移動したらどうにか復帰できました。
「問題」パネルをみると致命的ほげほげほげほげプロジェクトクリーンほげほげほげ….と出てたので心配しましたが、はまった場合はこの手のほうが速そうです。

番外1:DDMSを使ったデバッグに慣れる。

コマンドラインでのデバッグも良いですが、
DDMSを使うとデバッグ作業がらくになります。
おすすめは、マルチディスプレイで片方にソースコード、片方にDDMS、手元に実機の体制がベスト。
DDMSだと、ファイル構造がエクスプローラーで確認できたり、
プロセス、メモリが簡単に確認できたりと非常に便利です。
あくまでadbのコマンド類をひと通り覚えたあとでの仕様がおすすめです。
遠回りのように感じますがこっちのほうが近道な感じがします。

番外2:アップロード出来るのは50MBまで(2011.09.24現在)

iPhoneから移植でそのまま作っているとファイルサイズの大きいアプリのばあい制限に引っかかってしまうことがあります。
思い込みは禁物確認しましょう。
ちなみに2011Google I/Oで4GBに近々とあったようですが、まだのようです。
Android2.2あたりからはSDカード側へ優先的にインストールできるようにマニフェストファイルで指定できるようになっています。
また、ついでにAndroid2.2からだったとおもいますが
「sdcard/Android/data/パッケージ名/」以下にデータを保存しておくとアンインストール時にこのデータも消してくれます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です