Build Variants 構建多配置定製版本

構建變種版本的目的就是允許爲同一個應用創建不同的版本。

例如:同一個應用做不同的版本:收費版本和免費版本,用戶版本和管理者版本等。

因爲朋友的一個項目要打包多個馬甲包,一起學習了這個Build Variants,感覺很有用,把自己學習的經歷分享出來。

1.首先,需要在src文件夾下新建多個你要製作的馬甲包的資源文件,並且在gradle文件中與productFlavor的命名一致。

需要注意的是:馬甲包的資源文件的命名要一致。


2.在build. gradle中添加配置代碼。

android {
    productFlavors {
        debugTest {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "platform", APP_NAME: "631的小仙女"]
            buildConfigField "String", "APP_NAME", "\"631的小仙女\""
            buildConfigField "String", "URL_ROOT", "\"http://www.51shebaotong.com/\""
            applicationId "com.jingyudai.shebaodai"
            versionName "1.0"
        }
        chenxiaojuan {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "platform", APP_NAME: "陳小娟"]
            buildConfigField "String", "APP_NAME", "\"陳小娟\""
            buildConfigField "String", "URL_ROOT", "\"http://www.51shebaotong.com/\""
            applicationId "com.jingyudai.laiqianshengqi"
            versionName "1.0"
        }
        dengyalan {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "platform", APP_NAME: "鄧亞蘭"]
            buildConfigField "String", "APP_NAME", "\"鄧亞蘭\""
            buildConfigField "String", "URL_ROOT", "\"http://www.baidu.com/\""
            applicationId "com.jingyudai.shebaodai"
            versionName "1.0"
        }
        dengsha {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360", APP_NAME: "鄧莎"]
            buildConfigField "String", "APP_NAME", "\"鄧莎\""
                buildConfigField "String", "URL_ROOT", "\"http://www.sina.com/\""
            applicationId "com.jingyudai.shebaodai"
            versionName "1.0"
        }
        liujinxin {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "oppo", APP_NAME: "劉金鑫"]
            buildConfigField "String", "APP_NAME", "\"劉金鑫\""
            buildConfigField "String", "URL_ROOT", "\"http://www.zhihu.com/\""
            applicationId "com.jingyudai.shebaodai"
            versionName "1.0"
        }
    }
}

3.編譯之後會產生一個buildConfig文件,可以在代碼中直接通過buildConfig調用flavor裏面的內容。例如:

//根據馬甲配置文件得到配置文件的相關信息 BuildConfiggradle編譯完成後自動創建的
appName.setText(BuildConfig.APP_NAME + BuildConfig.URL_ROOT);

還可以通過${APP_NAME}來訪問配置文件的內容,例如:

<application
    android:name=".base.MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_logo"
    android:label="${APP_NAME}"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    <activity
        android:name=".ui.other.SplashActivity"
        android:screenOrientation="portrait"
        android:theme="@style/StartAppTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

4.除了在build.gradle文件添加flavor之外,如果你的馬甲包需要有更多種配置又不想讓build.gradle文件內容很多,你可以將productFlavor單獨新建一個gradle文件配置讀取。(config.gradle文件內容參照第2條內容代碼),然後在build.gradle中添加引入就行了:

apply from: 'config.gradle'

5.然後就可以調試或者打包測試。

調試選擇:點擊下拉選擇你所需要調試的馬甲包。


打包選擇:


就這樣簡單,一個項目就能打包出多種主題風格的apk了,不用再因爲同一個項目要打包成多個app而去重複新建工程了。這裏我主要是按照我個人的思路來寫的,偏重實際操作,不喜勿噴。

demo下載鏈接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章