目錄
- Tip
- 用處
- 步驟如下(假設 module 名稱為 A , 依賴 module 的兩個 module 是 B 和 C ) :
- Rev
- Alg
好消息,好消息
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauETNxQjM1kjNx0CM0AjMyATMwETMwETMwIDMy0CM4gzN4UTMvwVMxAjMwIzLcBDO4cDO1EzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
!
Android module 在 編譯期 有辦法使用不同的代碼啦
說人話就是 : A 是一個 module , B 和 C 使用了 A 。 B 和 C 可以分别設定使用 A 裡的不同的代碼。這不是使用代碼裡的判斷來進行的,而是使用 gradle 設定項目依賴完成的
- 在有多個項目依賴于同一個 module 的時候,可以指定使用不同的内容來進行編譯(即選擇不同的檔案進行打包)。
- 不同的配置使用不同的源碼,源檔案
- 不同的配置使用不同的資源檔案
- A module 的
中增加編譯類型的聲明。build.gradle
android {
// 聲明一個類型叫做 type
publishNonDefault true
flavorDimensions "type"
// type 又兩個取值,一個叫做 type1 , 一個叫做 type2
productFlavors {
type1 {
dimension "type"
}
type2 {
dimension "type"
}
}
}
- 設定不同的 type 所使用的檔案
- 不同的源碼
- 在
裡建立目錄src/main/java
, 并在目錄下建立對應的 package ,這樣在編譯src/type1/java/
的時候會使用 該目錄下的檔案。type1
的同理。type2
- 在
- 不同的資源(我還未測試)
- 同上,目錄為
src/type1/res
- 同上,目錄為
- 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()