Android Studio多渠道打包

本文主要介绍Android Studio多渠道打包,这方面as非常强大,再也不用使用传统的ant进行构建了

gradle中配置Flavors

1
2
3
4
5
6
7
8
9
10
11
12
13

productFlavors {
google {
manifestPlaceholders(["CATEGORY": "_360"])
}
baidu {
manifestPlaceholders(["CATEGORY": "baidu"])
}
qq {
manifestPlaceholders(["CATEGORY": "qq"])
}

}

这样一个个配有木有感觉很累,反正我不习惯,因此还有简单方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

productFlavors {
google {
}
baidu{
}
qq {
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [CATEGORY: name]
}

}


AndroidManifest.xml中配置变量

1
<meta-data android:name="category" android:value="${CATEGORY}"></meta-data>

一般这个category和友盟的渠道合并,下面是综合写法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 //AndroidManifest.xml
<meta-data
android:name="UMENG_APPKEY"
android:value="xxx"></meta-data>
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"></meta-data>

//gradle
productFlavors {
google {
}
baidu{
}
qq {
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}

}

代码中获得不同渠道信息

1
2
3
4
5
6
7
8
9
10
public void getCategory(){
try {
ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
String catetory = applicationInfo.metaData.getString("category");
System.out.println(catetory);

} catch (Exception e) {
e.printStackTrace();
}
}

签名打包

pic

当然也可以直接使用命令行打包
gradle clean asembleRelease