前言

在开发过程中,会遇到这种业务。

在某一个渠道,需要引入一些三方sdk,需要写一些差异性代码,跟原来的业务有重叠。如果所有的判断逻辑都写在一起,会出现很多if(flavor==xxx),并且三方sdk的包也会都在app里产生增量,直接导致apk过大。

解决方案

话不多说,直接上解决方案:

1、src文件下面分渠道来写代码

2、build.gradle下使用 flavorImplemention 来引入渠道对应的三方库文件

详细案例请往下看

案例:在当贝渠道添加当贝sdk广告库

***’dangbeilibs‘***可以单独用于存放dangbeiSDK的库文件

!下面是重要图解

1、一般初始化sdk都需要在Application里面初始化。

DangbeiApp继承App

2、然后加载广告在DangbeiMainActivity里面加载。

DangbeiMainActivity继承MainActivity

3、清单文件也需要配置一下。

注意:红色框里面的代码。如果入口activity的category是launcher,那么多个activity就会出现多个桌面应用图标,这里这样写可以只有一个图标

具体的缘由可搜索:“Android清单文件替换优先级相关”

android:name="com.xxxx.DangbeiMainActivity"

android:screenOrientation="landscape"

android:theme="@style/AppTheme.Splash">

//这个activity和主工程里面配置一样,只是intent-filter会被进行替换,以致于整个清单文件 launcher的只有一个

android:name="com.xxxx.ui.main.MainActivity"

android:screenOrientation="landscape"

android:theme="@style/AppTheme.Splash"

tools:node="replace">

复制代码4、在继承的时候,原来MainActivity的一些属性和方法会被继承者使用的,应该改写成protected修饰符

5、如果你的工程使用了dagger,那么新增的Actiivty需要使用注解的,也需要新建module进行配置

6、如果你的宿主工程里面的方法使用到了class来进行判断,如果要区分是DangbeiMainActivity还是MainActivity,就需要进行特殊的处理。这里分享出一种方法。

比如: 如果你宿主MainActivity是要跳转到LivePlayActivity,你是这样写的。但是,DangbeiMainActivity里面如果是需要跳转到DangbeiLivePlayActivity(DangbeiLivePlayActivity继承于LivePlayActivity),而你宿主工程里面有没有DangbeiLivePlayActivity这个类,怎么办?

办法就是宿主工程里创建一个Util来保存class,在danbeiApp初始化的时候,设置一下。

public class ClassUtil {

private static volatile ClassUtil mInstance;

private ClassUtil() {

}

public static ClassUtil getInstance() {

if (mInstance == null) {

synchronized (ClassUtil.class) {

if (mInstance == null) {

mInstance = new ClassUtil();

}

}

}

return mInstance;

}

private Class livePlayClass = LivePlayActivity.class;

public void setLivePlayClass(Class livePlayClass) {

this.livePlayClass = livePlayClass;

}

public Class getLivePlayClass() {

return livePlayClass;

}

}

复制代码

这样在跳转的时候就可以这样

就实现了跳转到DangbeiLivePlayerActivity而不是宿主工程的原LivePlayActivity

结语

欢迎留言,欢迎交流

