TRA-20201101

Tip

好消息,好消息
Android module 在 编译期 有办法使用不同的代码啦
说人话就是 : A 是一个 module , B 和 C 使用了 A 。 B 和 C 可以分别设置使用 A 里的不同的代码。这不是使用代码里的判断来进行的,而是使用 gradle 设置项目依赖完成的

用处

  • 在有多个项目依赖于同一个 module 的时候,可以指定使用不同的内容来进行编译(即选择不同的文件进行打包)
    • 不同的配置使用不同的源码,源文件
    • 不同的配置使用不同的资源文件

步骤如下(假设 module 名称为 A , 依赖 module 的两个 module 是 B 和 C ) :

  1. A module 的 build.gradle 中增加编译类型的声明。
android {
    // 声明一个类型叫做  type
    publishNonDefault true
    flavorDimensions "type"
    // type 又两个取值,一个叫做 type1 , 一个叫做 type2
    productFlavors {
        type1 {
            dimension "type"
        }

        type2 {
            dimension "type"
        }
    }
}
  1. 设置不同的 type 所使用的文件
  • 不同的源码
    • src/main/java 里新建目录 src/type1/java/ , 并在目录下新建对应的 package ,这样在编译 type1 的时候会使用 该目录下的文件。 type2 的同理。
  • 不同的资源(我还未测试)
    • 同上,目录为 src/type1/res
  1. B module 如果要使用 A 的 type1 。在 build.gradle 中加入
android {
    // 这表示对于 B module 依赖的库,默认使用其  type1  flavor ,如果没有的话, 就使用 type2 .
    // 但是注意,这会应用到所有的依赖库上。
    // 那为什么不单独对于某个以来进行配置呢? 因为 我不会啊。
        missingDimensionStrategy 'type', 'type1', 'type2'
}

Rev

看了一些 webRTC 的知识,包括

  • webRTC 的功能
    • 音视频捕获输出编解码
    • 信道沟通

webRTC数据通道介绍
基于 web 的 webRTC 官方demo
知乎上的一篇 webRTC 简介

Alg

49. 字母异位词分组

算法简单的让人惊叹,当然了都是依赖 kotlin 强大的运算符的支持滴。。。

        val m = strs.groupBy {
             // 按照下面的规则对 strs 里的元素进行分组,分成一个 map.
            val r = it.toList().sorted().joinToString("")
            r
        }
        return m.values.toList()
posted @ 2020-11-01 12:36  wkmcyz  阅读(120)  评论(0编辑  收藏  举报