Android 开发技巧-以友盟为例在Android Studio利用gradle进行多渠道打包和apk签名发布

转载请注明出处,感谢您的支持。同时,欢迎加入移动开发学习交流qq群 : 450302004,互相学习。
文章来源:【chenyk的简书】http://www.jianshu.com/p/97788e0b4f49

自谷歌放弃对eclipse的维护,力推android studio时,其版本的更新迭代速度也是非常快的,而且开发的工程中经常需要用到gradle的相关操作。同时,gradle这款依赖管理工具也随之被大家广泛使用。可gradle它究竟是什么呢?到底有什么作用呢?

另外,每当项目开发完成准备发布到各大安卓应用市场时,相信此时作为项目开发人员来说简直头大,如果发布的应用市场数量小的话,可能多操作几次就完事了的,倘若是几十个应用市场的话,事实上apk的打包速度本身就慢,这样即浪费人力物力,同时也是非常没有效率的。

自从有了友盟统计SDK的发布,给大家带来不少便捷,除了平时对用户统计、错误分析等功能之外,友盟SDK同时还提供了多渠道快速打包的功能。废话说得有些多,下面将为大家介绍其常用用法、友盟多渠道打包以及apk的签名发布操作。

定义

Gradle是Android Studio默认的build工具,是基于一种JVM语言— Groovy,再加上DSL组成的。说白了一种依赖管理工具,它抛弃了基于XML的各种繁琐配置,使用起来也简单,语法也相对简洁很多。

功能

项目创建完成之后,默认生成两个build.gradle文件,一个位于工程根目录下,另一个位于app目录下。工程根目录下的build.gradle文件是针对全局的配置,里面包括仓库地址和gradle的版本,这里不做过多讨论。这里主要说下app目录下的build.gradle文件。常用的功能共包括了以下几点:

1)声明构建的项目类型

apply plugin: 'android'

2)设置编译android项目的参数

android {
    //编译SDK的版本
    compileSdkVersion 23
    //编译的tools版本
    buildToolsVersion "23.0.3"

   defaultConfig {
        //当前应用包名
        applicationId "com.chenyk.androidkits"
        //支持的最低版本
        minSdkVersion 9
        //支持的目标版本
        targetSdkVersion 22
        //版本号
        versionCode 1
        //版本名
        versionName "1.0"
        // dex突破65535的限制
        multiDexEnabled true
    }
  }

3)签名配置

    signingConfigs {
        debug {
            keyAlias 'kits'
            keyPassword '888888'
            storeFile file("kitskeystore.jks")
            storePassword '888888'
        }
        release {
            //key别名
            keyAlias 'kits'
            //key密码
            keyPassword '888888'
            //密钥文件路径
            storeFile file("kitskeystore.jks")
            //密钥文件密码
            storePassword '888888'
        }
    }

4)混淆设置

buildTypes {
    release {
        minifyEnabled true
         //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件
        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'            
        signingConfig signingConfigs.release
    }
}

5)多渠道打包

 productFlavors {
        googleplay {}
        huawei {}
        xiaomi {}
        wandoujia {}
        baidu {}
        yingyongbao {}
        android360 {}
        uc {}
        umeng {}
        meizu{}
        //批量配置
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }

6).so文件的导入

task copyNativeLibs(type: Copy) {
    from fileTree(dir: 'libs', include: 'armeabi/*.so') into 'build/lib'
}
tasks.withType(Compile) {
    options.encoding = "UTF-8"
}
tasks.withType(Compile) {
    compileTask -> compileTask.dependsOn copyNativeLibs
}
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { 
    pkgTask ->pkgTask.jniFolders = [new File(buildDir, 'lib')]
}

7)依赖库

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

8)依赖包的定义

dependencies {
    classpath 'com.android.tools.build:gradle:0.4'
}

多渠道打包

1、友盟账号注册登录

友盟账号注册,按照步骤完成注册流程,方法简单,请自行完成。

2、SDK的下载

1)jar包下载:http://dev.umeng.com/analytics/android-doc/sdk-download ,下载完成后解压缩,并将jar包添加到libs目录下
2)gradle依赖配置:在build.gradle文件中添加以下配置

dependencies {
     compile 'com.umeng.analytics:analytics:latest.integration'
}
3、获取友盟appkey

1)进入友盟首页,选择应用统计,点击立即使用,进入到我的产品页面

