天天看點

TRA-20201101

目錄

  • Tip
    • 用處
    • 步驟如下(假設 module 名稱為 A , 依賴 module 的兩個 module 是 B 和 C ) :
  • Rev
  • Alg

好消息,好消息

TRA-20201101

Android module 在 編譯期 有辦法使用不同的代碼啦

說人話就是 : A 是一個 module , B 和 C 使用了 A 。 B 和 C 可以分别設定使用 A 裡的不同的代碼。這不是使用代碼裡的判斷來進行的,而是使用 gradle 設定項目依賴完成的

  • 在有多個項目依賴于同一個 module 的時候,可以指定使用不同的内容來進行編譯(即選擇不同的檔案進行打包)。
    • 不同的配置使用不同的源碼,源檔案
    • 不同的配置使用不同的資源檔案

  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'
}
           

看了一些 webRTC 的知識,包括

  • webRTC 的功能
    • 音視訊捕獲輸出編解碼
    • 信道溝通

webRTC資料通道介紹

基于 web 的 webRTC 官方demo

知乎上的一篇 webRTC 簡介

49. 字母異位詞分組

算法簡單的讓人驚歎,當然了都是依賴 kotlin 強大的運算符的支援滴。。。

val m = strs.groupBy {
             // 按照下面的規則對 strs 裡的元素進行分組,分成一個 map.
            val r = it.toList().sorted().joinToString("")
            r
        }
        return m.values.toList()