Gradle-Android 实战应用

原创 2015年11月19日 16:56:14

  关于gradle的基础了解,提供一个中文指南,不了解gradle的需要先看指南。

  大多数Android用户使用gradle的初始目的很简单,就是多渠道打包,那么我们就来说说多渠道打包的问题(这里以友盟举例)

  多渠道打包的关键之处在于,定义不同的product flavor,并把 AndoridManifest中的channel渠道编号替换为对应的渠道名,我们在AndroidManifest文件下的application根节点进

行如下配置:

  

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

  然后进入你的build.gradle(注意这里是Module gradle,不是Project gradle,本文中提到的build.gradle都是module的)中的android节点下的productFlavors配置:

android {
    // 你的其他配置代码

    productFlavors {
        yingyongbao {
            manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]
        }
        umeng {
            manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]
        }
        wandoujia {
            manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]
        }

    }
    // 你的其他配置代码
}

mete-data中的value=“${CHANNEL_NAME}”实际上只是个占位符,它在build.gradle中会根据不同的渠道名称替换成不同的值,由此来实现多渠道打包,不需要在原始的清单

文件下写一堆与项目没多大关系的东西,把构建项目集中到build.gradle中。这里manifestPlaceholders可以用来替换AndroidManifest下的占位符号,当然不只是替换渠道包这么单

一的功能,举个例子比方说我们的清单文件中配置的activity,我们也可以用占位符先占着${activity},然后在不同的渠道中配置不同的activity的完整名称,那么在不同的渠道下就会

加载不同的activity。

  下面在介绍一个常用的功能,在每一个gradle构建的项目中都有gradle-wrapper.properties文件,在该文件中配置签名信息:

RELEASE_KEY_PASSWORD=xxxx
RELEASE_KEY_ALIAS=xxx
RELEASE_STORE_PASSWORD=xxx
RELEASE_STORE_FILE=../.keystore/xxx.jks


  然后在build.gradle中直接引用就可以

android {
    signingConfigs {
        release {
            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD
            keyAlias RELEASE_KEY_ALIAS
            keyPassword RELEASE_KEY_PASSWORD
        }
    }
}


  继续新功能,buildtype定制参数:

android {
        debug {
            manifestPlaceholders = [app_label:"@string/app_name_debug"]
            applicationIdSuffix ".debug" //增加id后缀
            minifyEnabled false  //混淆
            signingConfig signingConfigs.debug //使用签名
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            manifestPlaceholders = [app_label:"@string/app_name"]
            minifyEnabled true
            shrinkResources true  //去除无用资源
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        preview{
            manifestPlaceholders = [app_label:"@string/app_name_preview"]
            applicationIdSuffix ".preview"
            debuggable true // 保留debug信息
            minifyEnabled true
            shrinkResources true
            signingConfig signingConfigs.preview
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}


  自定义导出APK名称:androidstudio默认只会打出debug和release包,当又多个渠道和变种版本时,一下几十个包,打出来都不知道谁是谁了,那么通过名称分类很重要

  

android {
    // rename the apk with the version name
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(
                    output.outputFile.parent,
                    "ganchai-${variant.buildType.name}-${variant.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase())
        }
    }
}

  当然如果只是当作一个工具在用的话,看看指南在看看这个帖子,就到这了。如果你很闲或者你很有兴趣推荐一个gradle博客






阿斯蒂芬 阿斯蒂芬

1.androidstudio学习 android studio快捷键 ctrl+shift+N文件查找 ctrl+shift+F查找 ctrl+alt+L格式化  ctrl+alt+t常用...

Gradle实战:Android多渠道打包方案汇总

转自:http://blog.csdn.net/u010818425/article/details/52319382 本文将延续之前几篇博客的风格,先从基本概念入手,这有助于我们对后文...

Jenkins项目实战之-Android基于Gradle参数化打不同环境安装包(二)

前面一篇,我介绍了如何实现打包,但是有一个问题,就是无法根据实际需要打不同环境的包。很多公司至少有测试环境包和线上环境包这两种。到底如何来控制打不同环境包,每个公司基本上都是控制修改配置文件的对应网站...

Gradle实战:Android多渠道打包方案汇总

本文将延续之前几篇博客的风格,先从基本概念入手,有了一定点理解之后再上主角; 在后续的代码中如果忘了某个概念的具体意义,可以回顾头来重新查看概念的介绍。 一、基本概念介绍1. package,A...

Android实战-使用gradle打多渠道包

加入新公司后,将项目从Eclipse转到了Android Studio,转换后第一个需要解决的就是编写新的打包脚本。 Studio默认使用gradle打包,对于gradle还不熟悉的同学,可以先去看...

Android实战技巧之十一:Android Studio和Gradle

经过两个多月的AS体验,我认为是时候将Android的开发环境迁移到AS上了。目前最新版本是1.0.2,除了UI控件拖拽偶尔崩溃的问题(Ubuntu),其他功能用来还是十分流畅和高效。打动我的有如下几...
  • lincyang
  • lincyang
  • 2015年02月17日 13:07
  • 87731

从框架到完整项目搭建,实战项目《约个球》(8)- 将项目迁移到android studio,使用gradle搭建android项目(中)

这里接着上一篇文章进行讲解。上一篇文章中的2使用Module依赖,4使用Maven。应该是网络问题导致依赖Maven中的一些库在我的文件中根本无法使用。所以才去第一种方式和第二种方式。第二种方式主要的...

Android Studio下项目构建的Gradle配置及打包应用变体

Gradle简介   Gradle是一个自动化构建工具,采用Groovy的Domain Specific Language(领域特定语言)来描述和控制构建逻辑。具有语法简洁、可读性强、配置灵活等特点。...

使用Gradle构建Android应用

使用Gradle构建Android应用最近重读 Gradle for Android 一书,发现以前囫囵吞枣式的阅读只了解到点皮毛。重读一次,收获颇丰,想着结合实践,做做笔记。本文从统一配置依赖管理,...

Android应用开发编译框架流程与IDE及Gradle概要

Android应用开发编译框架流程与IDE及Gradle概要  1 背景 建议阅读本文之前先阅读《Android Studio入门到精通》和《Groovy脚本基础全攻略》及《Gradle脚本基础全攻...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle-Android 实战应用
举报原因:
原因补充:

(最多只允许输入30个字)