应用统计选择页面

2)添加新应用,按照提示信息填写相关资料后,提交并获取appkey

获取appkey
4、在AndroidManifest.xml中配置AppKey

添加以下相关权限,以及友盟相关参数

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application ……>
    ……
    <activity ……/>
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="YOUR_APP_KEY" />
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="Channel ID" />
    </application>

这里简单说明下,YOUR_APP_KEY填入步骤3获取的appkey,并且我们是要进行多渠道的打包,这里的Channel ID需改为${UMENG_CHANNEL_VALUE}才能在打包的时候通过build.gradle文件中的productFlavors进行对应。

关于友盟SDK的集成步骤到此就ok了的,如若还有不明白的地方可参考友盟官方提供的集成文档。下面将开始讲述多渠道打包的配置步骤。

5、添加渠道包名,配置不同风格的app
  productFlavors {
        googleplay {}
        huawei {}
        xiaomi {}
        wandoujia {}
        baidu {}
        yingyongbao {}
        android360 {}
        uc {}
        umeng {}
        meizu{}
        //批量配置
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }

最后在Terminal命令提示符中,输入命令 gradlew assembleRelease,等待打包工作的完成。打包完成之后,可以在 当前项目名称\app\build\outputs\apk\ 目录下查看已打包完成的apk列表。会不会觉得比以前打包的方式简单多了,效率也提升了不少。

多渠道打包结果

当然这里还有一些其他的命令提供使用,比如:

gradlew assembleRelease //创建新任务打包所有渠道包的release版本apk
gradlew assembleDebug //创建新任务打包所有渠道包的debug版本apk
gradlew assemblebaiduRelease //创建新任务打包指定渠道包(百度)的release版本apk


打包的工作虽然已经完成,但大家都知道,此时打包的apk并没有进行签名,没有签名当然也就无法发布到应用市场。下面就说下apk是如何签名的,步骤相对来说比较简单。

apk签名发布

1)在Android Studio的菜单栏上依次选择Build->Generate Signed APK...

签名菜单栏选择

2)创建密钥库及密钥,点击“Create new...”按钮创建密钥库

创建密钥库

这里注意一下信息项需填写哪些信息:

Key store path:密钥库文件的地址
Password/Confirm:密钥库的密码
Alias:密钥名称
Password/Confirm:密钥密码
Validity(years):密钥有效时间,一般默认25年
First and Last Name:密钥颁发者姓名
Organizational Unit:密钥颁发组织
City or Locality:城市
Country Code(XX):国家代码

4)点击Finish完成之后,到下一界面

密码输入页面

5)点击Next按钮,并选择所有渠道或指定渠道,点击Finsh按钮,进行签名打包工作任务

选择build type和flavors

等待所有渠道包签名打包完成后就可以发布到各大应用市场了的。

签名的方式还有另外一种哦,具体的操作是

