7

これは、「古い Android SDK バージョンのアンインストール」に関連していますが、ヘッドレス Linux CI サーバー (ディスク容量が不足している) で実行したい場合を除きます。

androidコマンド ライン ツールには、SDK の古い部分を削除するためのオプションがありますか? ざっと見てみると、削除できるのは AVD だけです。私は何かを見落としましたか?

あるいは、SDK_HOME の下にあるものを手動で削除することもできると思います。しかし、安全に削除できるものは何ですか? これら以外の候補は?

  • platforms/API レベル 14 以上をサポートする必要があるだけなので、 likeandroid-3およびの下のものを削除できると思いますandroid-4
  • docs(800MB)、samples(300MB)
  • どうsystem-imagesですか?android-18/armeabi-v7a/たとえば、android-18/x86/Gradle (および Ant) を使用して自動化された APK ビルド (エミュレーターは不要) のみを実行したい場合は必要ですか?

少なくともdocs完全に削除すると、次に実行したときにandroid update sdk --no-ui、再びフェッチが開始されました。

   Downloading Documentation for Android SDK, API 19, revision 1

update破棄した SDK の一部を追加し直さないようにすることはできますか?

免責事項: はい、ディスクは安いので、もっと追加する必要があります。しかし、現在、この特定のサーバー(8.5G ディスク) にはそのオプションがありませんが、それでも Android 19 ビルドを実行できるようにしたいと考えています...

4

3 に答える 3

4

私が収集できたものから、ディレクトリを削除するだけで済み/platforms /skinsます/system-images

于 2016-02-05T06:31:19.560 に答える
3

tools/ を除くすべてのものは、通常、再インストールできます

android list sdk -a

android update sdk --no-ui -a --filter <#index>

addons/ と build-tools/ フォルダーを吹き飛ばして、addons/ と build-tools/ を再インストールすることがよくあります。ライセンスの受け入れを自動化する必要がある場合、少なくとも一度に 1 つずつインストールする場合は、別の小さなトリックを次に示します。

android update sdk --no-ui -a --filter <#index> 0<<EOF
y
EOF

「android」コマンド自体は「SDK Tools」パッケージまたは tools/ ディレクトリ内に存在するため、それを削除することはできません。他のものをインストールすることはできません。また、新しい/古いバージョンをインストールしない限り、何もビルドできないため、通常は platform-tools/ を削除しません。<sdk-folder>/SDK Readme.txt の下を見ると、最初の段落に次のように表示され、これを確認できます。

Android SDK へようこそ!

Android SDK アーカイブには、最初は基本的な SDK ツールのみが含まれています。Android プラットフォームやサードパーティのライブラリは含まれていません。実際、アプリケーションの開発に必要なツールがすべて揃っているわけではありません。

アプリケーションの開発を開始するには、SDK Manager を使用して、プラットフォーム ツールと少なくとも 1 つのバージョンの Android プラットフォームをインストールする必要があります。

于 2015-08-19T04:04:30.523 に答える
2

必要な部分だけをダウンロードする必要があるようです。他のパラメーターを指定せandroid update sdk --no-uiずに を実行すると、すべてがダウンロードされるため、時間がかかり無駄になります。

--filter必要なパッケージを決定し、更新を行うたびにそれらを使用するためのパラメーター。ここでそれを行う方法についてのより詳細な説明があります(さらにandroidコマンドについてはこちら)。

必要なコンポーネントを定期的に変更する場合 (たとえば、別のプラットフォームをターゲットにする場合)、さまざまなフォルダーの下にある不要なコンポーネント (たとえば、下の API android-sdk-linux/platforms) を削除するスクリプトを作成し、必要なコンポーネントだけで再作成することができます。 .

このandroid list sdk -eコマンドは、パラメーターで使用できるパッケージの拡張リストを提供するため、--filter特定のコンポーネントのみをインストールできます。

コマンドを使用してライセンスプロンプトを自動的に受け入れる優れた回答の自動化された方法を確認した後expect、他のすべてをダウンロードせずに必要なコンポーネントをインストールおよび更新することになりました(Ubuntuで):

expect -c '
set timeout -1;
spawn /opt/android-sdk-linux/tools/android update sdk --no-ui --filter tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository;
expect {
    "Do you accept the license" { exp_send "y\r" ; exp_continue }
    eof
}
'

ダウンロードをこれらの部分のみに制限するパラメーターでtools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository指定されたコンポーネントに注意してください。--filter

このスクリプトを 1 回実行すると、それらのコンポーネントだけがダウンロードされます。再度実行すると、何も更新する必要がないと判断されますが、紛らわしい一連のメッセージが表示されます。

Error: Ignoring unknown package filter 'tools'
Error: Ignoring unknown package filter 'build-tools-20.0.0'
Error: Ignoring unknown package filter 'platform-tools'
Error: Ignoring unknown package filter 'android-16'
Error: Ignoring unknown package filter 'extra-android-support'
Error: Ignoring unknown package filter 'extra-android-m2repository'
Warning: The package filter removed all packages. There is nothing to install.
         Please consider trying to update again without a package filter.

これらのメッセージは、何も更新されていないことを意味するだけ--filterです。仕様に含まれるコンポーネントは、実際にはアンインストールされません。

于 2014-08-15T19:40:49.337 に答える