前言

在开发过程中,会遇到这种业务。
在某一个渠道,需要引入一些三方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清单文件替换优先级相关”

  <activityandroid:name="com.xxxx.DangbeiMainActivity"android:screenOrientation="landscape"android:theme="@style/AppTheme.Splash"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>//这个activity和主工程里面配置一样,只是intent-filter会被进行替换,以致于整个清单文件 launcher的只有一个<activityandroid:name="com.xxxx.ui.main.MainActivity"android:screenOrientation="landscape"android:theme="@style/AppTheme.Splash"tools:node="replace"><intent-filter><action android:name="android.intent.action.MAIN" /></intent-filter></activity>
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<Activity> getLivePlayClass() {return livePlayClass;}
}

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

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

结语

欢迎留言,欢迎交流

Android 不同渠道差异代码相关推荐

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

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

  2. android多渠道 依赖,android 不同渠道 添加不同依赖jar 使用不同代码

    android由于不同的渠道用到的依赖不同,比如个推sdk分谷歌市场版和国内版,要在同一个项目中根据渠道来分别加载两个sdk. 1.将两个jar包凡在src目录下的lib文件夹中,并且在gradle文 ...

  3. 【产品笔记】产品工作中Android和iOS差异

    移动互联网时代,移动端产品的规划设计是大多数产品经理的必修课.广义来说,移动端产品主要包含iOS端App.Android端App.微信端H5.小程序.WAP版H5以及平板端App(HD版),本文主要就 ...

  4. android ble mesh,Android 蓝牙Mesh组网代码详解

    文章目录前言Mesh组网基本理解扫描设备组网meshAddress添加与重连UUID连接登录修改信息控制与接收设备数据总结 前言 上面的几篇文章都是在说Android网络编程方面的内容,我本来就有打算 ...

  5. Android Studio中的代码格式快捷方式

    本文翻译自:Code formatting shortcut in Android Studio I have started developing with Android Studio . 我已经 ...

  6. 浅谈Android保护技术__代码混淆

    浅谈Android保护技术__代码混淆 浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读 ...

  7. 【错误记录】Android Studio 的 Flutter 代码界面没有 Logcat 面板 ( 2021年08月28日最新解决方案 )

    文章目录 前言 一. 报错信息 二. 解决方案 前言 在之前的博客 [错误记录]Android Studio 的 Flutter 代码界面没有 Logcat 面板 中 , 处理了该问题 , 不过时去年 ...

  8. 安卓如何运行python_如何在android上运行Python代码?

    这个非常简单,Termux和QPython3这2个安卓APP就可以,都集成了Python解释器,可以直接编辑运行Python代码,下面我简单介绍一下: Termux 这是一个安卓高级终端APP,类似于 ...

  9. Android如何在java代码中设置margin

    Android如何在java代码中设置margin,也就是组件与组件之间的间距. 代码中设置: LinearLayout.LayoutParams params = new LinearLayout. ...

最新文章

  1. 语音信号的短时语音能量
  2. 查看linux是几位的操作系统
  3. Linux启动/停止/重启Mysql数据库的方法
  4. Ubuntu 14.04 安装flash插件;安装Cairo-Dock; 美化为Mac
  5. python函数可变参数_python中函数的可变参数
  6. [Editor][001][vim]VIM的辅助工具们
  7. linux moxa 多串口卡_MOXA多串口卡C32030TCPU模块双RISC-based处理器架构大幅提升I/O数据传输的效能达到8口或以上...
  8. zend studio使用xdebug调试程序不能单步调试的解决方案
  9. 用编译安装搭建自己的http服务器
  10. 计算机中的逻辑与或非,与或非运算(与或非逻辑运算口诀)
  11. 软考之---软件设计师考试经验与笔记分享
  12. 项目经理的工作就是胡搅蛮缠满地打滚
  13. java程序员工资有多少?java程序员现状如何?
  14. python图片转文字
  15. mc通用计算机,《我的世界》里打造一台计算机有多难?复旦大神花一年终于实现!...
  16. Go学习笔记_环境搭建
  17. 4kw机柜无通道封闭CFD模拟分析及优化(上篇) -孙长青
  18. leetcode 1833 雪糕的最大数量
  19. 获取网页中所有的小客车摇号信息
  20. 基于微信小程序的师生答疑交流平台APP

热门文章

  1. 半边数据结构【Half Edge】
  2. 浪涌抑制专题-半导体放电管tss介绍
  3. 永恒之黑(CVE-2020-0796)
  4. java英文自我介绍3篇_java开发英文自我介绍
  5. 温网计划为穆雷设立雕像:展示其非凡职业生涯
  6. SQLDER--工具参数--中英文对照
  7. 用 Silverlight 开发围棋在线对弈程序(一)UI 雏形
  8. 买玉时怎么鉴别是不是好玉?
  9. 科学家利用计算机模型,科学家开发出最详细计算机模型 揭示130亿年宇宙奥秘...
  10. 华为2020校招软件开发岗全流程,已签约