首页 > 代码库 > 多渠道打包

多渠道打包

【友盟打包】

第1步:
public class MApplication extends Application{
private static String channel;
@Override
public void onCreate() {
super.onCreate();
channel=initChannel();
}

/**
* 初始化渠道信息
*/
private String initChannel() {
try {
PackageManager pm = getPackageManager();
ApplicationInfo info = pm.getApplicationInfo(getPackageName(),
PackageManager.GET_META_DATA);
return info.metaData.getString("UMENG_CHANNEL");

} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return "";
}
}


第2步:
<application
<meta-data android:name="UMENG_CHANNEL" android:value="http://www.mamicode.com/${UMENG_CHANNEL_VALUE}"/>;
</application>

第3步:build.gradle
android {
/*------------------------------------------------------------------------------*/
productFlavors {
wandoujia {
//manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
applicationId "cn.andoop.apkpacktest"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
xiaomi {
//manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith(‘.apk‘)) {
def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
/*------------------------------------------------------------------------------*/
}

第4步:build——>generate......

缺点

这样的打包方式效率比较低下,如果是几十个包还可以应付,打一个包快的话需要十几秒,慢的话需要几分钟不等,跟机器性能很有关系

效率高的打包方法可以用美团多渠道打包和360多渠道打包,但是渠道信息也是很容易修改,虽然可以加密,只是提高了修改的门槛

多渠道打包