Slide 1

Slide 1 text

RIO (Ryosuke Shimizu) UaaL×Androidアプリ のメモリ計測 Memory Profilerの先へ

Slide 2

Slide 2 text

Self Introduction My name is RIO @rioX432 ・Disney ・Chiikawa ・HoloLive ・Game Streaming ・Comfy UI etc RIO / Mobile App Engineer Avvy Avatar Live Streaming App

Slide 3

Slide 3 text

Avvyでのアバター描画の技術 Unity:一番下のレイヤーでアバターの    レンダリングのみを担当 NativeUI:その上にオーバーレイ グレー:Unityのアバターの描画領域 黄色:Nativeのオーバーレイ Face Tracking iOSはARKit、AndroidはMediaPipe UaaLでUnityのアバター&背景を描画 AnotherBall Tech Blogより引⽤

Slide 4

Slide 4 text

5 Repository Structure Android / iOS / KMP / Unity / Unity SPM

Slide 5

Slide 5 text

Unity as a Library (UaaL) とは ネイティブアプリにUnityの描画エンジンを埋め込む - Unityのレンダリングエンジンをライブラリとしてネイティブアプリに組み込む技術 - UI はネイティブ (Compose / SwiftUI)、3D/AR描画だけUnityが担当 - Unityランタイムがアプリと同一プロセスで動く → メモリも共有 採用アプリ例 : - Mirrativ — 3Dアバター配信 - REALITY — バーチャル配信 - ZOZO — 3D仮想試着 - NAVITIME — ARナビ 公式対応: Android (Kotlin/Java) / iOS (Swift/ObjC) Flutter / React Native もコミュニティパッケージ経由で利用可能 https://github.com/juicycleff/flutter-unity-view-widget https://pub.dev/packages/flutter_embed_unity https://github.com/azesmway/react-native-unity

Slide 6

Slide 6 text

アバター表⽰時のメモリ使⽤量 Memory Profilerでは中⾝が⾒えない

Slide 7

Slide 7 text

Live Telemetryでは全体の1.2GBと大まかな分類は見える。しかし Graphics 430MB / Others 470MB の中身は分解できない

Slide 8

Slide 8 text

+826MBの正体 GPU 44% / Unity CPU 43% — Java Heapはほぼゼロ - GL mtrack (GPU textures) と Unknown (unclassified by OS) が二大要因 - Java Heap の増加はわずか +2MB

Slide 9

Slide 9 text

dumpsys meminfo で全体を⾒る adb shell dumpsys meminfo dumpsys meminfoならGraphics/Othersの中身を GL mtrack・EGL mtrack・Unknownに分解できる

Slide 10

Slide 10 text

まとめ 1. adb shell dumpsys meminfo — アプリ全体のメモリ構造を把握 2. adb shell dumpsys gpu — GPUメモリの実使⽤量を確認 3. Unity Profiler / SRDebugger — Unity内部のCPU側メモリ配分を確認 Memory Profilerだけでは「Graphics 430MB」の中⾝が⾒えない NDKやネイティブライブラリを含むアプリ全般に応⽤可能 3つの計測⼿段を使い分ける

Slide 11

Slide 11 text

「Avvyチーム、⾯⽩そうだな」と 思ったそこのあなたに! Avvyはまだ⾛り始めたばかりのサービスです。 今だからこそ挑戦できること、作っていける価値が 本当にたくさんあります。 あなたのご応募をお待ちしております。 おわりに 募集中のポジションの確認、応募は こちらのリンクから! https://anotherball.notion.site/open-positions