在build.gradle文件中添加签名配置信息以及buildTypes配置信息如下:

 //签名配置
    signingConfigs {
        debug {
            keyAlias 'kits'
            keyPassword '888888'
            storeFile file("kitskeystore.jks")
            storePassword '888888'
        }
        release {
            //key别名
            keyAlias 'kits'
            //key密码
            keyPassword '888888'
            //密钥文件路径
            storeFile file("kitskeystore.jks")
            //密钥文件密码
            storePassword '888888'
        }
    }

  buildTypes {
        debug {
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            // apk包名称后缀,用来区分release和debug
            versionNameSuffix "-debug"
            signingConfig signingConfigs.debug
        }
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //开启混淆
            minifyEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

注意,这里笔者把debug版本和release都设置同样的配置信息,在平常的开发过程中debug配置,可以使用android studio默认的配置信息即可。配置完成后,在Terminal命令提示符中,输入命令gradlew assembleRelease就可以了的。

打包结果

在打包apk文件时,还可以对文件的名称进行修改,比如加入时间信息或者svn版本到apk文件名称中,方便查找apk等。下面将把打包的时间添加到apk名称中,具体代码如下:

  applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为dt_android360_v1.0_0705114322.apk
                        def fileName = "dt_${variant.productFlavors[0].name}_v${defaultConfig.versionName}_${new Date().format("MMddhhmmss")}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }

最后奉上完整版的build.gradle文件的全部内容,同时文件也加入了注释,方便读者阅读

apply plugin: 'com.android.application'

android {
    //编译SDK的版本
    compileSdkVersion 23
    //编译的tools版本
    buildToolsVersion "23.0.3"

    defaultConfig {
        //当前应用包名
        applicationId "com.chenyk.androidkits"
        //支持的最低版本
        minSdkVersion 9
        //支持的目标版本
        targetSdkVersion 22
        //版本号
        versionCode 1
        //版本名
        versionName "1.0"
        // dex突破65535的限制
        multiDexEnabled true
    }
    //执行lint检查,有任何的错误或者警告提示,都会终止构建,现将其关掉。
    lintOptions {
        abortOnError false
    }

    //签名配置
    signingConfigs {
        debug {
            keyAlias 'kits'
            keyPassword '888888'
            storeFile file("kitskeystore.jks")
            storePassword '888888'
        }
        release {
            //key别名
            keyAlias 'kits'
            //key密码
            keyPassword '888888'
            //密钥文件路径
            storeFile file("kitskeystore.jks")
            //密钥文件密码
            storePassword '888888'
        }
    }

    buildTypes {
        debug {
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            // apk包名称后缀,用来区分release和debug
            versionNameSuffix "-debug"
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
            signingConfig signingConfigs.debug
        }
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //开启混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            //修改输出文件的名称
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为dt_android360_v1.0_0705114322.apk
                        def fileName = "dt_${variant.productFlavors[0].name}_v${defaultConfig.versionName}_${new Date().format("MMddhhmmss")}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
    }
    //渠道Flavors,配置不同风格的app
    productFlavors {
        googleplay {}
        huawei {}
        xiaomi {}
        wandoujia {}
        baidu {}
        yingyongbao {}
        android360 {}
        uc {}
        umeng {}
        meizu{}
        //批量配置
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.2.0'
    compile project(':jpushkit')
    compile project(':commkit')
    compile project(':asynchttpkit')
    compile project(':jskit')
    compile project(':appkit')
    compile project(':photokit')
    compile project(':retrofitkit')
    compile project(':zxingkit')
}

Android 开发技巧-以友盟为例在Android Studio利用gradle进行多渠道打包和apk签名发布

chenyk 
2016.08.10 11:34*  阅读 406 喜欢 22

转载请注明出处,感谢您的支持。同时,欢迎加入移动开发学习交流qq群 : 450302004,互相学习。
文章来源:【chenyk的简书】http://www.jianshu.com/p/97788e0b4f49

自谷歌放弃对eclipse的维护,力推android studio时,其版本的更新迭代速度也是非常快的,而且开发的工程中经常需要用到gradle的相关操作。同时,gradle这款依赖管理工具也随之被大家广泛使用。可gradle它究竟是什么呢?到底有什么作用呢?

另外,每当项目开发完成准备发布到各大安卓应用市场时,相信此时作为项目开发人员来说简直头大,如果发布的应用市场数量小的话,可能多操作几次就完事了的,倘若是几十个应用市场的话,事实上apk的打包速度本身就慢,这样即浪费人力物力,同时也是非常没有效率的。

自从有了友盟统计SDK的发布,给大家带来不少便捷,除了平时对用户统计、错误分析等功能之外,友盟SDK同时还提供了多渠道快速打包的功能。废话说得有些多,下面将为大家介绍其常用用法、友盟多渠道打包以及apk的签名发布操作。

定义

Gradle是Android Studio默认的build工具,是基于一种JVM语言— Groovy,再加上DSL组成的。说白了一种依赖管理工具,它抛弃了基于XML的各种繁琐配置,使用起来也简单,语法也相对简洁很多。

功能

项目创建完成之后,默认生成两个build.gradle文件,一个位于工程根目录下,另一个位于app目录下。工程根目录下的build.gradle文件是针对全局的配置,里面包括仓库地址和gradle的版本,这里不做过多讨论。这里主要说下app目录下的build.gradle文件。常用的功能共包括了以下几点:

1)声明构建的项目类型

apply plugin: 'android'

2)设置编译android项目的参数

android {
    //编译SDK的版本
    compileSdkVersion 23
    //编译的tools版本
    buildToolsVersion "23.0.3"

   defaultConfig {
        //当前应用包名
        applicationId "com.chenyk.androidkits"
        //支持的最低版本
        minSdkVersion 9
        //支持的目标版本
        targetSdkVersion 22
        //版本号
        versionCode 1
        //版本名
        versionName "1.0"
        // dex突破65535的限制
        multiDexEnabled true
    }
  }