android渠道编号,Android 不同渠道差异代码相关推荐

  1. android 渠道方案,Android 不同渠道差异代码

    前言 在开发过程中,会遇到这种业务. 在某一个渠道,需要引入一些三方sdk,需要写一些差异性代码,跟原来的业务有重叠.如果所有的判断逻辑都写在一起,会出现很多if(flavor==xxx),并且三方s ...

  2. Android 不同渠道差异代码

    前言 在开发过程中,会遇到这种业务. 在某一个渠道,需要引入一些三方sdk,需要写一些差异性代码,跟原来的业务有重叠.如果所有的判断逻辑都写在一起,会出现很多if(flavor==xxx),并且三方s ...

  3. php动态生成apk渠道包,Android自动生成渠道包

    承接上文Android应用的自动化构建,我们已经通过ANT自动构建了应用,那接下来的问题是,如何自动构建渠道包,这里强烈推荐一篇文章美团Android自动化之旅-生成渠道包. 美团提到的第三种方式,截 ...

  4. android o preview 3,Android O Preview 之 通知渠道(Notification Channels)

    介绍 Android O 引入了 通知渠道(Notification Channels),以提供统一的系统来帮助用户管理通知,如果是针对 android O 为目标平台时,必须实现一个或者多个通知渠道 ...

  5. Android-Ant自动编译打包android项目 -- 2 ----签名与渠道包

    上篇介绍了怎么使用ant自动编译打包现有的android项目,这篇将继续介绍如果如何在ant打包应用的时候加入签名信息以及自动打包渠道包. 1. 加入签名信息: 在项目的根目录下建一个ant.prop ...

  6. Android自动化之旅—生成渠道包

    概述 每当发新版本时,美团团购Android客户端会被分发到各个应用市场,比如豌豆荚,360手机助手等.为了统计这些市场的效果(活跃数,下单数等),需要有一种方法来唯一标识它们. 团购客户端目前通过渠 ...

  7. 美团Android自动化之旅—生成渠道包

    每当发新版本时,美团团购Android客户端会被分发到各个应用市场,比如豌豆荚,360手机助手等.为了统计这些市场的效果(活跃数,下单数等),需要有一种方法来唯一标识它们. 团购客户端目前通过渠道号( ...

  8. 美团Android自动化之旅—适配渠道包

    概述 前一篇文章(美团Android自动化之旅-生成渠道包)介绍了Android中几种生成渠道包的方式,基本解决了打包慢的问题. 但是,随着渠道越来越多,不同渠道对应用的要求也不尽相同.例如,有的渠道 ...

  9. android 渠道方案,Android多渠道打包时获取当前渠道的方法

    作为Androidapp,发布多个分发平台是常规操作.然后,有时由于个渠道面对的用户不同,或平台审核标准不同,需要在各渠道使用不同的业务逻辑,这就需要根据渠道使用选择差异化代码. 这里把简单的代码记一 ...

  10. android渠道校验,Android渠道版本自动化校验

    国内市场上有许许多多的应用市场,常见的有:百度.360.腾讯应用宝.豌豆荚等.其他手机厂家如小米.华为.魅族.三星等都有自己的应用市场,总共有上百家! 1. 问题 发版前,Android工程师打包了上 ...

最新文章

  1. 重写 equals 方法就一定要重写 hashCode 方法?其实有个前提
  2. 计组第六章——计算机的运算方法重点总结
  3. ASP.NET 4新增功能(三) 对Web标准的支持和辅助功能的增强
  4. .NET Core 和 DevOps
  5. 依赖dll_DLL攻击漫谈
  6. python-next
  7. 人工智能基础(高中版)教材补充和资源分享之二 机器人学矩阵
  8. 日本互联网 20 年沧桑路
  9. python断言assert
  10. excel冻结窗口_excel表格怎么来冻结窗口同时冻结行和列
  11. 多图丨入门必看:万字长文带你轻松了解CRM
  12. SQL每日一题(20210901)如果员工的【入职日期】是当月15号后,则该员工的【社保缴纳月份】为【入职日期】的次月
  13. “多源异构”和“异构同源”定义区分详解
  14. python循环语句打印输出1-10_python_不用循环打印1-1000
  15. Mysql 常用 时间函数
  16. android 颜色 数组,在Android中声明维数,颜色,资源ID或其他非标准数据类型的数组?...
  17. caffe layer层详解
  18. 代理ARP原理与实践(“善意的欺骗”)
  19. 智融SW6206、SW3516、SW3522、SW2303等快充市场方案应用
  20. cisco的访问控制列表ACL的基本使用(大白话版)(基于cisco packet tracer)

热门文章

  1. 设置 Scite编辑器的默认编辑为 UTF-8 ,及其他一些参数配置
  2. 7-10 哈利·波特的考试
  3. MysQL索引与事务
  4. 50以内的勾股数c语言,50以内勾股数有哪些
  5. halcon获取图像中心点_Halcon学习之六:获取Image图像中Region区域的特征参数
  6. Unity3D手游开发实践《腾讯桌球》客户端开发经验总结
  7. 方舟生存进化手机版服务器无限琥珀,方舟生存进化无限琥珀
  8. 无法远程连接到计算机 凭证,远程连接凭据不工作如何处理_远程桌面连接提示凭据无法工作的解决教程-win7之家...
  9. 技术团队培养_如何在团队中培养伟大的文化
  10. 将阿里云盘挂载为本地磁盘使用