Android
CA.apk

CA.apk #4 記事

今天參加的活動是 CyberAgent 定期會舉辦的 Android 相關的聚會,由於最近幾乎一整天都在寫 Android 就決定跑來聽聽了。

以下是今天晚上聽的講題

標題 講者 簡報
AmebaアプリでのCI改善
(Ameba App CI 的改善)
今中 幸太
Ameba
後補
View Animation
(View 的動畫)
竹田 智
AbemaTV
後補
運用3年のタップル誕生でJavaからKotlin移行した話
( Tapple 誕生後營運三年從 Java 移轉到 Kotlin 的那些事)
向中野 亘
tapple
後補
RxJava1 -> RxJava2移行
(從 RxJava1 升級到 RxJava2)
清水 泰博
AWA
後補

AmebaアプリでのCI改善 / Ameba App CI 的改善

講者: 今中 幸太 / 株式会社サイバーエージェント

一開始碰到的問題

  • CI 的地位很低,就算是執行錯誤或是 Timeout ,還是不太有人在意
  • 因為沒有並行執行,所以效率很差
  • 執行的時間超長,原先執行一次要花 21:56

測試

成果

  • 降低一半左右的單次執行時間 → 耗時 12:12
  • 解決無法在裝置上自動化測試的問題

解決執行時間很長的問題

  • 準備一個專案本身自己的 SDK 資料夾,把 Android Home 的資料夾指向該資料夾,減少在 CI 的過程需要準備 SDK 的時間
  • 加上這樣 parallel:true 的設定,讓他可以並行執行(預設是關閉的)

未來想做

等等

View Animation / View 的動畫

講者 竹田 智 / 株式会社AbemaTV

動畫的三大種類

  • view animation
  • property animation (API 11 開始)
  • drawable animation

Material Design 裡面有提到

  • Motion provides meaning

View Transition Customize

轉場種類:

  • Enter - 進入畫面
  • Exit - 退出畫面
  • Shared Elements (可以把當下畫面的物件帶到下一個畫面去)
    • API 21~
    • 可以參考 Google Play Store 點開一個項目的 App Icon 移動

非同步載入圖片碰到的問題

supportPostponeEnterTransition() // 暫停
supportStartPostponedEnterTransition() // 重開

在畫面切換的時候,在自訂過場的時候會因為非同步載入大圖,造成體驗的延遲

但是又想要維持操作體驗

解法: Glide 的 thumbnail support (可以同時讀入多張圖片)

thumbnail → animation → show original image

其他 Tips

  • 轉場時,轉場的物件不想被 status 或 navigation bar 擋住時,可以 把 status 或 navigation bar 放進 shared element transition
  • 畫面轉向無法控制過程的動畫
    • 可以在 onMapSharedElementCallback 處理

總結

  • Animation Types
  • 動畫的連續性
  • Shared Element Transition, transition Name, Activity Options
  • 和非同步載入圖片一起使用動畫時需要注意的事情

運用3年のタップル誕生でJavaからKotlin移行した話 / Tapple 誕生後營運三年從 Java 移轉到 Kotlin 的那些事

講者: 向中野 亘 / 株式会社マッチングエージェント

導入 Kotlin 的原因

  • Android 已經正式支援
  • 現代語言
  • 與 Java 的互換性高
  • 集團內用 Kotlin 開發的人更多了,也有一些轉移到 Kotlin 的團隊
  • 可以一併進行架構改善
  • Java 工程師的話學習的成本低

還有大家都想寫

準備方式和資源

  • 每週一次讀書會
    • Kotlin Koans 全 42 問
    • 在讀書會裡面分享和解題
    • 不是只有看書,自己做過一次會比較有感覺
  • 關注 Kotlin 的 Advent Calendar

成員組成

  • 建議裡面一定要有一個經驗者
  • 功能開發和 Kotlin 移行同時進行
  • 新功能直接使用 Kotlin

進行方式

  • reviewer 一定要包含有經驗者

問題: 功能開發和導入 Kotlin 要平行進行非常困難

  • 優先開發新功能就漸漸不寫 kotlin 了

問題: Nullable/NonNull 不知道是什麼東西和不知道怎麼應對

無法一個一個確定 API 裡面有哪些數值可能會是 Null,因為有一百三十四十左右支

問題: 寫法太自由

  • 不知道該怎麼寫比較好
  • Scope 方法不知道該怎麼用
    • apply - 變化 property 的時候可以用
    • run
    • let - nullable 常用
    • also

Kotlin スコープ関数 用途まとめ (ngsw_taro) / Kotlin Scope 方法使用方式總覽

總結

  • 營運歷史更久的服務,程式碼的負債越多就越難導入
  • 能夠集中導入就導入,避免要分心做新功能就忘記要導入
  • Nullable anotation
  • 解決因為寫法自由產生的問題
    • 團隊要有共識
    • 制定程式碼風格
  • 搞清楚 Scope 變數

RxJava1 -> RxJava2移行 / 從 RxJava1 升級到 RxJava2

講者: 清水 泰博 / AWA株式会社

講題分兩個階段

  • 不停止開發轉移到 RxJava2 的方法
  • AWA 的做法

不停止開發轉移到 RxJava2 的方法

因為 1 和 2 差很多,所以不要一口氣升

可以用這個 Library 輔助升級

RxJava2Interop

AWA 的做法

主要有講到因為 App 本身有分層的架構,所以可以一層一層保留 Interface ,慢慢搭配 RxJava2Interop 從單層的內部轉移到 2 ,最後再去動之間 Interface

另外也有推這個 library