3)签名配置

    signingConfigs {
        debug {
            keyAlias 'kits'
            keyPassword '888888'
            storeFile file("kitskeystore.jks")
            storePassword '888888'
        }
        release {
            //key别名
            keyAlias 'kits'
            //key密码
            keyPassword '888888'
            //密钥文件路径
            storeFile file("kitskeystore.jks")
            //密钥文件密码
            storePassword '888888'
        }
    }

4)混淆设置

buildTypes {
    release {
        minifyEnabled true
         //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件
        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'            
        signingConfig signingConfigs.release
    }
}

5)多渠道打包

 productFlavors {
        googleplay {}
        huawei {}
        xiaomi {}
        wandoujia {}
        baidu {}
        yingyongbao {}
        android360 {}
        uc {}
        umeng {}
        meizu{}
        //批量配置
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }

6).so文件的导入

task copyNativeLibs(type: Copy) {
    from fileTree(dir: 'libs', include: 'armeabi/*.so') into 'build/lib'
}
tasks.withType(Compile) {
    options.encoding = "UTF-8"
}
tasks.withType(Compile) {
    compileTask -> compileTask.dependsOn copyNativeLibs
}
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { 
    pkgTask ->pkgTask.jniFolders = [new File(buildDir, 'lib')]
}

7)依赖库

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

8)依赖包的定义

dependencies {
    classpath 'com.android.tools.build:gradle:0.4'
}

多渠道打包

1、友盟账号注册登录

友盟账号注册,按照步骤完成注册流程,方法简单,请自行完成。

2、SDK的下载

1)jar包下载:http://dev.umeng.com/analytics/android-doc/sdk-download ,下载完成后解压缩,并将jar包添加到libs目录下
2)gradle依赖配置:在build.gradle文件中添加以下配置

dependencies {
     compile 'com.umeng.analytics:analytics:latest.integration'
}
3、获取友盟appkey

1)进入友盟首页,选择应用统计,点击立即使用,进入到我的产品页面

应用统计选择页面

2)添加新应用,按照提示信息填写相关资料后,提交并获取appkey

获取appkey
4、在AndroidManifest.xml中配置AppKey

添加以下相关权限,以及友盟相关参数

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application ……>
    ……
    <activity ……/>
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="YOUR_APP_KEY" />
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="Channel ID" />
    </application>

这里简单说明下,YOUR_APP_KEY填入步骤3获取的appkey,并且我们是要进行多渠道的打包,这里的Channel ID需改为${UMENG_CHANNEL_VALUE}才能在打包的时候通过build.gradle文件中的productFlavors进行对应。

关于友盟SDK的集成步骤到此就ok了的,如若还有不明白的地方可参考友盟官方提供的集成文档。下面将开始讲述多渠道打包的配置步骤。

5、添加渠道包名,配置不同风格的app
  productFlavors {
        googleplay {}
        huawei {}
        xiaomi {}
        wandoujia {}
        baidu {}
        yingyongbao {}
        android360 {}
        uc {}
        umeng {}
        meizu{}
        //批量配置
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }

最后在Terminal命令提示符中,输入命令 gradlew assembleRelease,等待打包工作的完成。打包完成之后,可以在 当前项目名称\app\build\outputs\apk\ 目录下查看已打包完成的apk列表。会不会觉得比以前打包的方式简单多了,效率也提升了不少。

多渠道打包结果

当然这里还有一些其他的命令提供使用,比如:

gradlew assembleRelease //创建新任务打包所有渠道包的release版本apk
gradlew assembleDebug //创建新任务打包所有渠道包的debug版本apk
gradlew assemblebaiduRelease //创建新任务打包指定渠道包(百度)的release版本apk


打包的工作虽然已经完成,但大家都知道,此时打包的apk并没有进行签名,没有签名当然也就无法发布到应用市场。下面就说下apk是如何签名的,步骤相对来说比较简单。

apk签名发布

1)在Android Studio的菜单栏上依次选择Build->Generate Signed APK...

签名菜单栏选择

2)创建密钥库及密钥,点击“Create new...”按钮创建密钥库

创建密钥库

这里注意一下信息项需填写哪些信息:

