一、简介:

Android的App开发好了,要上线不同的平台,那么需要打一个个的渠道包。如果一个一个打包,那是很麻烦且淡腾。比如我们之前的一个App,上线8个平台,91、anzhi、appchina、baidu、chinapnr、gfan、hiapk和tencent。所以我们考虑到使用批量打渠道包工具。

二、方法:

使用第三方插件打包,简单、快捷且速度。

第三方插件

大家可以看看他的帮助文档和插件的下载。

二、配置文件:

1.在bom.xml 文件中的配置

<?xml version="1.0" encoding="UTF-8"?><project>    <dependencies>        <dependency>            <groupId>com.marsor.android.common            groupId>            <artifactId>MarsorUtils            artifactId>            <version>1.0.0-SNAPSHOT            version>        dependency>    dependencies>    <repositories>        <repository>            <id>MarsorRepository            id>            <name>Marsor Maven Mirror            name>            <url>http://maven.marsorstudio.cn:8088/            url>        repository>    repositories>    <package>                <channels keyname="channel" >                        <channel value="91" />            <channel value="anzhi" />            <channel value="appchina" />            <channel value="baidu" />            <channel value="chinapnr" />            <channel value="gfan" />            <channel value="hiapk" />            <channel value="tencent" />        channels>        <keystore            passwd="chinapnr"            path="E:\key\chinapnr_b2a.key" >            <alias                name="android.key"                passwd="chinapnr" />        keystore>        <outpath value="E:\key_output\" />    package>project>

注意:

1 需要指定渠道号的value和所有所有渠道
2 需要指定我的签名文件路径以及输出工程路径

2.在AndroidManifest.xml 文件中的配置

主要是在这里配置application中添加meta-data:注意name( android:name=”channel”) 要和bom.xml中指定的渠道号key保持一致(channels keyname=”channel”)。

    "true"        android:icon="@drawable/app_icon"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        "channel"            android:value="chinapnr" />

3.从代码中读取渠道号

由于我们在访问接口会使用到渠道号,那么需要在代码中从AndroidManifest.xml 动态的获取渠道号,也就是说要获取meta-data的值。下面贴出来方法:

/** *  * @author kevin.li * @date 20150620 * @function 获取metaData数据 * @version 1.2.0 */public class MetaInfoUtils {    private static final String key = "channel";    /**     * 在application应用元素。     *      * @param context     * @param key     * @return     */    public static String getApplicationMetaInfo(Context context) {        ApplicationInfo appInfo = null;        String channel = "";        try {            appInfo = context.getPackageManager().getApplicationInfo(                    context.getPackageName(), PackageManager.GET_META_DATA);            channel = appInfo.metaData.getString(key);        } catch (NameNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        if (TextUtils.isEmpty(channel)) { // 避免有91 这样的情况   因为meta-data中值不确定            channel = appInfo.metaData.getInt(key) + "";        }        return channel;    }}

四、总结:

第三方插件打包很方便,但是也有缺陷,比如不能批量的修改包名。当然还有其他打包方式比如Ant或者gradle,感兴趣的小伙伴也可以试试。

更多相关文章

  1. Android之genymotion模拟器安装于配置
  2. Android碎片机制
  3. Android(安卓)为不同的语言和硬件创建资源
  4. 见证Android消息推送时刻(源码及详解)
  5. Android应用程序之数据存储(一)
  6. [置顶] 开发第一个Android设备驱动程序
  7. Android(安卓)使用DexClassLoader来运行其他apk中的方法
  8. Android(安卓)Rom分区 与 SD卡读写
  9. 解决Android(安卓)Studio 新建导入项目时死掉

随机推荐

  1. Android(安卓)获取设备各种信息以及其它
  2. android 编译各cpu芯片的so库
  3. Android(安卓)根据坐标获取地址
  4. Android网络连接处理
  5. Android(安卓)资源
  6. Android简单图片浏览器
  7. android自定义dialog
  8. android简单的日期时间选择器
  9. Nexus6-Android7.1.1 卡刷root
  10. Android(安卓)get property的一种方法