本文主要介绍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(); } }
|
签名打包

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