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

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

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

症状: repo init または repo sync は、通常 403 または 500 HTTP エラーになります。

原因: いくつかの原因が考えられますが、多くの場合 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 の問題)

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

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

修正: Linux では、次のコマンドを入力します。

sysctl -w net.ipv4.tcp_window_scaling=0

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