2009年9月15日火曜日

Mac OS X 10.6 Snow LeopardでDonutブランチをビルドする方法



f:id:bs-android:20090914194230p:image


現時点ではMac OS X 10.6 Snow LeopardでのAndroidのソースコードのコンパイルはサポートされていないとここに記述がありますが、いくつかのパッチと64ビットのJava VMを使用することでコンパイルさせることが出来ましたので、情報を公開いたします。





試した時点ではmasterバージョンだとうまくいかなかったため、donutブランチを使用しました。





まずはxcodeの最新版(現時点では3.2)をインストールします。ダウンロードはここから(ログインが必要)。※Snow LeopardのDVDにも同梱されています。





インストール時に10.4のサポートにチェックを入れてください。


f:id:bs-android:20090914195741p:image





Snow Leopardからjava1.5が削除された為、javaの1.5をダウンロードして解凍し、システムに登録します。



wget http://www.cs.washington.edu/homes/isdal/snow_leopard_workaround/java.1.5.0-leopard.tar.gz
tar -xvzf java.1.5.0-leopard.tar.gz
sudo mv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0-leopard
cd /System/Library/Frameworks/JavaVM.framework/Versions/
sudo rm 1.5.0
sudo ln -s 1.5.0-leopard 1.5.0





さらにJavaの環境設定を開いて、使用するJavaのバージョンを設定します。



open "/Applications/Utilities/Java Preferences.app"


以下のようにJ2SE 5.0 64-bitが上に来るように変更します。


f:id:bs-android:20090914195743p:image





gcc4.2を使用するとうまく行かないため、gcc4.0を使用するようにシンボリックリンクを張り替えます



sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.0 /usr/bin/gcc





そしていつものようにrepo initし、syncします。



$ repo init -u git://android.git.kernel.org/platform/manifest.git -b donut
$ repo sync


そのままmakeすると以下のエラーが出てしまいます。



host C: emulator <= external/qemu/distrib/zlib-1.2.3/gzio.c
In file included from external/qemu/distrib/zlib-1.2.3/gzio.c:601:
/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory
make: *** [out/host/darwin-x86/obj/EXECUTABLES/emulator_intermediates/distrib/zlib-1.2.3/gzio.o] エラー 1


詳細は追えていませんが、なぜかgcc4.2が使用されてしまっているようなので、


external/qemu/makefile.android




MY_CC := $(HOST_CC)




MY_CC := gcc


にしてgccを使うように書き換えました。





これでビルドしてもまだエラーが出ます。



external/yaffs2/yaffs2/utils/mkyaffs2image.c: In function ‘main’:
external/yaffs2/yaffs2/utils/mkyaffs2image.c:482: error: ‘convert_endian’ undeclared (first use in this function)
make: *** [out/host/darwin-x86/obj/EXECUTABLES/mkyaffs2image_intermediates/yaffs2/utils/mkyaffs2image.o] エラー 1


external/yaffs2/yaffs2/utils/mkyaffs2image.c




#ifdef HAVE_BIG_ENDIAN
static int convert_endian = 1;
#elif defined(HAVE_LITTLE_ENDIAN)
static int convert_endian = 0;
#endif




#ifdef HAVE_BIG_ENDIAN
static int convert_endian = 1;
#elif defined(HAVE_LITTLE_ENDIAN)
static int convert_endian = 0;
#else
static int convert_endian = 0;
#endif


に変更します。





ビルドします。



$ make -j4 sdk



out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Package SDK: out/host/darwin-x86/sdk/android-sdk_eng.username_mac-x86.zip


のように出れば完了です。





しかし、安心するのはまだ早い!


以下のようにSDKのディレクトリに移動してandroidツールを起動しようとすると以下のようなエラーが出てしまいます。



$ ./android
SWT folder '/Volumes/android/mydroid/out/host/darwin-x86/sdk/android-sdk_eng.username_mac-x86/tools/lib/x86_64' does not exist.
Please export ANDROID_SWT to point to the folder containing swt.jar for your platform.


swt.jarの64bit版が必要なようです。


out/host/darwin-x86/sdk/android-sdk_eng.kojiro_mac-x86/tools/lib/x86_64


のディレクトリを作成し、


このあたりからMac OSX (Mac/Cocoa/x86_64)のswtバイナリをダウンロードして解凍し、swt.jarを、作成したディレクトリに配置します。





これでやっと起動できるようになりました。


AVDを作成すればエミュレータが起動できます。


f:id:bs-android:20090914195744p:image





エミュレータを起動したところ。


f:id:bs-android:20090914195746p:image


f:id:bs-android:20090914195747p:image


f:id:bs-android:20090914211555p:image





140 180 Android , トピック , バッドノウハウ

記載されている会社名、および商品名等は、各社の商標または登録商標です。

1 コメント:

  1. I am having a problem, I get few warnings like these

    ld: warning: in out/host/darwin-x86/obj/EXECUTABLES/emulator_intermediates/distrib/libpng-1.2.19/pngerror.o, file is not of required architecture
    ld: warning: in out/host/darwin-x86/obj/EXECUTABLES/emulator_intermediates/distrib/libpng-1.2.19/pngget.o, file is not of required architecture

    And then the following error is throw.

    Undefined symbols:
    ???_main???, referenced from:
    start in crt1.10.6.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status
    make: *** [out/host/darwin-x86/obj/EXECUTABLES/emulator_intermediates/emulator] Error 1

    Any ideas on how to resolve this errors.

    返信削除

Related Posts Plugin for WordPress, Blogger...