Android
CA.apk

CA.apk #4 記事

More than 1 year has passed since last update.

今天參加的活動是 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