關於Android studio Gradle 實現多渠道打包
最近專案用到了友盟的渠道,正常情況下在AndroidManifest.xml做以下修改:
android:name="UMENG_CHANNEL"
android:value="YINGYONGBAO"/>
渠道少的話可以直接修改value值直接打包即可,由於Android市場眾多,每次版本更新都需要多次打包,所以研究了下使用studio gradle 多渠道打包,首先得把value改成:
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"/>
其中value的值${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定義配置的值
build.gradle檔案就利用productFlavors這樣寫:
productFlavors {
default_channel{}
YingYongBao{}
JinLi{}
HuaWei{}
WanDouJia{}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE:name ]
}
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
defoutputFile = output.outputFile
if(outputFile !=null&& outputFile.name.endsWith('.apk')) {
File outputDirectory =newFile(outputFile.parent);
deffileName
if(variant.buildType.name =="release") {
fileName="app_v${defaultConfig.versionName}_${packageTime()}_${variant.productFlavors[0].name}.apk"
}else{
fileName = "app_v${defaultConfig.versionName}_${packageTime()}_beta.apk"
}
output.outputFile =newFile(outputDirectory, fileName)}}}
其中name的值對相對應各個productFlavors的選項值;fileName對應的是打包好的名字,我是這樣寫的:
fileName="jihe_${variant.productFlavors[0].name}.apk"
build.gradle檔案中defaultConfig還需要這樣寫:
defaultConfig {
applicationId"***************"
minSdkVersion15
targetSdkVersion23
versionCode5
versionName"1.1"
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"default_channel"]
}
這樣就可以多渠道打包了,如下:
![3809438-08f316eb44c587df.png](https://i.iter01.com/images/05d981de6388e6e1e1f9f9a3abab5dd635b573a2593e45b7bfe8b6698740e54e.png)
你就可以選擇一次打一個包或者多個包了。
由於中間使用了jdk1.8的Lambda表示式,所以還須配置下:
下載安裝jdk8,配置JAVA8_HOME到環境變數中,配置%JAVA8_HOME%\bin到PATH
配置JDK Location,File->Project Structure->SDK Location:
![3809438-7c0a15ae5b1d9ca1.png](https://i.iter01.com/images/7a9cb56cd3ebee56089e4cace9fb2b015f5ec0e14d6f2db63c0c73d888c74e76.png)
然後在build.gradle檔案中這樣配置:
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath'com.android.tools.build:gradle:2.1.0'
classpath'me.tatarka:gradle-retrolambda:3.2.5'
}
}
applyplugin:'com.android.application'
applyplugin:'me.tatarka.retrolambda'
然後在build.gradle檔案中android中這樣寫:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
至此Java jdk1.8的Lambda表示式 就可以使用了,友盟的多渠道打包也就不會報錯直接使用了。
相關文章
- Android 詳解Gradle(3.1.4)實現多渠道打包AndroidGradle
- android gradle 多渠道打包小結AndroidGradle
- Android持續整合:Jenkins+Gradle+360加固+多渠道打包AndroidJenkinsGradle
- Android多渠道打包相關介紹Android
- Android多渠道打包Android
- Android 多渠道打包配置Android
- Gradle多渠道打包的原理、實踐與輔助開發Gradle
- Walle —— Android多渠道打包神器Android
- Android Studio gradle外掛版本和gradle版本對應關係AndroidGradle
- Android美團多渠道打包Walle整合Android
- Android 多渠道打包開發記錄Android
- Flutter 多渠道打包實踐Flutter
- Android Studio使用離線GradleAndroidGradle
- Android Gradle指令碼解決美團多渠道打包再加固渠道資訊丟失問題AndroidGradle指令碼
- 多渠道打包
- Android Studio Gradle 常用配置詳解AndroidGradle
- android studio4.0初次gradle配置AndroidGradle
- Android Studio之Gradle和Gradle外掛的區別AndroidGradle
- Android Studio NDK:三、打包SOAndroid
- Android Studio打包專案:APKAndroidAPK
- Android進階之Walle多渠道打包&Tinker熱修復Android
- Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系統JenkinsGitAndroid
- Android Studio打包apk,aar,jar包AndroidAPKJAR
- Android Studio 一行命令實現打包併發布到fir.imAndroid
- Android Studio NDK :一、基礎入門(基於gradle-experimental外掛)AndroidGradle
- 關於Android Studio使用Git的總結AndroidGit
- Android Studio下載Gradle超時解決方案AndroidGradle
- Android Gradle基於引數化配置實現差異化構建AndroidGradle
- 【Android Studio】解決升級 macOS High Sierra 後 Android Studio 同步專案時 gradle 構AndroidMacGradle
- Android Studio 呼叫Camera實現拍照功能Android
- Android 多渠道配置Android
- Android Gradle(一)為什麼現在要用Gradle?AndroidGradle
- 解決Android Studio每次匯入專案都會下載Gradle和Android Gradle plugin的問題AndroidGradlePlugin
- Android studio maven配置 gradle下載慢問題解決AndroidMavenGradle
- 純小白uni-app+Android Studio離線打包APPAndroid
- 關於 Android studio 在xml中不提示的問題AndroidXML
- android studio 重新關聯svnAndroid
- android studio匯入專案--解決gradle-headache問題AndroidGradle
- Gradle自動實現Android元件化模組構建GradleAndroid元件化