在項目開發的時候一般需要測試環境的安裝包和正式環境的安裝包。需要配置測試機地址和正式機地址。假如有不同的API,就會有更多的url地址需要配置。挨個手動打包就會非常麻煩,那就需要用到多渠道打包了。
就我自己了解在Android Studio之前可以通過Ant實現多渠道打包,過程要稍微復雜一點,但是可以實現的功能要更多一點。Android Studio的gradle多渠道打包更加便捷。下面就講解Android Studio的多渠道打包
谷歌官方文檔的配置:https://developer.android.com/studio/build/build-variants.html
1.在build.grade中構建不同的版本:
android{
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix ".debug"
}
app1 {
applicationIdSuffix ".app1"
}
}
}
applicationIdSuffix:字段表示,在不改變你默認的程序ID(包名)的情況下,為其添加后綴。比如你的包名是com.cn.app
,但你想區分測試包和正式包的情況,這個時候將applicationIdSuffix設置為.debug,那么你的應用程序對應的包名就變成了com.cn.app.debug。
2.設置多渠道打包 productFlavors: 同樣在build.gradle文件中添加
productFlavors {
app1{
//這里可以配置不同的包名
applicationId="com.cn"
applicationIdSuffix ".app1"
//這里是在 applicationId 中添加了一個后綴
manifestPlaceholders = [app_icon : "@mipmap/login_logo",
app_name : "app1"]
}
app2{
applicationId="com.ca"
applicationIdSuffix ".app2"
//這里是在 applicationId 中添加了一個后綴
manifestPlaceholders = [app_icon : "@mipmap/login_logo",
app_name : "app2"]
}
}
3:在src下面(與mian文件同目錄)創建對應版本的文件夾:
需要更換Logo和應用名稱在下面文件中添加
更換應用名稱: 在value文件夾下的 appname.xml中設置
<resources>
<string name="app_name">app1</string>
</resources>
至此就可以一次性打出兩個安裝包,應用的名稱logo與Id都已經更換。
4.如果需要更換應用的請求地址,在每個版本的文件夾現在新建一個java類,比如圖中我在java目錄下新建Constant.java
public class Contant {
public static String url = "www.baidu.com";
}
在其他代碼中調用這個url就可以實現不同的服務器地址了。
Android Studio的多渠道打包還可以實現更多功能,后續會繼續添加。不過現在的需求都已經滿足了。
5.更換輸出的文件名稱。
android{
// 輸出文件配置
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def dirName = outputFile.parent // 輸出文件夾所在的位置
// 文件名修改
def fileName = "app-${output.processResources.variantName}-${defaultConfig.versionName}-${variant.flavorName}.apk"
// 比如不想這么麻煩,直接在后面加上版本號也行:
// def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
output.outputFile = new File(dirName, fileName)
}
}
}
}