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

为不同Android ABI生成多APK的Gradle配置及上架疑问

Android多ABI APK生成配置及Google Play提交指南

一、修改Gradle配置生成多架构APK

直接在现有Gradle配置中添加ABI拆分逻辑,修改后的完整配置如下:

android {
    compileSdk 33

    defaultConfig {
        applicationId "com.XXX.XXX"
        minSdkVersion 31
        targetSdkVersion 33
        versionCode 47 
        versionName "2.3"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    // 核心:开启ABI拆分,生成对应架构的独立APK
    splits {
        abi {
            enable true // 必须开启这个开关
            reset() // 清空默认ABI列表,只保留指定项
            include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' // 覆盖绝大多数主流设备的架构
            universalApk false // 关闭通用APK,避免生成体积庞大的全包
        }
    }

    // 给不同架构APK设置差异化versionCode,让Google Play区分优先级
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def abiName = output.getFilter(com.android.build.OutputFile.ABI)
            if (abiName == null) return
            
            // 按架构优先级分配versionCode增量,arm64-v8a是当前主流,设最高值
            def abiVersionCode = switch(abiName) {
                case 'arm64-v8a' -> 300000
                case 'armeabi-v7a' -> 200000
                case 'x86_64' -> 100000
                case 'x86' -> 50000
                default -> 0
            }
            output.versionCodeOverride = defaultConfig.versionCode + abiVersionCode
        }
    }

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

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

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    namespace 'com.XXX.XXX'
}

关键配置说明

  • splits.abi.enable:开启架构拆分,默认关闭,必须设为true
  • include:指定支持的CPU架构,这四个选项覆盖了绝大多数主流设备
  • universalApk:关闭通用包,用户仅下载对应自身设备架构的APK,大幅减少下载体积
  • versionCodeOverride:给不同架构APK添加增量,确保arm64-v8a版本号最高,Google Play会优先给新设备推送该版本

二、理清你困惑的几个概念(对标iOS模式)

  • splits:就是你需要的「按架构拆分APK」核心功能,类似iOS拆分不同架构包的逻辑(iOS现多为通用包),作用是把完整APK拆分为多个小APK,每个仅包含对应架构的库和代码
  • flavors:风味,和iOS的「Scheme」类似,用于生成不同版本的应用(比如免费/付费版、国内/海外版),每个风味可拥有独立包名、资源和代码,与架构拆分完全独立,当前场景无需使用
  • externalNativeBuild:仅用于配置C/C++原生代码编译,若你是纯Java/Kotlin开发,或第三方SDK已打包好不同架构的库,完全无需关注这个配置

三、编译后提交Google Play的流程

  1. 编译多架构Release包:在Android Studio右侧Gradle面板,找到应用模块 → Tasks → android → assembleRelease,执行完成后,所有架构的APK会生成在app/build/outputs/apk/release/目录下,文件名包含对应架构标识
  2. 上传到Google Play:登录Google Play Console进入应用页面,找到对应发布渠道(如「生产版」),点击「创建新版本」,直接将所有生成的APK拖入上传区域
  3. 自动分发:Google Play会自动识别这些APK属于同一应用的不同架构版本,后续将根据用户设备的CPU架构,自动推送对应APK,用户只会看到适配自身设备的版本
  4. 版本号注意事项:若之前发布的是通用APK,本次多架构APK的版本号必须高于之前的通用包(上面配置的增量已保证这一点),否则用户无法收到更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:17:44