Gradle多渠道apk打包自动重命名

使用友盟多渠道发布apk,使用gradle自动打apk是十分方便的,这里贴出build.gradle代码
AndroidManifest.xml配置如下:

<meta-data

        android:value="${UMENG_CHANNEL}"

 

         android:name="UMENG_CHANNEL"/>

 

build.gradle代码如下:

 

apply plugin: 'com.android.application'

 

dependencies {

    compile fileTree(dir: 'libs', include: '*.jar')

    compile project(':PushSDK')

}

 

android {

    compileSdkVersion 22

    buildToolsVersion "24.0.2"

 

    compileOptions {

        sourceCompatibility JavaVersion.VERSION_1_7

        targetCompatibility JavaVersion.VERSION_1_7

    }

    

    lintOptions {

        abortOnError false

    }

 

    sourceSets {

        main {

            manifest.srcFile 'AndroidManifest.xml'

            java.srcDirs = ['.apt_generated','src']

            resources.srcDirs = ['.apt_generated','src']

            aidl.srcDirs = ['.apt_generated','src']

            renderscript.srcDirs = ['.apt_generated','src']

            res.srcDirs = ['res']

            assets.srcDirs = ['assets']

        }

 

        // Move the tests to tests/java, tests/res, etc...

        instrumentTest.setRoot('tests')

 

        // Move the build types to build-types/<type>

        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...

        // This moves them out of them default location under src/<type>/... which would

        // conflict with src/ being used by the main source set.

        // Adding new build types or product flavors should be accompanied

        // by a similar customization.

        debug.setRoot('build-types/debug')

        release.setRoot('build-types/release')

    }

    

    signingConfigs {  

        myConfig {  

            storeFile file("/Users/allen/Documents/workspace/game.keystore") 

            storePassword "abc123"  

            keyAlias "game"  

            keyPassword "abc123"  

        }  

}  

 

buildTypes {

        release {

//添加签名

            signingConfig signingConfigs.myConfig

//执行混淆

            //runProguard true

            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'

        }

 

productFlavors {  

        AA {  

            manifestPlaceholders = [ UMENG_CHANNEL:"AA"]  

        } 

        BB {  

            manifestPlaceholders = [ UMENG_CHANNEL:"BB"]  

        }

          

}  

 

    //重命名

    android.applicationVariants.all { variant ->

        variant.outputs.each { output ->

            def outputFile = output.outputFile

            

            if (outputFile != null && outputFile.name.endsWith("release.apk")) {

            

                //这里按照实际情况重命名

                def fileName = outputFile.name.replace("-release","");

                output.outputFile = new File(outputFile.parent, fileName);

               

            }

        }

    }

 

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 开发中,Gradle 是一个非常重要的构建工具,可以用来构建和打包 Android 应用程序。Gradle 插件是一种工具,可以扩展 Gradle 的功能,使其能够支持更多的功能。而多渠道打包是 Android 应用程序开发中非常重要的一个方面,它可以让我们将应用程序打包成不同的版本,并发布到不同的应用商店或市场上。 在 Android Studio 中,我们可以通过自定义 Gradle 插件来实现多渠道打包,具体步骤如下: 1. 创建 Gradle 插件项目 在 Android Studio 中创建一个新项目,选择 Gradle 插件项目模板。这将创建一个 Gradle 插件项目,并生成一些默认的代码和文件。 2. 实现多渠道打包 在插件项目中,我们需要实现多渠道打包的功能。这可以通过 Gradle 的 productFlavors 和 buildTypes 配置来实现。我们可以定义多个 productFlavors,并为每个 productFlavor 配置不同的参数,例如应用程序的包、应用程序称等。在 buildTypes 中,我们可以为每个 buildType 配置不同的参数,例如应用程序的版本号、是否开启混淆等。 3. 打包应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的打包。这个任务可以使用 Gradle 提供的 assemble 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的打包参数,并使用 Gradle 的 assemble 任务来生成应用程序的 APK 文件。 4. 发布应用程序 在插件项目中,我们可以编写一个 Gradle 任务来实现应用程序的发布。这个任务可以使用 Gradle 提供的 uploadArchives 任务来实现。我们可以为每个 productFlavor 和 buildType 配置不同的发布参数,并使用 Gradle 的 uploadArchives 任务将应用程序发布到不同的应用商店或市场上。 总的来说,自定义 Gradle 插件多渠道打包是 Android 应用程序开发中非常重要的一个方面。通过自定义 Gradle 插件,我们可以实现更加灵活和高效的应用程序打包和发布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值