gradle多渠道打包及友盟统计

D:\Gradle\gradle-1.12-all\gradle-1.12

配置一下path(GRADLE_HOME只是作为一个根路径而已)

新建一个 gradle-repo文件夹配置环境变量

GRADLE_USER_HOME

D:\Gradle\gradle-repo

测试gradle环境是否配置成功。

在命令提示符中输入:gradle -version

出现如上图结果,,表示gradle配置成功。

二.使用gradle进行打包

1.查看需要打包的项目中的gradle.build文件(默认生成的文件)并添加相关脚本代码

buildscript { //buildscript中的声明是gradle脚本自身需要使用的资源。 //可以声明的资源包括依赖项、第三方插件、maven仓库地址等repositories {mavenCentral()}dependencies {classpath 'com.android.tools.build:gradle:0.12.+'}}apply plugin: 'android'//在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源dependencies {compile fileTree(dir: 'libs', include: '*.jar')}android {compileSdkVersion 19buildToolsVersion "19.1.0"sourceSets {main {manifest.srcFile 'AndroidManifest.xml'java.srcDirs = ['src']resources.srcDirs = ['src']aidl.srcDirs = ['src']renderscript.srcDirs = ['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')}lintOptions {abortOnError false } ////////////////////以上代码打出了最简单的包,一般情况下生成了两个包//////////////////// //*-debug-unaligned.apk:未进行zipAlign优化的apk包 //*-release-unsigned.apk:未签名的apk包 //以上两种包都不是正式所需要的包,添加下面代码打出签名包signingConfigs { myConfig {//绝对路径和相对路径都可以storeFile file("E:\\sjjywork\\key\\key4VipOneToOne\\JyVipKey.keystore")storePassword "sjjy,vip"keyAlias "jiayuan_vip_key"keyPassword "sjjy,vip" } } buildTypes{release {//1.添加签名signingConfig signingConfigs.myConfig//2.runProguard 执行混淆代码runProguard true//混淆规则文件proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'} }//添加了上述代码之后,打出了已经签名的apk:其中xxx-release-unaligned.apk是签名为进行zipAligned优化的包 //xxx-release.apk是签名和zipAlign优化过的包 //添加混淆代码的执行代码如上第二步,就可以实现打出混淆包//下面的代码开始打批量包productFlavors {GooglePlay{//替换manifest文件中的占位符(placeHolder)manifestPlaceholders = [UMENG_CHANNEL_VALUE:"GooglePlay"]}Store360{manifestPlaceholders = [UMENG_CHANNEL_VALUE:"Store360" ]}//在下面继续添加不同渠道的渠道代码 } //通过以下方式是批量的设置// productFlavors.all { flavor -> // flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ] //}}tasks.withType(Compile) { options.encoding = "UTF-8" }在这个文件中手动添加的代码都已经做了详细的注释。

2.manifest中添加友盟统计的key和渠道代码(关于友盟统计的key的获取和添加,直接参考友盟统计的文档,不多做解释)

打渠道包的目的是什么?为什么要打渠道包?这个可以见<<1.0apk批量打包认知>>

得到的结论,是要做统计。上面的文件中,使用了友盟统计。

此时需要在manifest.xml添加如下代码:

<!– 渠道id,key直接使用umeng的,方便接入umeng sdk –><meta-data android:name="UMENG_APPKEY" android:value="YOUR_APP_KEY" ></meta-data><!–配置placeHolder(占位符),用于多渠道打包的时候替换–><meta-dataandroid:name="UMENG_CHANNEL"android:value="${UMENG_CHANNEL_VALUE}" />

打批量包的时候,主要使用到的placeHolder:${UMENG_CHANNEL_VALUE} 清单文件中的一个占位符。

在批量打包的过程批量替换这个UMENG_CHANNEL_VALUE这个字段生成不同的apk包。

3.正式执行批量打包

在控制台中,进入项目所在的目录,执行gradle clean,gradle build。如果没有报错,将打包成功

不论你在什么时候结束,重要的是结束之後就不要悔恨

gradle多渠道打包及友盟统计

相关文章:

你感兴趣的文章:

标签云: