Gradle不断重新下载android sdk资源

Pho*_*ett 7 java ubuntu gradle android-studio build.gradle

我正在使用在 Ubuntu 上运行的 Visual Studio Code for Android Dev (18)

gradle version: 7.4.2
java jre: 11 and 8
I have downloaded Android SDK with:
    "platforms;android-29"
    "platforma;android-31"
    "build-tools;29.0.0"
Run Code Online (Sandbox Code Playgroud)

每次我发出命令:

./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)

我得到:

License for package SDK Patch Applier v4 accepted.
Preparing "Install SDK Patch Applier v4 (revision: 1)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@b2d2115" (patcher;v4) should be installed in 
"/home/phoxett/cmdline-tools/patcher/v4" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/patcher/v4-5" instead.
"Install SDK Patch Applier v4 (revision: 1)" ready.
Installing SDK Patch Applier v4 in /home/phoxett/cmdline-tools/patcher/v4-5
"Install SDK Patch Applier v4 (revision: 1)" complete.
"Install SDK Patch Applier v4 (revision: 1)" finished.
Checking the license for package Android Emulator in /home/phoxett/cmdline-tools/licenses
License for package Android Emulator accepted.
Preparing "Install Android Emulator (revision: 31.2.10)".
"Install Android Emulator (revision: 31.2.10)" ready.
Installing Android Emulator in /home/phoxett/cmdline-tools/emulator
"Install Android Emulator (revision: 31.2.10)" complete.
"Install Android Emulator (revision: 31.2.10)" finished.
Checking the license for package Android SDK Platform-Tools in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Platform-Tools accepted.
Preparing "Install Android SDK Platform-Tools (revision: 33.0.2)".
"Install Android SDK Platform-Tools (revision: 33.0.2)" ready.
Installing Android SDK Platform-Tools in /home/phoxett/cmdline-tools/platform-tools
"Install Android SDK Platform-Tools (revision: 33.0.2)" complete.
"Install Android SDK Platform-Tools (revision: 33.0.2)" finished.
Checking the license for package Android SDK Tools in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Tools accepted.
Preparing "Install Android SDK Tools (revision: 26.1.1)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@f6eee083" (tools) should be installed in 
"/home/phoxett/cmdline-tools/tools" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/tools-4" instead.
"Install Android SDK Tools (revision: 26.1.1)" ready.
Installing Android SDK Tools in /home/phoxett/cmdline-tools/tools-4
"Install Android SDK Tools (revision: 26.1.1)" complete.
"Install Android SDK Tools (revision: 26.1.1)" finished.
Checking the license for package Android SDK Build-Tools 30.0.2 in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Build-Tools 30.0.2 accepted.
Preparing "Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@9b08c1ac" (build-tools;30.0.2) should be installed in 
"/home/phoxett/cmdline-tools/build-tools/30.0.2" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/build-tools/30.0.2-4" instead.
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" ready.
Installing Android SDK Build-Tools 30.0.2 in /home/phoxett/cmdline-tools/build-tools/30.0.2-4
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" complete.
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" finished.
Checking the license for package Android SDK Platform 31 in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Platform 31 accepted.
Preparing "Install Android SDK Platform 31 (revision: 1)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@ca55bbf4" (platforms;android-31) should be installed in 
"/home/phoxett/cmdline-tools/platforms/android-31" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/platforms/android-31-3" instead.
"Install Android SDK Platform 31 (revision: 1)" ready.
Installing Android SDK Platform 31 in /home/phoxett/cmdline-tools/platforms/android-31-3
"Install Android SDK Platform 31 (revision: 1)" complete.
"Install Android SDK Platform 31 (revision: 1)" finished.
Run Code Online (Sandbox Code Playgroud)

如果我继续运行命令:

