您的位置:首页 > 移动开发 > Android开发

Android批量打不同的渠道包方法-使用第三方插件

2015-09-18 15:46 561 查看

一、简介:

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

二、方法:

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

第三方插件

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

二、配置文件:

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

[code]<?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>

        <!-- 不区分大小写,逗号隔开的metaName,代表不同SDK的渠道标识符 -->

        <channels keyname="channel" >

            <!-- channel的数量代表最终生成的apk文件的数量 -->

            <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”)。

[code]    <application
        android:allowBackup="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="channel"
            android:value="chinapnr" />


3.从代码中读取渠道号

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

[code]/**
 * 
 * @author kevin.li
 * @date 20150620
 * @function 获取metaData数据
 * @version 1.2.0
 */
public class MetaInfoUtils {

    private static final String key = "channel";

    /**
     * 在application应用<meta-data>元素。
     * 
     * @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,感兴趣的小伙伴也可以试试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: