ここでは一般的な落とし穴を記録しません。Googleまたは記事の最後にあるリンクを参照してください。一般的でないものをいくつか紹介します。ここで使用するAOSPはAndroid4.4です。
1. 1つ目は、私が長年取り組んできたピットで、JDKについてです。最初に、jdk1.8を使用してコンパイルしたところ、次のエラーが発生しました。
host Java: doclava (out/host/common/obj/JAVA_LIBRARIES/doclava_intermediates/classes)
external/doclava/src/com/google/doclava/ClassInfo.java:20: 错误: 程序包com.sun.javadoc不存在
import com.sun.javadoc.ClassDoc;
^
external/doclava/src/com/google/doclava/ClassInfo.java:61: 错误: 找不到符号
。。。
次に、JAVA_HOMEをjdk1.6ディレクトリに変更しましたが、コンパイル中に次のエラーが発生しました。
javac: 无效的目标发行版: 1.8
......
jdkのバージョンを1.6に変更したのは非常に奇妙です。なぜターゲットのリリースバージョンが1.8であると言うので、各モジュールのAndroid.mk、pom.xml、build.xmlファイルに移動して、Javaのバージョンを変更しました、まだこれは間違っています。オンラインで見つかった多くの方法は役に立たない。
解決策:
ちょうどあきらめようとしていたときに、ファイル
build / core / combo / javac.mkが見つかりました。これは、2つのグローバルコンパイル変数HOST_JAVACとTARGET_JAVACを定義し、-targetの後に1.8が続きます。原因はここにあり、変更します1.6で問題ありません。
別のファイルbuild / core / main.mkがあり、javaとjavacのバージョンも指定されています。ここにあるバージョンにも注意する必要がありますが、ここに競合がある場合は、makeの最初にエラーが報告されます。
2.
2番目は、エミュレータをコンパイルしたときに発生した2つのエラーです。
1つ目はSDLライブラリの競合の問題で、次のエラーが表示されます。
external/qemu/distrib/sdl-1.2.15/src/video/quartz/SDL_QuartzVideo.h:94: error: expected specifier-qualifier-list before ‘CGDirectPaletteRef’
........
解決策は、SDL_QuartzVideo.hを開き
、CGDirectPaletteRefパレット
の行を見つけ
て、次のように変更することです。
#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070)
CGDirectPaletteRef palette; /* palette of an 8-bit display */
#endif
2つ目は次のエラーです。
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/QTKit.framework/Headers/QTMovieModernizer.h:156: error: expected a property attribute before ‘atomic’
これは、新しいバージョンのxcodeがデフォルトでコンパイルされる
ため、
objcのプロパティはすべて アトミックであるため、プロパティ属性をアトミックとして定義できないため、xcode5.xをインストールしてコンパイルする必要があると言われています。その暇な時間なしに 、QTMovieModernizer.hの2行のアトミックキーワードを直接コメント化してください:156、163 。変更後、xcdoe 6.4は正常にコンパイルできます。
もう1つの注意点は、AOSPをコンパイルしてエミュレータでのみ使用するかどうかは問題ではありませんが、実際のマシンでデバイスをフラッシュする場合は、マシンとAOSPバージョンに対応するドライバをダウンロードする必要があります。それ以外の場合はフラッシュします電話が起動すると、system.imgにはドライバーがないため、電話はGoogleロゴのみを表示するインターフェース上に留まります。ドライバーをダウンロードするには、https://developers.google.com/android/driversにアクセスし、対応する携帯電話モデルとAOSPバージョンを見つけて、3つのドライバーパッケージをダウンロードし、3つのシェルスクリプトを抽出して、AOSPルートディレクトリに1つずつ配置します実行するとベンダーディレクトリが生成され、https://source.android.com/source/building.htmlの手順に従ってコンパイルされます。
AOSPコンパイルに関する他の2つの投稿があり、ここにも記録されています。
1. http://www.cnblogs.com/palance/p/5187103.html
2. http://www.cnblogs.com/chiefhsing/p/5175624.html
3. http://www.liball.me/mac-10-10-build-android-4-4-4-for-nexus/