Gradle多渠道打包
效果图
1,Manifest定义个性化标签
这里以CHANNEL为例
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="CHANNEL"
android:value="${CHANNEL_VALUE}" />
</application>
2,Gradle代码
productFlavors {
HuaWei {}
GooglePlay {}
XiaoMi {}
Baidu {}
AnZhi {}
Tencent {}
Sougou {}
productFlavors.all { flavor ->
//manifest的占位符赋值
flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
}
}
3,构建
有两种方式去选择
- 直接Terminal输入gradle assemble
assemble代表构建所有版本如果只想构建release则输入gradle assembleRelease
- Gradle操作栏下的Build,选择需要构建的版本
到这里多渠道打包就算完成了,如果对于打出来的apk名字不太满意,可以通过以下方法修改
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
def outDir = null
if (outDir == null) {
outDir = outputFile.parent
}
if (outputFile != null && outputFile.name.endsWith('.apk')) {
//这里修改apk文件名 如Sample-GooglePlay-Release-0.0.1.apk
def fileName = "Sample-${variant.flavorName}-${variant.buildType.name}-${defaultConfig.versionName}.apk"
output.outputFile = new File(outDir, fileName)
}
}
}
构建结束之后的效果图