You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成Release构建失败::app:packageRelease任务执行出错

问题排查:生成签名APK时的路径创建失败错误

背景修改

为减小应用体积,我们在android/app/build.gradle中做了如下调整:

def enableSeparateBuildPerCPUArchitecture = false => true
def enableProguardInReleaseBuilds = false => true

遇到的错误

尝试生成签名APK时,触发以下构建失败:

Execution failed for task ':app:packageRelease'.

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
java.io.IOException: Failed to create path-project/android/app/build/outputs/apk/release/app1.0.5(65)-release.apk'

已尝试的无效方案

在gradle.properties中添加内存配置,但问题未解决:

org.gradle.jvmargs=-Xmx4608m

相关配置文件内容

android/build.gradle

buildscript {
ext {
    buildToolsVersion = "30.0.2"
    minSdkVersion = 21
    compileSdkVersion = 30
    targetSdkVersion = 30
    firebaseMessagingVersion = "+"
    googlePlayServicesVersion = "+"
    playServicesVersion = "17.0.0"
    androidMapsUtilsVersion = "2.2.5"
}
repositories {
    google()
    jcenter()
}
dependencies {
    classpath("com.android.tools.build:gradle:4.0.1")
    classpath 'com.google.gms:google-services:4.3.8'
}
}

android/app/build.gradle

splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }

buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.debug
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
        applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "tcard${variant.versionName}(${variant.versionCode})-${variant.name}.apk"
            }
        }
    }

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code
            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for universal variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }

        }

packagingOptions {
        pickFirst 'lib/x86/libc++_shared.so'
        pickFirst 'lib/x86_64/libjsc.so'
        pickFirst 'lib/arm64-v8a/libjsc.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        pickFirst 'lib/x86_64/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'
    }

原因排查与解决方案

核心原因

  1. 文件名包含非法字符:错误中的APK文件名带有括号(),Windows等操作系统不允许文件名包含这类特殊字符,导致Gradle无法创建文件路径。
  2. ABI拆分导致文件名重复:开启enableSeparateBuildPerCPUArchitecture=true后会生成多个不同架构的APK,但当前输出文件名未包含ABI标识,会出现重名冲突。
  3. Gradle配置语法错误:提供的android/app/build.gradle中,applicationVariants.all块缺少闭合的},导致配置解析异常。

解决方案

  1. 修改输出文件名规则
    在android/app/build.gradle的buildTypes块中,替换非法字符并添加ABI标识,避免重名:

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def abi = output.getFilter(OutputFile.ABI) ?: "universal"
            outputFileName = "tcard_${variant.versionName}_${variant.versionCode}_${abi}_${variant.name}.apk"
        }
    }
    
  2. 修复Gradle配置语法
    补全applicationVariants.all块的闭合括号:

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {
                output.versionCodeOverride = versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    } // 补全该闭合括号
    
  3. 清理缓存后重新构建
    执行命令清理旧构建缓存,再重新生成APK:

    ./gradlew clean
    ./gradlew assembleRelease
    
  4. 检查目录权限
    确保项目所在目录拥有读写权限,避免因权限不足导致文件创建失败。

内容的提问来源于stack exchange,提问作者Zero0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:25:14