使用Android Studio给多渠道打包

在应用发布的时候,可能面临多种渠道发布的问题,为了对不同渠道做统计,需要在应用中表明渠道,要是一个一个去改效率很低。Android Studio为我们提供了简便的方法。

使用Android Studio为不同渠道打包

可视化方法

通过快捷键Command+;,或者通过File->Project Structure的方法打开Project Structure对话框,然后选择上面的Flavors标签,在里面添加渠道就可以了。见图:


例如我在这里添加了百度,华为,联想,小米,还有一个是默认的,我们还看到还可以为不同的渠道设置不同的信息,这里我们就先空着。然后点击OK。我们会在build.gradleandroid里面自动生成了如下代码:

productFlavors {
    baidu {}
    xiaomi {}
    huawei {}
    lenovo {}
}

然后再在打开AndroidManifast.xml,在其中的application中添加一个meta-data,这里使用友盟统计为例,代码如下:

<meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL_VALUE}"/>

之后回到build.gradle文件,在android中添加如下代码:

productFlavors.all { flavor ->
    flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
}

然后打开右侧的gradle控制栏,可以看到多出了以下几项。

其中assembleBaidu就是对百度渠道打包,其他渠道一样。双击其中一个,就是对一个渠道单独打包。

为了验证确实替换了我们设置的meta-data的值,我创建了一个Activity来展示结果,布局代码省略,Activity代码如下。

public class ChannelActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_channel);
        ApplicationInfo info= null;
        TextView textView = (TextView) findViewById(R.id.tv_channel);
        try {
            info = this.getPackageManager()
                    .getApplicationInfo(getPackageName(),
                            PackageManager.GET_META_DATA);
            String msg =info.metaData.getString("UMENG_CHANNEL");
            textView.setText(msg);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }
}

现在双击assembleXiaomi,为小米渠道打包;

打包成功之后,在工程目录的app/build/outputs/apk文件夹下可以安装包,安装程序之后。

验证确实成功了。

说明一下assemble是打所有的包,各个渠道的,debug和release包,如果只打release包就选择assembleRelease。正常开发过程中,调试点击运行是打的productFlavors列表的第一个渠道的包。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容