美文网首页安卓开发相关Android开发经验谈Android开发
Android Studio多渠道打包,比你想的还简单详细

Android Studio多渠道打包,比你想的还简单详细

作者: 049032247b6b | 来源:发表于2019-07-14 22:16 被阅读20次
    • 需求1:当android app需要上架多个平台时,需要记录平台渠道,用于数据统计。(曾经公司有12个渠道,一个个打包绝对把你累坏。配置好后,一键生成,你只需要傻傻等着。和UI小姐姐聊聊天)
    • 需求2:同理当你有很多测试环境,当然可以通过这种方式

    接下来进入主题,让你享受非一般的感觉;这个方式针对as 3.0以上,如果有人还在用3.0以下的as,打包方式不同,欢迎留言!

    步骤 1:

    首先,来到你的AndroidMainfest.xml文件下

    "><meta-data
        android:name="ATMAN_CHANNEL"
        android:value="${ATMAN_CHANNEL_VALUE}" />
    

    这里的ATMAN_CHANNEL 和ATMAN_CHANNEL_VALUE 都是自己自己自定义的。用于在代码里获取你需要的那些渠道号。

    步骤 2:

    其次来到你的App下build.gradle的android根标签下加上你要的渠道号;这里我就打开了2个渠道:brain,uc;按你自己的需要,我这里是展示

    ">flavorDimensions "mark" //相当于一个标记
        productFlavors {
            brain { dimension "mark" }
            uc { dimension "mark" }
    //        yingyongbao { dimension "mark" }
    //        xiaomi { dimension "mark" }
    //        "360m" { dimension "mark" }
    //        oppo { dimension "mark" }
    //
    //        huawei { dimension "mark" }
    //        meizu { dimension "mark" }
    //        vivo { dimension "mark" }
    //        sougou { dimension "mark" }
    //        lianxiang { dimension "mark" }
    //        zongbao { dimension "mark" }
    
        }
    
        productFlavors.all {
            flavor -> flavor.manifestPlaceholders = [ATMAN_CHANNEL_VALUE: name]
        }
    

    好了你已经完成了所有配置,你敢信。

    接下来就是打包了,为了apk包名清晰,咱们把打出来的包名规范下,在上面配置多渠道的地方加上

    ">//自定义打包时apk名字
        android.applicationVariants.all { variant ->
            variant.outputs.all {
                // abc_渠道名_版本名.apk  还可以拼接其他app内容:variant.versionCode  variant.buildType.name
                outputFileName = "GreenVolley_${variant.name}_${variant.versionName}_${new Date().format("yyyy-MM-dd")}.apk"
            }
        }
    

    看到这里你也知道,出来的包名是什么了。

    来开心的打包吧:

    在你Android Studio 右上角有个Gradle的按钮,点击打开:

    打开后,接下来的操作步骤是;点击你的项目名,然后点击app,再点击build,最后打开如下图:

    这里罗列了一系列;

    • 1、我当前选中的 assembleRelease 意思就是打包线上版,假如你多渠道号设置了几个,这里点击这个建,就会一键打多少个渠道包;
    • 2、当然你往下看还有个 assembleUc ,点击这个按钮,意思就打UC渠道这一个线上包

    接下来举个例子,如果是要数据统计这些渠道号,肯定是要获取这些渠道号的值,你只需要这样:

    ">//测试多渠道打包
    ApplicationInfo appInfo = null;
    try {
        appInfo = App.getContext().getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    String app_version = appInfo.metaData.getString("ATMAN_CHANNEL");
    LogUtils.i("我试试看吧当前是什么", app_version + "=========");
    

    以uc包为例子,输出的结果是:

    其实教程早已经结束,这只是验证一下。如果是区分环境,你大可这样做,uc标签下是一个环境,当渠道号获取为uc的时候,你在代码里再取这个环境的域名。(如果对你有帮助,请点个赞鼓励下技术小学生吧)

    最后

    如果你看到了这里,觉得文章写得不错就给个赞呗!欢迎大家评论讨论!如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足,定期免费分享技术干货。谢谢!

    相关文章

      网友评论

        本文标题:Android Studio多渠道打包,比你想的还简单详细

        本文链接:https://www.haomeiwen.com/subject/xyxwkctx.html