ソースの同期に関する問題

細心の注意を払っていても、問題が起こることがあります。このページでは、Android ソースコードを同期する際に発生する可能性のある既知の問題について説明します。

ソースコードの同期に関する問題(プロキシの問題)

内容: repo init または repo sync が HTTP エラー(多くの場合 403 または 500)になります。

原因: いくつかの原因が考えられますが、多くの場合、HTTP プロキシが関係しており、大量のデータが転送されたために処理できなくなっています。

解決策: 汎用の解決策はありませんが、Python 2.7 で repo sync -j1 を明示的に使用すると解決する場合があります。

ソースツリーの同期に関する問題(DNS の問題)

内容: repo sync を実行したときに、ホスト名を認識できず、さまざまなエラーが発生して処理が失敗します。そのようなエラーの一つとして <urlopen error [Errno -2] Name or service not known> があります。

原因: 一部の DNS システムでは、ソースツリーの同期に伴う大量のクエリを処理できないことがあります(最も多い場合、リクエスト数が数百件に達する場合があります)。

解決策: 対象のホスト名を手動で解決し、その結果をローカルでハードコーディングします。

この問題は、nslookup コマンドを使用して解決できます。このコマンドは、ホスト名ごとに 1 つの数値 IP アドレスを提供します(通常、出力の「Address」部分にあります)。

nslookup googlesource.com
nslookup android.googlesource.com

そして、/etc/hosts を編集して、以下の形式の 2 行をファイルに追加することにより、ローカルでハードコーディングできます。

aaa.bbb.ccc.ddd googlesource.com
eee.fff.ggg.hhh android.googlesource.com

ソースツリーの同期に関する問題(TCP の問題)

内容: repo sync が同期中にハングします(多くの場合、同期が 99% 完了した段階でハングします)。

原因: 一部のネットワーク環境では、TCP/IP スタックの設定が原因で問題が発生し、repo sync が完了も失敗もできなくなることがあります。

解決策: Linux の場合、次のコマンドを入力します。

sysctl -w net.ipv4.tcp_window_scaling=0

macOS の場合、ネットワーク設定で RFC1323 の拡張機能を無効にします。