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

升级compileSdkVersion至26后编译报错:缺失Manifest-Version属性

解决compileSdkVersion升级到26后"Failed to generate v1 signature"报错

我之前升级compileSdk到26时也碰到过一模一样的问题,根源就是META-INF目录下的MANIFEST.MF文件缺少必填的Manifest-Version属性,你的packagingOptions里用了pickFirst 'META-INF/*'大概率是诱因——通配符会让Gradle随机选取一个依赖的MANIFEST.MF,而这个被选中的文件可能不符合规范。下面是我亲测有效的解决步骤:

一、调整packagingOptions配置(最可能解决问题)

你的通配符pickFirst 'META-INF/*'会覆盖所有META-INF下的文件,包括关键的MANIFEST.MF。改成只处理有冲突的特定文件,而不是全部:

android {
    // 其他配置...
    packagingOptions {
        // 只排除或优先选择明确冲突的文件,比如LICENSE、NOTICE或者服务类文件
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        pickFirst 'META-INF/services/javax.annotation.processing.Processor' // 示例,根据你的冲突情况调整
    }
}

如果不确定哪些文件冲突,可以先注释掉pickFirst 'META-INF/*',编译看看会不会报其他冲突错误,再针对性处理。

二、清理并重新构建项目

执行以下命令彻底清理缓存:

./gradlew clean
./gradlew assembleDebug --stacktrace

有时候旧的build缓存里会保留损坏的MANIFEST.MF文件,清理后重新生成就能解决。

三、检查依赖库兼容性

某些旧依赖可能打包了不符合SDK 26规范的MANIFEST.MF。执行命令查看所有依赖:

./gradlew app:dependencies

找到版本较老的库,尤其是和annotation processing、multiDex相关的库,尝试升级到兼容Android 8.0(API 26)的版本。

四、验证AndroidManifest.xml的正确性

确保你的Manifest根节点属性完整,比如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxx.xxx.com"
    android:versionCode="xxx"
    android:versionName="x.x.x">
    <!-- 其他组件配置 -->
</manifest>

不过更推荐只在Gradle中配置versionCode和versionName,Manifest里可以去掉这两个属性,避免冲突。


你提供的配置信息参考

Gradle配置片段:

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        applicationId "xxx.xxx.com"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode xxx
        versionName "x.x.x"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        pickFirst 'META-INF/*'
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

完整堆栈跟踪关键信息:

[10:58:50] john@bob:project$ gradle assembleDebug --stacktrace
...
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':app:packageDebug'.
Failed to generate v1 signature
...
Caused by: java.lang.IllegalArgumentException: Mandatory Manifest-Version attribute missing

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:16:32