2011/01/06

Android コマンドライン開発で日本語があるとコンパイルエラー

 
Androidコマンドライン環境で開発していると、
 
警告: 
 この文字は、エンコーディング ascii にマップできません。
 
というエラーが発生します。こいつは、
 
コメントや文字列中に日本語(他バイト文字)があると発生するので、本現象に
対応するには、下記ファイルを修正する必要があります。
 
◆Android SDK のインストールフォルダの中

android-sdk-windows\platforms\android-x\templates\android_rules.xml
 
上記の x には API のバージョンID が入ります。
編集するファイルは  android create project 時に指定した ID に対応しています。
android_rules_sjis01 
 
コマンド  android list targets  を実行すると指定した ID に紐付いた一覧が
見れます。

Android 2.2 向けに開発していた場合は android-8 フォルダになりますね、
android_rules_sjis02 
 
目的のプロジェクトがどの API で作成されているか調べたいときは、
プロジェクト内の
 
default.properties
 
をテキストエディタで開けば確認取れます。
android_rules_sjis04
 
Windows の有名エディタ一は一般的に CP932(SJIS) としてデフォルトで
保存されます。
 
上記を踏まえてビルドの設定ファイル、
 
  android_rules.xml
 
をテキストエディタで開き、ascii で検索すると修正箇所が一発で見つかります。
 
android_rules_sjis03
 
249 行目前後に見つかりました。
 
上記の ascii を UTF-8SJIS に指定する事で、本エラーの対応は完了です。
 
なお Google API を利用している場合や一部の環境では、これだけでは ascii
エラーが継続して表示される場合もあります。
 
その場合は下記手順で修正を行いましょう。
 
◆Android SDK のインストールフォルダの中 
 
android-sdk-windows\tools\ant\main_rules.xml

上記ファイルをエディタで開いた後、下記の単語で検索を行い
ascii を sjis に変える。
 
java.encoding
 
なお環境によっては、このファイルが存在しない場合もあります。
 
 
なお Java の class ファイルが持つ 内部文字コード UNICODE になるので、
コンパイル時の文字コードは、
 
ソースコードの文字コードに合わせてればOK
 
です。大半の人は SJIS だと思います。
 
 
SJIS に存在しない文字をソースコード上に埋め込みたい時は UTF-8 でソースを
保存し、UTF-8 でコンパイルする必要があります。

0 件のコメント:

コメントを投稿