2009/05/27

Android: Antでビルド時に文字コードがらみの警告?

@ITのチュートリアルをやっています。
AndroidでSQLiteのDB操作をするための基礎知識 (1/3) - @IT [www.atmarkit.co.jp]

SQLiteを使用する回のサンプルプログラムをダウンロードして以下の手順でプロジェクトをアップデートした後、CUI環境でコンパイルしようとしました。

ビルド環境:
  • WindowsXP にインストールしている Portable Ubuntu for Windows


・プロジェクトをアップデート
$ android update project \ 
> --name "DB Demo" \
> --target 2 \
> --path $PWD


ant debugでビルドしてみると、文字コードがらみらしい警告が多量に発生し、ビルドもとおりません。
以下のログは文字化けしている箇所は"文字化けした文字列"と置き換えています。

・プロジェクトのビルド
$ ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

dirs:
[echo] Creating output directories if needed...

(省略)

[javac] /mnt/D/xxx/workspace/DB_Demo3/src/com/example/android
/db/Main.java:87: 警告:この文字は、エンコーディング ascii にマップできません。
[javac] {"文字化けした文字列"},
[javac] ^
[javac] /mnt/D/xxx/workspace/DB_Demo3/src/com/example/android
/db/Main.java:87: 警告:この文字は、エンコーディング ascii にマップできません。
[javac] {"文字化けした文字列"},

(省略)

[javac] /mnt/D/xxx/workspace/DB_Demo3/src/com/example/android
/db/Main.java:232: エスケープ文字が不正です。
[javac] {"文字化けした文字列"},
[javac] ^
[javac] エラー 1 個
[javac] 警告 100 個

BUILD FAILED
/home/pubuntu/bin/android-sdk/platforms/android-1.5/templates
/android_rules.xml:116: Compile failed; see the compiler error output for details.

Total time: 12 seconds


どうやら日本語の文字列が含まれたファイルで警告が出ているようです。
警告が出ているファイルを調べると、Shift JISでした。

試しにUTF-8に変換してみたところ、警告が大量に出るのは変わらなかったのですが、ビルドは成功しました。
しかし、Android Dev Phone 1(ADP1)にインストールして起動してみたところ、起動時にエラーとなりこのサンプルアプリケーションを使用することはできませんでした。

ネットで調べてみたのですが、通常のJavaであればAntでnative2asciiを使うとか色々引っかかりましたが、なかなかAndroidの情報が見つかりません。
同様にnative2asciiを使用してみようかと思ったのですが、挫折しました。


やっとAndroid の build.xml のサンプルが見つかりましたので、これを参考にbuild.xmlをいじってみました。

はっきり言って意味は分かっていません。
エラー -> 修正 を繰り返して以下のコードにおちつきました。
もうちょっと調べてみたいと思います。

・build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="DB Demo" default="help">

(省略)

<target name="compile" depends="dirs, resource-src, aidl">
<javac encoding="SJIS" target="1.5" debug="true" extdirs=""
srcdir="."
destdir="bin/classes"
bootclasspath="${sdk-location}/platforms/android-1.5/android.jar">
<classpath>
<fileset dir="libs" includes="*.jar"/>
</classpath>
</javac>
</target>
</project>

build.xmlの末尾の</project>の前に<target>〜</target>を追加しています。


build.xmlを修正後、再度ビルドします。
$ ant debug
Buildfile: build.xml
[setup] Project Target: Android 1.5
[setup] API level: 3

(省略)

[apkbuilder] Creating DB Demo-debug.apk and signing it with a debug key...
[apkbuilder] Using keystore: /home/pubuntu/.android/debug.keystore

BUILD SUCCESSFUL
Total time: 17 seconds

無事ビルドがとおったようです。

ADP1 にインストールしてちょっと確認したところ、動作もしました。

0 件のコメント: