最近一直用android studio 进行开发,在开发和发版的时候,都遇到一个多渠道打包的问题,一般用渠道的统计无非是用友盟或者其它之类的,今天就以友盟的为例吧,给大家做一个详细的介绍,有什么疑问还请大家积极指出。
- 在gradle里添加依赖,compile ‘com.umeng.analytics:analytics:latest.integration’
- 将Keystore签名文件放入项目根目录下
- 在 AndroidManifest.xml中修改渠道信息:
/**首先你必须在AndroidManifest.xml中的meta-data修改以下的样子:*/
<application
android :name= ".common.AppContext"
android :allowBackup= "true"
android :icon= "@drawable/ic_launcher"
android :label= "@string/app_name"
android :theme= "@style/AppTheme">
<meta-data
android :name= "UMENG_CHANNEL"
android :value= "${UMENG_CHANNEL_VALUE}" />
.
.
.
>
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。
/**build.gradle文件就利用productFlavors这样写:*/
productFlavors { (位于android {}内,与buildTypes并列)
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
}
其中[UMENG_CHANNEL_VALUE: "wandoujia"]就是对应${UMENG_CHANNEL_VALUE}的值。
后来发现上面的重复代码太多,就在网上又发现了一个更简洁的写法
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
其中name的值对相对应各个productFlavors的选项值,这样就达到自动替换渠道值的目的了。
4.一次生成所有渠道包
/**在build.gradle文件中添加签名文件信息*/
signingConfigs { //(位于android {}内,与buildTypes并列)
release {
keyAlias 'xxx'
keyPassword '******'
storeFile file( 'keystore/release.jks')
storePassword '******'
}
debug {
keyAlias 'debug'
keyPassword '******'
storeFile file( 'keystore/debug.jks')
storePassword '******'
}
}
终于最后一步到啦,大功就要告成啦~ 在android studio底栏中有个命令行工具Terminal,打开后就会进入到CMD,自动切换到当前项目的目录下。
有的项目下会有graldew.bat这个文件,你就可以直接输入这个命令,通过命令行打包apk:
gradlew assembleRelease
这样就可以一次性生成所有的渠道包了,耐心等待就行了。
但是如果只是想生成单个渠道的包呢?
简单,通过 Build->Generate Signed APK…普通方式打包
然后填写好签名密码之类的,然后可以看到这个:![]()
在Flavors那一栏选择你想选的渠道,然后就finish,就ok啦。当然也可以全选,只要按住Ctrl键全部选上就行啦。之后你就会在你指定的apk包目录下看到签完名的apk们,如图:是不是非常简单~多渠道打包原来就是这么easy,非常快捷,今天就写到这里,以后Android studio有相应的tips会继续分享给大家的,请关注我哦。