4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
热卖商品
新闻详情
开发Android那么多年,你真的会打包吗_ChessLuo-CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-24

一、前言

最近前端框架似乎又火起来了 各大平台纷纷推出自家框架 各种跨平台方案 在这百家争鸣 万花齐放之下 最终谁能一统天下呢 我们拭目以待吧 接下来我还是先继续学习下Android 然后去学习xxx 再去学习xxx 再去学习xxx 再去学习xxx 再去学习xxx。。。

 

二、多渠道打包

今天就学习下多渠道打包 对于Android开发者来说 估计都懂得多渠道打包 就算不懂的随便网上搜一搜相关的文章一堆了 不过我还是喜欢总结归纳 以后我可以打开回顾下。多渠道莫过于应用发布到不同的市场 给不同的人去使用

多渠道打包的好处

1 方便开发、测试

开发过程中只使用开发环境渠道 发布时切换正式渠道 这样大大节约了开发时间 也便于后续的代码管理

2 方便统计不同渠道数据 运营维护必备

多渠道打包发布到各大应用市场后 可以统计不同渠道的流量等数据 给APP后续发展提供了方向

3 根据不同渠道的客户需要 开发相应的功能

假如现在有A、B、C三个渠道的大客户 他们都在使用自家的APP 但都有不同的需求 那么作为程序猿总不能复制成3个项目工程 然后再改不同的需求吧 万一后续还有很多其他不同渠道呢 哈哈 所以多渠道打包就派上用场了

 

三、步骤

在app目录下的build.gradle设置productFlavors

下面我添加了huawei、xiaomi、qh360、baidu、wandoujia、qq这六个渠道 buildConfigField就是自定义的渠道类型 int 当然也可以是String类型等 CHANNEL_VALUE就是自定义的key-value值 这些在代码里都可以利用BuildConfig去获取对应的值以至于判断不同渠道。

android {    compileSdkVersion 27    defaultConfig {        applicationId  com.chessluo.channelpackagedemo         minSdkVersion 14        targetSdkVersion 27        versionCode 1        versionName  1.0         testInstrumentationRunner  android.support.test.runner.AndroidJUnitRunner         //        flavorDimensions  versionCode     }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile( proguard-android.txt ),  proguard-rules.pro         }    }/** 在build.gradle设置productFlavors */    productFlavors {        xiaomi {            buildConfigField  int ,  CHANNEL_TYPE ,  1             manifestPlaceholders   [                    CHANNEL_VALUE:  小米             ]        }        qh360 {            buildConfigField  int ,  CHANNEL_TYPE ,  2             manifestPlaceholders   [                    CHANNEL_VALUE:  360             ]        }        baidu {            buildConfigField  int ,  CHANNEL_TYPE ,  3             manifestPlaceholders   [                    CHANNEL_VALUE:  百度             ]        }        wandoujia {            buildConfigField  int ,  CHANNEL_TYPE ,  4             manifestPlaceholders   [                    CHANNEL_VALUE:  豌豆荚             ]        }        qq {            buildConfigField  int ,  CHANNEL_TYPE ,  5             manifestPlaceholders   [                    CHANNEL_VALUE:  应用宝             ]        }        huawei {            buildConfigField  int ,  CHANNEL_TYPE ,  6             manifestPlaceholders   [                    CHANNEL_VALUE:  华为             ]        }    }}

 

 

配置好productFlavors后 我们就可以在业务代码里面获取刚刚配置好的渠道值了

于是将BuildConfig的属性值全都获取展示出来了 关于前面提到的优点都能实现了吧

public class MainActivity extends AppCompatActivity {    private TextView mTv;     Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mTv   findViewById(R.id.tv);        initData();    }    private void initData() {        /**读取BuildConfig配置值*/        boolean isDebug   BuildConfig.DEBUG;//是否debug        String applicationId   BuildConfig.APPLICATION_ID;//applicationId        String buildType   BuildConfig.BUILD_TYPE;//构建类型。要么是debug版 要么是release版 可通过Build Variants选择打包类型         String flavor   BuildConfig.FLAVOR;//对应渠道名        int versionCode   BuildConfig.VERSION_CODE;//版本号        String versionName   BuildConfig.VERSION_NAME;//版本名        int channelType   BuildConfig.CHANNEL_TYPE;//通过buildConfigField自定义的渠道值        mTv.setText( 是否debug isDebug \\r\\n                  applicationId applicationId \\r\\n                  构建类型 buildType 版\\r\\n                  渠道名 flavor \\r\\n                  版本号 versionCode  \\r\\n                  版本名 versionName \\r\\n                  通过buildConfigField自定义的渠道值 channelType);    }}

 

开始打包了 还是原来的打包方式 只是多了不同渠道而已 要是想全部一起打包就选中全部

\"\"

 

打包好之后↓

\"\"

 

当然 如果我要测试某个渠道版的 每次都这样打包测试也不方便 于是还有一种方法

绑定签名文件

signingConfigs {        appkey {            //ChessluoStudy.jks文件放在项目根目录下            storeFile file( ../ChessluoStudy.jks )            storePassword  123456             keyAlias  ChessluoStudy             keyPassword  123456         }    }    buildTypes {        debug {            minifyEnabled false            signingConfig signingConfigs.appkey        }        release {            minifyEnabled false            signingConfig signingConfigs.appkey            proguardFiles getDefaultProguardFile( proguard-android.txt ),  proguard-rules.pro         }    }

绑定好自家的签名文件后 就可以直接开发工具运行编译到模拟器或手机里调试了 多么方便啊

那么问题又来了 我怎么调试运行某个渠道呢 那就请看下图吧

\"\"

每个渠道包都有Debug版和Release版 Debug可以编译调试方便开发 等要发布上线时再打包release版 release版的包体积也小很多。

github地址 https://github.com/ChessLuo/ChannelPackageDemo

 

今天就学习到这里吧 祝大家周末愉快

支持我的话可以关注下我的公众号 一起学习Android、小程序、跨平台开发~

扫一扫关注我的微信公众号 程序猿在广东

\"\"

本文链接: http://createflavours.immuno-online.com/view-689422.html

发布于 : 2021-03-24 阅读(0)
公司介绍
品牌分类
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://