使用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
相关推荐
怣疯knight几秒前
Windows不安装 Android Studio如何打包安卓软件
android·windows·android studio
ke_csdn7 分钟前
从Java演变到Kotlin下的jet pack
android
wenzhangli740 分钟前
在低代码设计中践行 Harness Engineering
android·低代码·rxjava
xingpanvip2 小时前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
一帘忧梦2 小时前
vscode 搭建stm32开发环境 +HAL 库
ide·vscode·编辑器
TechMix2 小时前
【fkw学习笔记】Android 13 AOSP 源码添加系统预置应用实战指南
android·笔记·学习
云起SAAS2 小时前
私域直播系统UniApp源码 多商户商城+直播带货 微信小程序+H5+安卓iOS
android·微信小程序·uni-app·私域直播系统
空中海3 小时前
01. 安卓逆向基础、环境搭建与授权
android
星河耀银海3 小时前
JAVA 泛型与通配符:从原理到实战应用
android·java·服务器
Ada大侦探3 小时前
新手小白学习数据分析01----数据分析师???& 数据分析思维学习
android·学习·数据分析