如何利用反射去实现定制化flavor java代码,慎用,骚操作

2021-12-22  本文已影响0人  仲夏之雪梦旅人

前提条件:

技能点

需求背景:

说明:

首先说一下什么是Android 的 flavor , 其实,这个是Android差异化打包所衍生出来的,或者说,差异化打包的实现就是通过flavor,什么是差异化打包呢?其实就是一套代码,有具体的公共的功能,但是,可能资源文件,以及图片资源不一样,以及最重要的\color{red}{applicationId}不一样,可能在你看起来,这两个app都是差不多的,除了图片资源不一样意外,功能都是一样的,但是从代码层面来讲,他们就是两个不同的app,因为applicationId不一样,所以,打开时候,他们的进程pid是不同的,所以,他们是两个app,ok,不说那么多,如果知道productFlavors同学可能会问,为什么不能直接将代码写在公共类库,用flavor去区分就行了,比如说我现在是flavor A, 那么我就执行这个代码,flavor B就不执行,ok,思路完全也没有问题,代码也能够实现,但是,有个问题,随着现在的安全与各种检查越来越严格,因为你的代码最终是服务于客户,那么,在对于客户A,他需要这个功能,没啥好说,但是,对于客户B来说,我不需要这个功能,检测到某些权限和代码对于客户B来说,是属于敏感权限,而这些敏感权限正好是客户A要求你开发的代码,那么怎么办?
\color{red}{所以,我们需要做,代码隔离,即在flavorA的情况下,将定制化代码进行编译,在flavorB的时候,相关的代码不参与编译}
有同学说,这个简单,在导包时候,使用 flavor+complie 这种方式,在指定的flavor上编译,但是,这样会有问题,因为我们java代码和C代码,都会有import头文件,这个如果切换到其他的flavor时候,那么,你某些资源没有参与编译,
那么,就会导致你import导包失败,在其他的flavor上,代码编译无法通过.所以,有两种解决方法.

解决方法

上一篇下一篇

猜你喜欢

热点阅读