8

「レポジトリ」ツールを使用して、Androidソースコードのクローンを作成できます。ただし、私がやりたいのは、11GBのフットプリントを持つよりも最小限の方法でソースコードのクローンを作成することです。すべてのAndroidデバイスとすべての以前のリリースに関連するものをダウンロードしているようです。私は次のような特定のブランチをチェックすることでこれを減らすことができると思ってみました:

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

しかし、最終的には、特定のスナップショット(理解できる)だけで、すべてが関与することになります。しかし、クローンされる量を制限する方法はありますか?

4

2 に答える 2

4

androidソースツリーは、すべてリポジトリによって管理される多くの個別のgitリポジトリで構成されています。特定のgitリポジトリにダウンロードされるデータの量を実際に減らすことはできません。

ただし、を使用してダウンロードできるのは、利用可能なgitリポジトリのサブセットのみですrepo sync <project>repo sync frameworks/baseつまり、フレームワーク/ベースパッケージのみが必要な場合は、最初のを実行した後に実行できるはずですrepo init

ただし、実際にソースを作成したい場合は、おそらく完全なものが必要です。

不要なデバイスリポジトリを削除することで、ギグを1つか2つ節約できる場合があります。これを行うには、<source>/。repo/manifest.xmlを編集し、不要なデバイスのリポジトリを削除します。

于 2012-04-12T04:16:58.593 に答える
4

できることはたくさんあります。まず、-c引数を指定した「reposync」は、チェックアウトされたサンドボックスを「現在の」ブランチのみに制限します。repo syncは、他のブランチの資料をダウンロードしません。

.repo / manifests/default.xmlマニフェストを編集することもできます。私がしていることは、「default.bak」などのバックアップを作成してから、不要であることがわかっているdefault.xmlファイルから行を削除することです。私はMacintoshで構築していないので、「darwin」ツールは必要ないことがわかっているので、「darwin」を含むすべての行を削除します。その場合、「repo sync」は、darwinプロジェクトをダウンロードしたり、サンドボックスにソースコードをインストールしたりしません。

すでにサンドボックスを同期していて、そのサイズをトリミングしたい場合は、上記のようにプロジェクトを削除してから「repo sync -c -l」を実行すると、reposyncは削除したばかりのディレクトリのみを削除します。-lフラグは、同期のローカル部分のみを実行します。つまり、ローカルgitプロジェクトのみをソースツリーと同期します。ネットワークは使用されていません。通常の同期の残りの半分については、「-n」フラグを参照してください。これは、ネットワーク同期を実行して、ローカルgitプロジェクトをアップストリームリポジトリで更新します。

不要なプロジェクト(多くのスペースを占める)のgitバッキングオブジェクトストアも削除するには、次を使用します。

for project in `diff ~/android/.repo/manifests/default.xml ~/android/.repo/manifests/default.bak | awk '{print $3}' | grep path | cut -f2 -d\"`; do  rm -rf ~/android/.repo/projects/$project.git ; rm -rf ~/android/.repo/project-objects/$project.git ; done

これにより、バックアップマニフェストにあるが、アクティブなマニフェストから削除されたすべてのプロジェクトが検索され、gitプロジェクトとそれらのすべてのバッキングデータが削除されます。これにより、多くのスペースが回復します。

削除しすぎる場合は、バックアップマニフェストからプロジェクトラインを回復し、アクティブなマニフェストに追加し直してください。次に、リポジトリの同期により、gitプロジェクトとサンドボックスが再びまっすぐになります。プロジェクトディレクトリで「mma-B-n」を実行すると、ビルドをテストして、削除しすぎていないかどうかを確認できます。これにより、ターゲットに対して完全な依存関係のビルドが試行され、必要がない場合でもすべてのターゲットが強制的にビルドされ、ドライランとして実行されます。ビルドが失敗した場合は、プロジェクトに必要なものを削除しました。

ローカルミラーサンドボックスを設定し、ミラーから小さくて機能する参照サンドボックスを作成することもできます。動作中のサンドボックスにはgitオブジェクトストアは含まれていませんが、ミラーの中央のサンドボックスを参照しています。「repoinit-u... --mirror」を使用してミラーを設定し、「repo init --reference =〜/ android-mirror-u...」を使用してミラーを参照します。後者の-uフラグを使用すると、実際のアップストリームリポジトリを権限として使用でき、ミラー参照をローカルキャッシュとして使用できます。ローカルミラーは、AOSPプロジェクトが適用するダウンロードクォータも回避し、同期が高速になります。

于 2015-01-29T14:23:16.047 に答える