1. 程式人生 > >手把手教你AndroidStudio多渠道打包

手把手教你AndroidStudio多渠道打包

根據博主做出修改:在Android studio 3.0 版本一會我們會 報錯下面就好好說說我們是怎麼解決的

說到多渠道,這裡不得不提一下友盟統計,友盟統計是大家日常開發中常用的渠道統計工具,而我們的打包方法就是基於友盟統計實施的。按照友盟官方文件說明,渠道資訊通常需要在AndroidManifest.xml中配置如下值:

(一)在AndroidManifest.xml裡設定動態渠道變數 在application中

<meta-data
            android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}" />

(二)在build.gradle設定productFlavors

android {
        productFlavors {
            kuan {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "kuan"]
            }
            xiaomi {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
            }
            qh360 {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]
            }
            baidu {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
            }
            wandoujia {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
            }
        }
    }
亦或者是 用法都是一樣的
 android {
        productFlavors {
            kuan {}
            xiaomi {}
            qh360 {}
            baidu {}
            wandoujia {}
        }

        productFlavors.all {
            flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }
    }

(三)執行打包操作

1.在AndroidStudio選單欄點選Build選單–>Generate signed APK–>選擇key,並輸入密碼 2.然後下一步,選擇打包渠道此時這裡的APK包名顯示為unsigned,也就是說未簽名,我們可以繼續在build.gradle檔案中配置簽名信息
signingConfigs {
        release{
            storeFile file("../wooyun_keystore") //簽名檔案路徑
            storePassword "123456"
            keyAlias "123456"
            keyPassword "123456"  //簽名密碼
        }
    }
注意了!錯誤的解決 我們的程式報錯Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensi
個問題是Android studio升級到3.0之後,執行的時候會提示gradle要升級到3.5版本才能編譯。於是我把我的gradle升級到了
 gradle-4.1-milestone-1 版本,是2017年7月份最新版本了。外掛3.0.0包含一個新的依賴機制,它在使用庫時自動匹配變數。這意味著應用程式的除錯變體會自動地消耗一個庫的除錯變數,等等。它也可以在使用類黃的時候起作用——一個應用程式的redDebug變體將消耗一個庫的redDebug變體。為了完成這項工作,外掛現在要求所有的味道都屬於一個命名的味道維度,即使你只打算使用一個維度。否則,您將得到以下構建錯誤:解決辦法在我們的在build.gradle設定中 寫 flavordimensions "這裡就是我們指定的"
 flavorDimensions "UMENG_CHANNEL_VALUE"


大致是說,Plugin 3.0.0之後有一種自動匹配消耗庫的機制,便於debug variant 自動消耗一個庫,然後就是必須要所有的flavor 都屬於同一個維度。為了避免flavor 不同產生誤差的問題,應該在所有的庫模組都使用同一個foo尺寸。= 。=還是懵逼。說一堆依然不是很理解。但是我們從中已經知道解決方案了:在主app的build.gradle裡面的 defaultConfig { targetSdkVersion:***
minSdkVersion :***versionCode:***
 versionName :***//版本名後面新增一句話,意思就是flavor dimension 它的維度就是該版本號,這樣維度就是都是統一的了flavorDimensions "versionCode"
}