repo syncがうまくいかない時の解決法

Androidソースコードをダウンロードしようとして

まずフリーズみたいな感じになっていて、エラーも出ずに止まっていた

http://linuxg.net/how-to-install-git-1-8-4-on-ubuntu-13-10-13-04-12-10-12-04-linux-mint-16-15-14-13-elementary-os-0-2-and-pear-os-8/

みたいなのを参考にgitのバージョンを新しくして、それはなおすことができた

 

普通にサーバーから取得できないことがあるようで

http://d.hatena.ne.jp/tarosay/20110418/1303132780

を参考に何度も取得し直すことで解決することができた

Androidのビルドをするまで頑張るログ3

Macは諦めて仮想環境で頑張る

ubuntuは最新版だとビルドできないらしいからここから12.04をダウンロードします

http://www.ubuntulinux.jp/News/ubuntu1204-desktop-ja-remix

→64bitじゃないとできないことが判明

http://releases.ubuntu.com/12.04/

ubuntu-12.04.4-desktop-amd64.iso

を入れた 

 

parallelsがいいらしいのでトライアル版をインストールして

イメージファイルをドラッグアンドドロップする画面があるのでisoをいれます

起動!!

右下の設定からメモリ増やしてもう一度起動

http://source.android.com/source/initializing.html

のとおりにやっていきます

 最初の必要なパッケージをインストールするところで以下の様なエラーが出たので、

The following packages have unmet dependencies:
 libgl1-mesa-glx:i386 :Depends: libglapi-mesa:i386 (=8.0.4-0ubuntu0.7)Recommends: libgl1-mesa-dri:i386 (>=7.2)
E:Unable to correct problems, you have held broken packages.

http://stackoverflow.com/questions/23254439/android-setting-up-a-linux-build-environment-libgl1-mesa-glxi386-package-have
を見て解決

 

設定から日本語キーボードにしとくとはかどりそう

 

とりあえずrepo sync

して続きへ

 

 

Androidのビルドをするまで頑張るログ2

前回までのでJDKのエラーはクリアできた

 

さて出たエラーに対して対策を講じていきたい

target R.java/Manifest.java: NoiseField (out/target/common/obj/APPS/NoiseField_intermediates/src/R.stamp)

prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: error: out/target/product/generic/obj/STATIC_LIBRARIES/libc++_intermediates/libc++.a(Backtrace.o): multiple definition of 'unw_backtrace'

prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ld: out/target/product/generic/obj/STATIC_LIBRARIES/libc++_intermediates/libc++.a(backtrace.o): previous definition here

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libc++_intermediates/LINKED/libc++.so] Error 1

 

うーん一見

backtrace.o

Backtrace.o

があって

その中にあるunw_backtraceが一緒って感じかな?

なんで2つ出来てるんだこれ、、、

external/libunwindに移動してとりあえず見つけてみる

 

 

./Android.mk:# src/mi/backtrace.c is misdetected as a bogus header guard by clang 3.5

./Android.mk:   src/mi/backtrace.c

./configure.ac:AC_CONFIG_SRCDIR(src/mi/backtrace.c)

./src/Makefile.am:      mi/backtrace.c  

% grep -R Backtrace.c

./Android.mk:   src/unwind/Backtrace.c 

 

./src/Makefile.am:      unwind/Backtrace.c unwind/DeleteException.c 

 

src/unwind/Backtrace.c 

src/mi/backtrace.c  

2つあるっぽい

ただこの

src/unwind/Backtrace.c 

の中にunw_backtrace見つからないんだよね、、、

うーん

src/mi/backtrace.c is misdetected as a bogus header guard by clang 3.5

これが気になるなあ

3.5じゃないと思うんだけど、、、

% clang -v 

Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)

Target: x86_64-apple-darwin13.2.0

 

Thread model: posix

んー

 

 

 

http://source.android.com/source/known-issues.html

Symptom: All builds fail when using XCode 4.3.

Cause: XCode 4.3 switched the default compiler from gcc to llvm, and llvm rejects code that used to be accepted by gcc.

Fix: Use XCode 4.2.

つまり

