AndroidStudio多渠道打包

本文详细介绍了如何在Android项目中实现多渠道打包,并提供了解决打包命令执行时遇到的问题的方法,包括配置AndroidManifest.xml、build.gradle文件、自定义APK名称、配置签名信息以及解决命令行打包失败的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

我讲到的打包方法就是基于友盟统计实施的。


一、需要在AndroidManifest.xml中配置如下值:

<meta-data
            android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}" />

 

二、在app的build.gradle的android{}中添加如下内容:

flavorDimensions "default"
    //渠道包第2种方式
    productFlavors {
        wandoujia {}
        huawei{}
        xiaomi{}
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }
    }

也可以单独设置:

flavorDimensions "default"
    productFlavors {
        huawei {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei "]
        }
        xiaomi {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi "]
        }
        wandoujia {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
        }
    }

三、自定义APK名称,多渠道打包

//自定义APK名称,多渠道打包
    android.applicationVariants.all { variant ->
        variant.outputs.all { output ->
            variant.productFlavors.each { flavor ->
                def project = "mydemo"
                def separator = "_"
                def buildType = variant.variantData.variantConfiguration.buildType.name
                def versionName = variant.versionName
                def versionCode = variant.versionCode
                def date = new Date()
                def formattedDate = date.format('yyyyMMdd')

                def apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + ".apk"
                if (buildType == "release") {
                    apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + separator + formattedDate + ".apk"
                }

                output.outputFileName = apkName
            }
        }
    }

四、配置签名信息,代码如下:

signingConfigs {
        release {
            v1SigningEnabled true
            v2SigningEnabled false
            keyAlias 'keyalias'
            keyPassword 'libin666'
            storeFile file('./src/main/keystore/mydemo.jks')
            storePassword 'libin666'
        }
        debug {
            v1SigningEnabled true
            v2SigningEnabled false
            keyAlias 'keyalias'
            keyPassword 'libin666'
            storeFile file('./src/main/keystore/mydemo.jks')
            storePassword 'libin666'
        }
    }

五、执行打包命令

到这一步,所有配置已经完成,从此以后我们就可以用一行命令打出N个包啦!
我们只需在Android Studio的命令行Terminal下输入以下命令即可:

linux下打包全部的Release版渠道包:

./gradlew assembleRelease


windows下打包全部的Release版渠道包

gradlew.bat assembleRelease


如果想要Debug的包:

gradlew.bat assembleDebug


如果只要豌豆荚的包:

gradlew.bat assemblewandoujia



如果只要豌豆荚的Release版:

gradlew.bat assemblewandoujiaRelease

六.命令行打包时打包居然失败,报错如下:

* What went wrong:
A problem occurred configuring project ':app'.
> Could not generate a proxy class for class com.android.build.gradle.tasks.BuildArtifactReportTask.

经查是因为本地jdk环境变量配置问题,因为本地安装jdk的时候顺手配置了jre,android studio是内置jre的,所以用ide编译的时候,没有任何问题,但是使用gradlew命令,往壳工程打包的时候就出错了,原因就是俩个jre环境冲突了,这个锅暂时让as3.4.2来背吧,知道了根源,解决简单了

修改了java_home,虽然有点暴力,但重启了下as后居然打包成功了。

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值