License for package SDK Patch Applier v4 accepted.
Preparing "Install SDK Patch Applier v4 (revision: 1)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@b2d2115" (patcher;v4) should be installed in 
"/home/phoxett/cmdline-tools/patcher/v4" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/patcher/v4-5" instead.
"Install SDK Patch Applier v4 (revision: 1)" ready.
Installing SDK Patch Applier v4 in /home/phoxett/cmdline-tools/patcher/v4-5
"Install SDK Patch Applier v4 (revision: 1)" complete.
"Install SDK Patch Applier v4 (revision: 1)" finished.
Checking the license for package Android Emulator in /home/phoxett/cmdline-tools/licenses
License for package Android Emulator accepted.
Preparing "Install Android Emulator (revision: 31.2.10)".
"Install Android Emulator (revision: 31.2.10)" ready.
Installing Android Emulator in /home/phoxett/cmdline-tools/emulator
"Install Android Emulator (revision: 31.2.10)" complete.
"Install Android Emulator (revision: 31.2.10)" finished.
Checking the license for package Android SDK Platform-Tools in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Platform-Tools accepted.
Preparing "Install Android SDK Platform-Tools (revision: 33.0.2)".
"Install Android SDK Platform-Tools (revision: 33.0.2)" ready.
Installing Android SDK Platform-Tools in /home/phoxett/cmdline-tools/platform-tools
"Install Android SDK Platform-Tools (revision: 33.0.2)" complete.
"Install Android SDK Platform-Tools (revision: 33.0.2)" finished.
Checking the license for package Android SDK Tools in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Tools accepted.
Preparing "Install Android SDK Tools (revision: 26.1.1)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@f6eee083" (tools) should be installed in 
"/home/phoxett/cmdline-tools/tools" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/tools-4" instead.
"Install Android SDK Tools (revision: 26.1.1)" ready.
Installing Android SDK Tools in /home/phoxett/cmdline-tools/tools-4
"Install Android SDK Tools (revision: 26.1.1)" complete.
"Install Android SDK Tools (revision: 26.1.1)" finished.
Checking the license for package Android SDK Build-Tools 30.0.2 in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Build-Tools 30.0.2 accepted.
Preparing "Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@9b08c1ac" (build-tools;30.0.2) should be installed in 
"/home/phoxett/cmdline-tools/build-tools/30.0.2" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/build-tools/30.0.2-4" instead.
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" ready.
Installing Android SDK Build-Tools 30.0.2 in /home/phoxett/cmdline-tools/build-tools/30.0.2-4
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" complete.
"Install Android SDK Build-Tools 30.0.2 (revision: 30.0.2)" finished.
Checking the license for package Android SDK Platform 31 in /home/phoxett/cmdline-tools/licenses
License for package Android SDK Platform 31 accepted.
Preparing "Install Android SDK Platform 31 (revision: 1)".
Warning: Package "com.android.repository.impl.generated.v2.RemotePackage@ca55bbf4" (platforms;android-31) should be installed in 
"/home/phoxett/cmdline-tools/platforms/android-31" but 
it already exists.
Installing in "/home/phoxett/cmdline-tools/platforms/android-31-3" instead.
"Install Android SDK Platform 31 (revision: 1)" ready.
Installing Android SDK Platform 31 in /home/phoxett/cmdline-tools/platforms/android-31-3
"Install Android SDK Platform 31 (revision: 1)" complete.
"Install Android SDK Platform 31 (revision: 1)" finished.
Run Code Online (Sandbox Code Playgroud)

重新下载以下内容:平台工具、工具、模拟器和 patcher/v4

如何阻止 gradle 重新下载现有文件

我的构建.gradle

./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)

其他构建.gradle:

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.0.2"
    }
}


allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)

gradle-wrapper.properties:

plugins {
    id 'com.android.application'
}

android {
    compileSdk 31
    defaultConfig {
        applicationId "xxx.xxx.xxx"
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'io.socket:socket.io-client:1.0.0'
    implementation 'com.android.volley:volley:1.2.0'
}
Run Code Online (Sandbox Code Playgroud)

Nee*_*aks 0

我也曾因这个问题而苦苦挣扎,直到我向更有经验的 Android 开发人员寻求帮助。

解决方案很简单(至少在我的例子中),只需将 Gradle 指向正确的 SDK 目录即可。

我的local.properties

sdk.dir=/usr/local/share/android-commandlinetools/cmdline-tools/latest
Run Code Online (Sandbox Code Playgroud)

但相反,它应该是以下位置的更高级别目录local.properties

sdk.dir=/usr/local/share/android-commandlinetools
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助别人。