android应用上传时,需要区分开每个渠道。一般都会在配置文件中更改一个渠道id,如果有多个渠道,手动修改并生成apk的话会非常麻烦,而且增大出错概率。
在这分享一个打包工具类。网上也有类似的,我是在它的基础上做的优化,特别是打包so文件,一句小小的命令废了好大劲。
我们项目中使用的umeng做统计分析工具, umeng在分渠道打包的时候需要修改manifest.xml中的
<meta-data android:name="UMENG_CHANNEL" android:value="@string/channel_name" /> value值。
该值放到了strings.xml中<string name="channel_name">app_channel</string>,所以在编译的时候只需修改app_channel。
下面是工具类,直接运行即可.
package com.yang.main;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* @description: android渠道打包工具类,确保路径填写无误,渠道名称填入channels中
* @author: hytfly@gamil.com
* @time: 2012-10-23下午5:17:47
*/
public class CompiledApkUpdate {
private static final String androidSDK_PATH = "D:\\android\\android-sdk-windows\\"; //android SDK路径
public static final String APK_NAME = "duitang.apk";
public static final String PROJECT_LIBARY = "";
public static final String PROJECT_PATH = "D:\\android\\workspace\\tmp\\duitang\\"; //要打包的工程路径
public static final String APK_PATH = "D:\\android\\workspace\\tmp\\apk\\duitang_"; //打包后存放apk的路径 duitang_是前缀
private static final String apk_PATH_keystore = "D:\\android\\keystore\\bb"; //apk签名文件路径
private static final String channelFlag = "app_channel";
// public static String[] channels = {"duitang"};
private static String currentChannelName = "";
public static String[] channels = {"duitang","91","360","QQ","jifeng","anzhuo","anzhi","youyi","appchina","wangyi","baidu","souhu","3g","nduo","xiaomi","huawei","meizu","lianxiang","aliyun","taobao","google