Key store path:密钥库文件的地址
Password/Confirm:密钥库的密码
Alias:密钥名称
Password/Confirm:密钥密码
Validity(years):密钥有效时间,一般默认25年
First and Last Name:密钥颁发者姓名
Organizational Unit:密钥颁发组织
City or Locality:城市
Country Code(XX):国家代码

4)点击Finish完成之后,到下一界面

密码输入页面

5)点击Next按钮,并选择所有渠道或指定渠道,点击Finsh按钮,进行签名打包工作任务

选择build type和flavors

等待所有渠道包签名打包完成后就可以发布到各大应用市场了的。

签名的方式还有另外一种哦,具体的操作是

在build.gradle文件中添加签名配置信息以及buildTypes配置信息如下:

 //签名配置
    signingConfigs {
        debug {
            keyAlias 'kits'
            keyPassword '888888'
            storeFile file("kitskeystore.jks")
            storePassword '888888'
        }
        release {
            //key别名
            keyAlias 'kits'
            //key密码
            keyPassword '888888'
            //密钥文件路径
            storeFile file("kitskeystore.jks")
            //密钥文件密码
            storePassword '888888'
        }
    }

  buildTypes {
        debug {
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            // apk包名称后缀,用来区分release和debug
            versionNameSuffix "-debug"
            signingConfig signingConfigs.debug
        }
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //开启混淆
            minifyEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

注意,这里笔者把debug版本和release都设置同样的配置信息,在平常的开发过程中debug配置,可以使用android studio默认的配置信息即可。配置完成后,在Terminal命令提示符中,输入命令gradlew assembleRelease就可以了的。

打包结果

在打包apk文件时,还可以对文件的名称进行修改,比如加入时间信息或者svn版本到apk文件名称中,方便查找apk等。下面将把打包的时间添加到apk名称中,具体代码如下:

  applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为dt_android360_v1.0_0705114322.apk
                        def fileName = "dt_${variant.productFlavors[0].name}_v${defaultConfig.versionName}_${new Date().format("MMddhhmmss")}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }

最后奉上完整版的build.gradle文件的全部内容,同时文件也加入了注释,方便读者阅读

apply plugin: 'com.android.application'

android {
    //编译SDK的版本
    compileSdkVersion 23
    //编译的tools版本
    buildToolsVersion "23.0.3"

    defaultConfig {
        //当前应用包名
        applicationId "com.chenyk.androidkits"
        //支持的最低版本
        minSdkVersion 9
        //支持的目标版本
        targetSdkVersion 22
        //版本号
        versionCode 1
        //版本名
        versionName "1.0"
        // dex突破65535的限制
        multiDexEnabled true
    }
    //执行lint检查,有任何的错误或者警告提示,都会终止构建,现将其关掉。
    lintOptions {
        abortOnError false
    }

    //签名配置
    signingConfigs {
        debug {
            keyAlias 'kits'
            keyPassword '888888'
            storeFile file("kitskeystore.jks")
            storePassword '888888'
        }
        release {
            //key别名
            keyAlias 'kits'
            //key密码
            keyPassword '888888'
            //密钥文件路径
            storeFile file("kitskeystore.jks")
            //密钥文件密码
            storePassword '888888'
        }
    }

    buildTypes {
        debug {
            // 显示Log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            // apk包名称后缀,用来区分release和debug
            versionNameSuffix "-debug"
            minifyEnabled false
            zipAlignEnabled false
            shrinkResources false
            signingConfig signingConfigs.debug
        }
        release {
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            //开启混淆
            minifyEnabled true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true
            //前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,指定混淆规则文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            //修改输出文件的名称
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为dt_android360_v1.0_0705114322.apk
                        def fileName = "dt_${variant.productFlavors[0].name}_v${defaultConfig.versionName}_${new Date().format("MMddhhmmss")}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
    }
    //渠道Flavors,配置不同风格的app
    productFlavors {
        googleplay {}
        huawei {}
        xiaomi {}
        wandoujia {}
        baidu {}
        yingyongbao {}
        android360 {}
        uc {}
        umeng {}
        meizu{}
        //批量配置
        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.2.0'
    compile project(':jpushkit')
    compile project(':commkit')
    compile project(':asynchttpkit')
    compile project(':jskit')
    compile project(':appkit')
    compile project(':photokit')
    compile project(':retrofitkit')
    compile project(':zxingkit')
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值