Android 使用Gradle动态生成多渠道的APK

在使用gradle 进行多渠道打包的过程中参考了博文:http://blog.csdn.net/qihigh/article/details/17922345 (在此先感谢一下)

然而在使用的过程中使用gradle assembleRelease -Pmc 并不能得到我想要的所有的包,究其原因是:作者使用了buildType来作为渠道的定义类型,这个不能满足我的需求。而在我的理解,多渠道应当是flavor,因此自己重新写了一下flavor的脚本

def falvors = getMyFlavorsFromFileSystem();

    productFlavors{
        prod {

        }
        dev{

        }
        _4T{}

        falvors.each{name,config->
            "$name"{
                sourceSets["$name"].res.srcDirs = [config.rrrr]
            }
        }

    }

这样在在使用assembleRelease -Pmc 时就能够按照预期的打包生成apk了

附上相关的代码:

def getMyFlavorsFromFileSystem(){
    flavors = [:]
    if (project.hasProperty('mc')){

        println '------setup flavors ---------------'
        def path = './build-type/type.txt'
        def prefix = '_'
        file(path).eachLine{ line ->
            println line
            def f = file("./build-type/$line")
            if (!f.exists()) {
                f.mkdir()
            }

            def resPath = file("./build-type/$line/res-" + prefix+line)
            if (!resPath.exists()) {
                resPath.mkdir()
            }

            copyRes(resPath.absolutePath,line)
            flavors.put(prefix+line,[
                    rrrr : resPath
            ])
        }

    }

    return flavors
}

参考文档:

Android自动构建多平台的包

dynamically-generating-product-flavors

还有这个

时间: 2024-10-07 06:35:11

Android 使用Gradle动态生成多渠道的APK的相关文章

Android Studio + gradle多渠道打包

通过工具栏的Build->Build Apk 好像只能打包第一个Module(eclipse里面是Project的概念),怎么多渠道打包呢?目前好像只能一个一个的打 首先在清单文件里设置个变量: 这个变量可以在Application里这样获得,从而app内就知道是哪个渠道了, 然后在build.gradle里设置productFlavors 如yingyongbao就填充到清单文件里面的CHANEL_NAME变量了 找到Gradle任务单元,进入build单元,右键run,就能生产出该渠道的ap

Android热补丁动态修复技术(完结篇):自动生成打包带签名的补丁,重构项目

一.关于前面四篇博文 Android热补丁动态修复技术(一):从Dex分包原理到热补丁 Android热补丁动态修复技术(二):实战!CLASS_ISPREVERIFIED问题! Android热补丁动态修复技术(三)-- 使用Javassist注入字节码,完成热补丁框架雏形(可使用) Android热补丁动态修复技术(四):自动化生成补丁--解决混淆问题 前两篇博文主要是介绍热补丁修复技术的一些原理和实现方案. 而后面两篇博文主要是介绍如何使用代码实现整个热补丁框架,但是框架写的真的很糟糕,很

Android动态生成表格

最近刚刚学习完Android的五大布局,现在我们进一步深入学习,尝试做一个动态生成表格功能的例子 样式布局代码如下: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4

Android 动态生成布局 (多层嵌套)

Android 除了可以加载xml文件,显示布局外,也可以代码生成布局,并通过setContentView(View view)方法显示布局.单独的一层布局,如一个主布局加一个控件(如Button\imageView等)动态生成代码比较简单,下面只给出示例代码: package com.example.android_dongtaishengcheng; import android.os.Bundle; import android.app.Activity; import android.c

Android Studio - 第四十七期 毛玻璃效果以及动态生成二维码以及增大点击热区

最近回看撸撸的代码,有一些自定义的view写法很不错,下面封装出来,希望能帮到大家: 1.毛玻璃效果:BitmapUtils package com.example.p030_popbgqcode.utils; import android.content.Context; import android.graphics.Bitmap; import android.renderscript.Allocation; import android.renderscript.Element; imp

Android动态生成课程表 详解

根据提供的课程信息,动态生成课程表.不同于网上流传的课表形式,课程节数是固定,本课表的课程节数不固定. 1.效果图 每天共有12节课,上课节数每天都不同. 2.布局文件代码 周一到周日是  7个竖直线性布局文件,其他皆为辅助标题或序号. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools

Android动态生成按钮样式

动态生成按钮样式 使用: int borderColor = Color.parseColor("#2E3135"); int bgColor = Color.parseColor("#00FF00"); // 设置View背景样式,有边框宽度.边框颜色.圆角度数.背景颜色. GradientDrawable shape = DrawableUtils.createShape(1, 4, borderColor, bgColor); btn1.setBackgrou

Android 使用 Gradle 多渠道打包

安卓开发完毕.对于一个开放应用而言,我们须要公布到不同的应用市场,同一时候我们也须要统计不同市场的用户下载量. (通过启动应用后获取不同市场apk中的不同值来区分) 以下用一个详细的实例来说明: 1.在AndroidManifest.xml的application内加入meta-data标签 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:

zz深入理解Android之Gradle

http://blog.csdn.net/innost/article/details/48228651 Gradle是当前非常“劲爆”得构建工具.本篇文章就是专为讲解Gradle而来.介绍Gradle之前,先说点题外话. 一.题外话 说实话,我在大法工作的时候,就见过Gradle.但是当时我一直不知道这是什么东西.而且大法工具组的工程师还将其和Android Studio大法版一起推送,偶一看就更没兴趣了.为什么那个时候如此不待见Gradle呢?因为我此前一直是做ROM开发.在这个层面上,我们