MacでのAOSPコンパイルおよびフラッシュ処理中のさまざまなピット

ここでは一般的な落とし穴を記録しません。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.h2行のアトミックキーワードを直接コメント化しください: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/
发布了60 篇原创文章 · 获赞 44 · 访问量 34万+

おすすめ

転載: blog.csdn.net/beyond702/article/details/53159284