Android——使用gradle进行多渠道自动打包
2016-08-26 15:23
537 查看
前言
在我的另一篇文章中介绍了如何使用Python进行多渠道打包,下面再把传统的gradle多渠道打包方式介绍一下,同样是以友盟SDK为例。点击此处传送门Python快速打包技术
打包前配置
配置gradle
//主要是配置android{}封包下的内容 android { 。 。 。 signingConfigs { //配置签名文件,可以有多个 icekey { keyAlias 'icekey' keyPassword '填入key的密码' storeFile file('/Users/****/key/icekey.jks') //key所在文件夹 storePassword '填入store的密码' } } buildTypes { //配置构建版本,可以有多个 //测试版本 debug { debuggable true zipAlignEnabled false shrinkResources false signingConfig signingConfigs.icekey minifyEnabled false } //发布版本 release { debuggable false //是否开启测试 zipAlignEnabled true //是否启用zipAlign压缩优化 shrinkResources true //是否删除未被使用的资源文件 minifyEnabled false //是否开启混淆 signingConfig signingConfigs.icekey //签名文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //指定混淆文件 } //空版本 source { debuggable true //是否开启测试 zipAlignEnabled true //是否启用zipAlign压缩优化 shrinkResources true //是否删除未被使用的资源文件 minifyEnabled false //是否开启混淆 signingConfig signingConfigs.icekey //签名文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //指定混淆文件 } } //创建渠道名称,main{}是一个不合法名称 productFlavors { baidu {} huawei {} xiaomi {} } // 这里体现在AndroidManifest中的 // <meta-data // android:name="UMENG_CHANNEL" // android:value="${UMENG_CHANNEL_VALUE}"/> //运行自动赋值给AndroidManifest.xml中的${UMENG_CHANNEL_VALUE} productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } lintOptions { //配置打包线程的操作 ignoreWarnings true //忽略警告 checkReleaseBuilds false //是否检查release版本 abortOnError false //出现错误是否终止 } applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith(".apk")) { //判断是否是apk //这个函数生成了apk的名称 def apkName = "ice-${variant.productFlavors[0].name}-${defaultConfig.versionName}.apk" output.outputFile = new File(outputFile.parent, apkName) //输出文件 } } } 。 。 。 }
配置AndroidManifest.xml
在Application标签下添加:<!--友盟的key--> <meta-data android:name="UMENG_APPKEY" android:value="57bf375ee0f5*******018a3"/> <!--友盟渠道号--> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/> //这样写就能够读取gradle中的[UMENG_CHANNEL_VALUE: name]的name的值了。
开始自动打包
在Android Studio的的终端机中输入./gradlew assembleRelease //打包所有渠道的Release版包 ./gradlew assembleSource //打包所有渠道的Source版包
相关文章推荐
- Gradle 进行 Android 多渠道多包名换图片全自动打包
- Android Studio使用Gradle多渠道自动打包
- Android使用Ant进行apk多渠道打包
- 使用eclipse和gradle对Android应用进行批量打包
- [置顶] Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android使用Gradle进行打包混淆,包括依赖Library
- [置顶] Android 多渠道打包:使用Gradle和Android Studio
- Android Studio使用教程(六):Gradle多渠道打包
- 使用gradle进行多渠道打包
- Android中使用友盟时用Ant进行多渠道打包及相关问题
- as通过gradle实现多渠道打包+使用配置文件进行版本管理+指定apk输出路径和apk文件名
- Android 使用 Gradle 多渠道打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
- 【转】Android 多渠道打包:使用Gradle和Android Studio
- 使用AndroidMultiChannelBuildTool进行多渠道批量打包
- Android Studio使用Gradle进行多渠道打包
- Android 使用 Gradle 多渠道打包
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包