使用Android Studio生成apk,卡在Running Gradle task ‘assembleDebug...解决方法

最近在写flutter想写个apk出来,但是调试装apk的时候十分十分的慢,等个半小时都装不上去。那是因为他默认的路径访问不了或者慢,得用国内的镜像源。

修改resolve_dependencies.gradle.kts

找到你flutter的安装路径

bash 复制代码
flutter doctor -v

我的装在 E:\flutter,然后进入目录 E:\flutter\packages\flutter_tools\gradle,找到resolve_dependencies.gradle.kts,进行替换修改:

bash 复制代码
import java.nio.file.Paths

// This script is used to warm the Gradle cache by downloading the Flutter dependencies
// used during the build. This script is invoked when `flutter precache` is run.
//
// Command:
//  gradle -b <flutter-sdk>packages/flutter_tools/gradle/resolve_dependencies.gradle.kts
//      resolveDependencies
//
// This way, Gradle can run with the `--offline` flag later on to eliminate any
// network request during the build process.
//
// This includes:
//   1. The embedding
//   2. libflutter.so

val storageUrl: String = System.getenv("FLUTTER_STORAGE_BASE_URL") ?: "https://storage.googleapis.com"

val flutterRoot = projectDir.parentFile?.parentFile?.parentFile
requireNotNull(flutterRoot) { "Flutter root directory not found!" }

require(flutterRoot.isDirectory) { "Flutter root is not a valid directory!" }

val engineVersion =
    Paths
        .get(
            flutterRoot.absolutePath,
            "bin",
            "cache",
            "engine.stamp"
        ).toFile()
        .readText()
        .trim()

var engineRealm =
    Paths
        .get(
            flutterRoot.absolutePath,
            "bin",
            "cache",
            "engine.realm"
        ).toFile()
        .readText()
        .trim()

if (engineRealm.isNotEmpty()) {
    engineRealm += "/"
}

repositories {
    maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
    maven { url = uri("https://maven.aliyun.com/repository/google") }
    maven { url = uri("https://maven.aliyun.com/repository/public") }
    maven {
        url = uri("$storageUrl/${engineRealm}download.flutter.io")
    }
}

configurations {
    create("flutterRelease") {
        extendsFrom(configurations.getByName("releaseImplementation"))
    }
    create("flutterDebug") {
        extendsFrom(configurations.getByName("debugImplementation"))
    }
    create("flutterProfile") {
        extendsFrom(configurations.getByName("debugImplementation"))
    }
}

dependencies {
    "flutterRelease"("io.flutter:flutter_embedding_release:1.0.0-$engineVersion")
    "flutterRelease"("io.flutter:armeabi_v7a_release:1.0.0-$engineVersion")
    "flutterRelease"("io.flutter:arm64_v8a_release:1.0.0-$engineVersion")

    "flutterProfile"("io.flutter:flutter_embedding_profile:1.0.0-$engineVersion")
    "flutterProfile"("io.flutter:armeabi_v7a_profile:1.0.0-$engineVersion")
    "flutterProfile"("io.flutter:arm64_v8a_profile:1.0.0-$engineVersion")

    "flutterDebug"("io.flutter:flutter_embedding_debug:1.0.0-$engineVersion")
    "flutterDebug"("io.flutter:armeabi_v7a_debug:1.0.0-$engineVersion")
    "flutterDebug"("io.flutter:arm64_v8a_debug:1.0.0-$engineVersion")
    "flutterDebug"("io.flutter:x86_debug:1.0.0-$engineVersion")
    "flutterDebug"("io.flutter:x86_64_debug:1.0.0-$engineVersion")
}

tasks.register("resolveDependencies") {
    doLast {
        configurations.forEach { configuration ->
            if (configuration.name.startsWith("flutter")) {
                configuration.resolve()
            }
        }
    }
}

修改build.gradle.kts文件

Android Studio双击两下shift,或者在android目录下自己寻找

bash 复制代码
allprojects {
    repositories {
        maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
        maven { url = uri("https://maven.aliyun.com/repository/google") }
        maven { url = uri("https://maven.aliyun.com/repository/public") }
        google()
        mavenCentral()
    }
}

val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
rootProject.layout.buildDirectory.value(newBuildDir)

subprojects {
    val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
    project.layout.buildDirectory.value(newSubprojectBuildDir)
}
subprojects {
    project.evaluationDependsOn(":app")
}

tasks.register<Delete>("clean") {
    delete(rootProject.layout.buildDirectory)
}

修改settings.gradle.kts

主要是增加国内镜像

bash 复制代码
pluginManagement {
    val flutterSdkPath = run {
        val properties = java.util.Properties()
        file("local.properties").inputStream().use { properties.load(it) }
        val flutterSdkPath = properties.getProperty("flutter.sdk")
        require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
        flutterSdkPath
    }

    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

    repositories {
        maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") }
        maven { url = uri("https://maven.aliyun.com/repository/google") }
        maven { url = uri("https://maven.aliyun.com/repository/public") }
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

plugins {
    id("dev.flutter.flutter-plugin-loader") version "1.0.0"
    id("com.android.application") version "8.11.1" apply false
    id("org.jetbrains.kotlin.android") version "2.2.20" apply false
}

include(":app")

修改gradle-wrapper.properties中的distributionUrl

bash 复制代码
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.14-all.zip
相关推荐
代码不停10 小时前
MySQL事务
android·数据库·mysql
yngsqq10 小时前
使用VS(.NET MAUI)开发第一个安卓APP
android·.net
Android-Flutter10 小时前
android compose LazyVerticalGrid上下滚动的网格布局 使用
android·kotlin
Android-Flutter10 小时前
android compose LazyHorizontalGrid水平滚动的网格布局 使用
android·kotlin
千里马-horse10 小时前
RK3399E Android 11 将自己的库放到系统库方法
android·so·设置系统库
美狐美颜sdk10 小时前
Android直播美颜SDK:选择指南与开发方案
android·人工智能·计算机视觉·第三方美颜sdk·视频美颜sdk·人脸美型sdk
hui函数10 小时前
如何解决 PyCharm 控制台 pip install 报错 OSError: [Errno 18] Cross-device link 问题
ide·pycharm·pip
我命由我1234510 小时前
Kotlin 面向对象 - 装箱与拆箱
android·java·开发语言·kotlin·android studio·android jetpack·android-studio
tangweiguo0305198710 小时前
在Windows上编译OpenCV Android原生库全记录
android