Android開発者はUbuntu9.10にアップデートしないほうがいいかも

と言っても、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側のこの辺の問題も修正されるのかもしれないけど、いつになるかわからないし。

ビルド環境は安定して動いてる状態からあんまり変えるな、ということですね...。

タイトルとURLをコピーしました