と言っても、SDKだけを使うアプリ開発者ではなく、フルソースをビルドして開発する人向けのネタ。
まず、フルソースのビルドに必要なJava1.5がアップデート時に削除されてしまう。
Java1.5(Java5)はSunのサポート期限切れになったのでUbunutuでもサポートしない、というのがその理由なんだけど、AndroidのソースをビルドするにはJava5しか使えない(ビルドスクリプトがバージョンチェックしている)のでさてどうしたものか。
ググってみると、9.04のリポジトリを追加してJava5をインストールする方法があった。
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
↑のjauntyリポジトリを再びシステムに追加して、以下のコマンドでJava5をインストール・切り替え。
sudo apt-get update sudo apt-get install sun-java5-jdk sudo update-java-alternatives -s java-1.5.0-sun
これでJava5の問題は解決、気を取り直してcupcakeブランチをビルドしようとすると、
HOST_OS=linux HOST_BUILD_ENGINE=release BUILD_ID= ============================================ frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone). 中止.
とビルドエラーが。
これもググってみると、本家フォーラムに以下のトピックが見つかる。
Dependencies on Ubuntu to build android source code - android-platform | Google グループ
どうも、findutilsもしくはbashのバージョンが新しくなったことで引き起こされるエラーらしい。元々はRedHatで既に発生していた事象のようだけど、Ubuntu9.10でも発生するようになったと思われる。
ではdonutブランチはと言うと、
development/emulator/qtools/trace_reader.cpp: In function 'char* ExtractDexPathFromMmap(const char*)': development/emulator/qtools/trace_reader.cpp:1012: error: invalid conversion from 'const char*' to 'char*' development/emulator/qtools/trace_reader.cpp:1015: error: invalid conversion from 'const char*' to 'char*' make: *** [out/host/linux-x86/obj/EXECUTABLES/bb2sym_intermediates/trace_reader.o] エラー 1
こっちもエラー...。
こっちはリポジトリ上のソースの整合性に問題があるのか、Ubuntu9.10の問題か原因は不明。9.04環境で試せればいいんだろうけどもう手元には無いし...。
ということで、Androidのフルソースのビルド環境を作っている人は9.10にしないほうが無難かと。いずれはAndroid側のこの辺の問題も修正されるのかもしれないけど、いつになるかわからないし。
ビルド環境は安定して動いてる状態からあんまり変えるな、ということですね...。
コメント
私にも同じエラーがあったが以下のリンク上の修正を参考して、ビルドしてみたらできました。
http://gitorious.org/0xdroid/development/commit/a111601d7342847875ffb25dccd328fe946255b2