https://github.com/kennethreitz/osx-gcc-installer/downloads

とかからgccインストールすりゃいいんだな?

% clang -v   

Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM 3.0svn)

Target: x86_64-apple-darwin13.2.0

 

Thread model: posix

うーん

LLVMとか入ってるのは気になるけどレッツトライ!!!

デキナカッタ。。。

ifndef挟んでみたりとか色々したけどうーん。。。。。

 

むずい!!!!!

 

ということで

 

仮想環境のubuntuでやることにします!!!

Androidのビルドをするまで頑張るログ1

Androidについて詳しくなりたい!ということでビルドしてとりあえずビルドしていきたい!!

Mac OSX 10.9.3でやっていきます

 

http://source.android.com/source/downloading.html

のとおりにダウンロード

 

さっそく何も考えずに

 

source build/envsetup.sh  

make -j4

 

これでビルドが始まった

 

JDKでハマった編

待つこと1時間で

external/doclava/src/com/google/doclava/ClassInfo.java:20: エラー: パッケージcom.sun.javadocは存在しません

 

ググってJDKのバージョンがあってないのが原因のようなので

http://qiita.com/ryo0301/items/3c9a02e03b4e9a41f576

を参考に

 

Matching Java Virtual Machines (3):

    1.7.0_25, x86_64:   "Java SE 7"     /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

    1.6.0_65-b14-462, x86_64:   "Java SE 6"     /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

 

    1.6.0_65-b14-462, i386:     "Java SE 6"     /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

はいっているみたいなので

 

export JAVA_HOME=`/usr/libexec/java_home -v 1.6`

してみて再チャレンジ

 

ついでに

http://note.chiebukuro.yahoo.co.jp/detail/n185974

を参考に

 

$ mkdir ~/.ccache

$ export USE_CCACHE=1

$ export CCACHE_DIR=~/.ccache

$ prebuilts/misc/linux-x86/ccache/ccache -M 50G

ここで

 

zsh: exec format error: prebuilts/misc/linux-x86/ccache/ccache

と言われてしまった

Macなので

 

prebuilts/misc/darwin-x86/ccache/ccache -M 15G

としておいた(ディスク容量に余裕が無いため)

 

make -j4

。。。。

 

javac: 1.7 ?͖????ȃ\?[?X?o?[?W?????ł??B

?g????: javac <options> <source files>

?g?p?\?ȃI?v?V?????̃??X?g?ɂ??ẮA-help ??p???܂?

javac: 1.7 ?͖????ȃ\?[?X?o?[?W?????ł??B

?g????: javac <options> <source files>

?g?p?\?ȃI?v?V?????̃??X?g?ɂ??ẮA-help ??p???܂?

make: *** [out/host/common/obj/JAVA_LIBRARIES/doclava_intermediates/javalib.jar

] Error 41

make: *** Waiting for unfinished jobs....

make: *** [out/target/common/obj/JAVA_LIBRARIES/core-junit_intermediates/classe

 

s-full-debug.jar] Error 41

 

うーん、、別のエラーが、、、

 

PATHにも追加しないとダメって書いてあったから

export PATH=$PATH:`/usr/libexec/java_home -v 1.6`

してみて再チャレンジ

 

http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html

アンインストール(削除)してみた!!

 

まだ同じエラーが、、、、

 

うーんjavaコマンドがうまく使えてなさそうなのが問題な気がするんだけど、、

 

 

ちゃんと文字化けなおそう

 

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

javac: 1.7 は無効なソースバージョンです。

使い方: javac <options> <source files>

使用可能なオプションのリストについては、-help を使用します

make: *** [out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/classes-full-debug.jar] Error 41

make: *** Waiting for unfinished jobs....

j

うーむ、とりあえずJDK7を入れなおしてもう一度ググろう

 

どうやらこのcom.sun.javadocJDKのtools.jarにはいっているようで

http://stackoverflow.com/questions/18277504/make-cannot-find-tools-jar

を参考に

ANDROID_JAVA_HOMEにいれてみる

で、できてる!!できてるっぽい!!!

 

またここでC++コンパイルでエラーが起きちゃったので続きは別記事で