Bisnis

Rahasia “Battery History” di ADB – Cek App Paling Boros dalam 24 Jam Real-Time

Kami pernah merasa heran saat perangkat tiba-tiba cepat habis, padahal tidak banyak yang berubah. Kita ingin tahu apa yang sebenarnya menyedot daya dan kapan kejadian itu terjadi.

Kali ini kita akan menelusuri alat visual yang memetakan event dan metrik pada Android 5.0+ saat perangkat tidak diisi ulang. Tujuan bersama kita: memahami alur dari hulu ke hilir agar bisa mengungkap aplikasi paling boros dalam 24 jam dengan analisis time berbasis timeline.

Kegunaannya nyata bagi pengguna harian dan tim developer. Dari melihat battery usage per app hingga membaca event system yang memicu power spike, kita dapat membuat keputusan yang memperpanjang battery life.

Kursus singkat alurnya: siapkan adb shell, ambil bugreport, jalankan Historian di device lokal, lalu unggah data untuk membaca log dan state perangkat. Metode ini bekerja lintas device dan membantu menghubungkan aktivitas app dengan konsumsi daya secara usage-driven.

Kita akan mendapatkan daftar app teratas yang boros, rentang time saat drain terjadi, serta rekomendasi mitigasi. Siapkan settings dan perangkat agar langkah berikutnya berjalan mulus.

Menyelaraskan Niat: Apa yang Ingin Kita Capai dengan Battery History ADB hari ini

Sebelum menyentuh perintah teknis, kita perlu menyamakan tujuan pengukuran agar hasilnya berguna.

Kita menetapkan sasaran terukur: menemukan app paling boros battery dalam jangka 24 jam, menentukan rentang time saat drain puncak, dan menyiapkan langkah mitigasi berbasis statistics yang bisa segera dipakai developer.

Kami akan memantau usage sebelum dan sesudah skenario uji. Patokan praktis: aplikasi yang menguras lebih dari 15% battery per hour dianggap perlu perbaikan. Alur manual sebelum otomatisasi: reset statistik, jalankan app 1 jam, ambil metrik, lalu ekstrak indikator kunci.

  • Mengidentifikasi processes yang memicu drain tiba-tiba.
  • Mengukur dampak aktivitas app terhadap cpu dan screen.
  • Mengunci kriteria sukses: bukti timeline, angka consumption, rekomendasi perbaikan.
Metode Baseline Target
Penggunaan per jam >15% per hour
Window time Variabel, tidak konsisten 24 jam konsisten
Dokumentasi Catatan sporadis Log, screenshot timeline, ringkasan data

Konsistensi settings, reset statistik, dan pencatatan rapi membuat perbandingan valid. Hasilnya harus actionable bagi user internal dan tim developer agar mitigasi bisa langsung dijalankan.

Prasyarat & Perlengkapan: ADB, USB Debugging, dan Perangkat yang Didukung

Sebelum kita mulai menangkap data, mari pastikan perangkat dan koneksi siap dipakai.

Kita aktifkan Developer Options lalu USB debugging melalui Settings > System > Developer Options agar adb bisa berkomunikasi dengan device. Beberapa model menyembunyikan menu developer; ketuk Build number beberapa kali sampai muncul.

Instal Android SDK Platform Tools sebagai tools utama. Dengan itu, semua adb commands dan shell dapat dijalankan pada Windows, macOS, atau Linux tanpa masalah.

Mengaktifkan Developer Options & USB Debugging

Masuk ke Settings, buka System, lalu aktifkan Developer Options. Hidupkan USB debugging dan terima prompt RSA saat pertama kali menghubungkan device ke komputer.

Menyiapkan Android SDK Platform Tools dan koneksi device

Periksa kabel USB dan izin debugging setiap kali. Simpan bugreport di komputer sesuai nomor versi Android:

  • Android 7.0+ : jalankan adb bugreport bugreport.zip
  • Android 6.0 ke bawah : jalankan adb bugreport > bugreport.txt
Metode Perintah Catatan
Ambil bugreport adb bugreport bugreport.zip Untuk Android 7.0 ke atas, buat zip agar tools lain bisa membaca files
Shell akses adb shell dumpsys Gunakan shell untuk melihat status cpu dan screen saat kalibrasi
Konfirmasi koneksi adb devices Pastikan device muncul dan tidak terblokir oleh RSA prompt

Siapkan ruang penyimpanan pada komputer untuk artefak pengujian. Pastikan cpu dan screen perangkat tidak overheat, dan atur time mulai uji agar setiap sesi dapat dibandingkan secara apples-to-apples.

Menyiapkan Battery Historian: Opsi Docker vs Build Go

Langkah pertama: tentukan apakah kita pakai container atau membangun dari kode sumber.

Kami merekomendasikan jalur tercepat via Docker untuk tim yang ingin langsung melihat UI dalam hitungan menit. Jalankan perintah berikut untuk memulai container pada port pilihan:

docker run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 –port 9999

Di Mac/Linux akses http://localhost:<port>. Di Windows pastikan Virtualization aktif dan gunakan IP Docker yang ditampilkan agar device penguji dapat mengunggah file bugreport.

Alternatif: build manual dengan Go

Untuk kontrol penuh, bangun dari sumber. Instal Go 1.8.1+, set GOPATH/GOBIN pada PATH, lalu pasang Git, Python 2.7, dan Java.

Unduh dan susun kode dengan:

go get -d -u github.com/google/battery-historian/…

go run setup.go

go run cmd/battery-historian/battery-historian.go –port 9999

Akses Web UI dan pengaturan jaringan

Gunakan port statis agar tim tidak saling bentrok. Simpan lokasi source di $GOPATH/src/github.com/google/battery-historian untuk memudahkan upgrade dan audit dependency.

Aspek Docker Build Go
Kecepatan Mulai dalam minutes Butuh build & setup
Kontrol versi Sedikit lebih terbatas Penuh, mudah patch
Dependensi Minimal host Go, Git, Python2.7, Java
  • Dokumentasikan commands dan lokasi files untuk replikasi environment.
  • Tetapkan port dan pastikan server screen tetap aktif selama review agar koneksi tidak terputus.
  • Perhatikan spesifikasi mesin; render timeline membutuhkan cukup CPU dan power agar analisis data lancar.

Mengambil Bugreport & Mereset Statistik: Dasar Data yang Bersih

A dimly lit command prompt window displays the "adb shell" command, its cursor blinking expectantly. The screen is surrounded by a dark, textured background, conveying a sense of focus and technical depth. The lighting is dramatic, casting shadows that add depth and visual interest. The angle is slightly tilted, creating a sense of perspective and drawing the viewer's eye towards the central command prompt. The overall mood is one of technical precision and exploration, hinting at the deeper insights that can be gleaned from the "Battery History" data within.

Sebelum merekam sesi, kita pastikan semua log dan statistik dimulai dari kondisi bersih.

Kita mulai dengan membuat file bugreport yang sesuai versi Android agar Historian dapat membaca data. Untuk Android 7.0+ gunakan adb bugreport bugreport.zip. Untuk versi 6.0 ke bawah jalankan adb bugreport > bugreport.txt.

Selanjutnya reset agregat agar statistik benar-benar fresh. Jalankan adb shell dumpsys batterystats –reset.

Aktifkan full wake detail dan praktik terbaik

Kalau butuh detail wakelock, hidupkan dengan adb shell dumpsys batterystats –enable full-wake-history. Ingat, log bisa overflow jika durasi uji lebih dari 3–4 jam.

  • Nama file konsisten: tanggal_waktu_device_skenario.zip untuk memudahkan tracking.
  • Pastikan device relatif idle sebelum mulai sehingga stats mewakili skenario.
  • Simpan semua files dan catatan di repositori terpusat dengan kontrol versi.
  • Jaga screen agar tidak masuk sleep saat mengambil bugreport.
  • Jika bugreport gagal, jalankan adb beberapa kali dan cek cpu di PC untuk kinerja pembuatan file.
Langkah Perintah Catatan
Ambil bugreport (7.0+) adb bugreport bugreport.zip Gunakan zip agar Historian bisa mengimpor semua files
Ambil bugreport (≤6.0) adb bugreport > bugreport.txt File teks cocok untuk versi lama
Reset stats adb shell dumpsys batterystats –reset Bersihkan semua statistik sebelum skenario
Full wake detail adb shell dumpsys batterystats –enable full-wake-history Gunakan untuk sesi singkat (3–4 jam) untuk mencegah log overflow

Battery History ADB: Perintah Inti dan Contoh Cepat

Sebelum mengekspor ke tools visual, mari kumpulkan data primer lewat beberapa command singkat.

Kita mulai dengan ringkasan konsumsi menggunakan adb shell dumpsys batterystats. Perintah ini memberi statistik penggunaan dan baseline sebelum visualisasi.

Ringkasan konsumsi dan status perangkat

Untuk melihat level, suhu, dan state jalankan adb shell dumpsys battery. Ini membantu kita memahami kondisi power saat pengujian dimulai.

Fokus pada app dan proses terkait

Gunakan adb shell dumpsys meminfo <package>, adb shell dumpsys cpuinfo, dan adb shell dumpsys wifi untuk melengkapi data. Gabungan output ini memudahkan korelasi antara cpu spike dan consumption pada waktu tertentu.

Tujuan Perintah Catatan
Ringkasan usage adb shell dumpsys batterystats Baseline sebelum import
Status power adb shell dumpsys battery Level, suhu, state
Detail proses meminfo / cpuinfo / wifi Kaitkan dengan timeline

Kita rekomendasikan menyimpan setiap output ke file teks dan menjalankan commands yang sama di tiap sesi. Untuk analisis lanjutan, gunakan parser Historian (checkin-parse, history-parse, checkin-delta) atau buat script agar sequence ini hanya sekali klik.

Mengunggah dan Membaca Timeline di Battery Historian

A detailed timeline visualized on a sleek, modern dashboard. The foreground features a clean, linear timeline graph with distinct time segments and data markers. The middle ground showcases various battery analytics charts, graphs, and metrics arranged in a well-organized, easy-to-read layout. The background has a subtle gradient effect, conveying a sense of depth and sophistication. The lighting is soft and even, creating a professional, data-driven atmosphere. The camera angle is slightly elevated, giving an overview of the comprehensive battery history interface. The color palette is muted yet vibrant, with shades of blue, gray, and green predominating to reflect the technical nature of the subject matter.

Dalam beberapa klik, file zip atau txt berubah menjadi timeline interaktif yang membantu kita menemukan puncak usage.

Mulai dengan mengunggah bugreport.txt atau bugreport.zip ke antarmuka. Setelah import selesai, UI mem-plot event dan statistik sejak state penuh charge sehingga kita mendapat gambaran time yang jelas.

Mengimpor dan menavigasi

Kita pilih device target lalu unggah files. Timeline mendukung panning dan zoom sehingga inspection rentang time tertentu jadi cepat.

Membaca aktivitas dan korelasi

Perhatikan wakelock, cpu peaks, perubahan screen, dan event jaringan. Pola yang sering muncul: spike cpu bersamaan dengan activity jaringan dan perubahan window, yang biasanya menandai peningkatan battery drain.

  • Pilih app atau proses untuk menyaring data.
  • Beri catatan pada segmen mencurigakan untuk diskusi tim.
  • Simpan tangkapan layar timeline sebagai bukti visual bagi user non-teknis.
Elemen Apa yang Dicari Tindakan
Wakelock Durasi panjang saat idle Investigasi package
CPU Puncak berulang Cek proses background
Screen & Network Perubahan window & trafik Hubungkan dengan usage app

Identifikasi Aplikasi Paling Boros dalam 24 Jam

Kami ingin cepat menemukan app yang paling berkontribusi pada drain dalam rentang 24 hours.

Kita mulai dengan membaca puncak consumption pada timeline dan mencatat time serta hours saat lonjakan terjadi. Catatan ini jadi dasar nomor untuk perbandingan.

Historian mendukung strategi A/B: unggah dua bugreport dan bandingkan metrics untuk melihat regresi consumption setelah perubahan kode. Ambang praktis yang kita pakai adalah >15%/hour sebagai indikator masalah.

Untuk menautkan puncak drain ke activity app atau window, kita periksa event yang bersamaan dan jalankan adb shell tambahan untuk mengecek proses saat lonjakan. Log yang dikumpulkan jadi bukti kuat saat membuat rekomendasi.

  • Kami tandai segmen timeline dengan consumption tinggi, simpan time dan number metrik.
  • Bandingkan dua bugreport untuk menonjolkan perubahan stats dan statistics.
  • Validasi hasil di beberapa devices agar pola drain tidak tersangka karena hardware tertentu.
  • Dokumentasikan usage per app dan rekomendasi prioritas perbaikan.
Langkah Aksi Hasil
Identifikasi puncak Baca timeline & catat time Daftar app target
A/B comparison Unggah dua bugreport Perbedaan consumption jelas
Validasi Uji di beberapa phone Hasil dapat diandalkan

Workflow Pengujian Otomatis: Dari ADB Commands ke Laporan JSON dan Graf

Kami membuat alur otomatis agar pengukuran consumption repeatable dan cepat diproses oleh tim.

Kita mulai dengan skema sederhana: reset statistik → jalankan app → logging berkala → rekap akhir. Setiap langkah dieksekusi lewat skrip yang memanggil adb dan mengambil output secara periodik.

Skema test singkat

Contoh manual: reset statistik, jalankan app selama 1 jam, ambil metrik, dan ekstrak angka kunci.

Contoh otomatis (Java): cek level setiap 10 menit lalu simpan ke battery_report.json untuk analisis lebih lanjut.

Integrasi CI/CD

Di Jenkins kita jalankan job yang mengeksekusi skrip, mengumpulkan log, dan mengarsip artifacts. Ini menjaga histori number metrik per build.

Visualisasi dengan Grafana

Kita ekspor JSON dan files log ke time-series DB, lalu buat dashboard. Grafana memetakan consumption dan cpu terhadap time sehingga proses, screen, dan event terlihat jelas.

Langkah Perintah / Output Hasil
Reset adb shell dumpsys batterystats –reset Statistik bersih untuk sesi
Periodic polling adb shell dumpsys battery → JSON Log berkala untuk time-series
CI archive Jenkins archiveArtifacts Files log & laporan terjaga

Kita juga tetapkan ambang kelulusan (misal 15%/jam). Jika consumption melewati batas, pipeline menandai build gagal. Standar perangkat dan skenario wajib agar hasil antar-build comparable.

Optimasi Lanjutan via ADB: Kurangi Drain Setelah Analisis

Setelah menganalisis timeline, kita terapkan tweak yang cepat diuji dan mudah diulang. Fokusnya pada perubahan settings yang memberi dampak nyata pada power dan screen serta pengelolaan processes yang berjalan di background.

Matikan animasi UI, kurangi refresh rate, dan batasi background

Kami mulai dengan perubahan yang langsung terasa pada battery life. Aktifkan low power mode:

adb shell settings put global low_power 1

Nonaktifkan animasi agar render window tidak memicu gpu/cpu berlebih:

adb shell settings put global window_animation_scale 0.0, transition_animation_scale 0.0, animator_duration_scale 0.0.

Kurangi refresh rate pada phone high-refresh:

settings put system peak_refresh_rate <value> dan settings put system min_refresh_rate <value>.

Device Idle dan App Standby: force-idle, whitelist, dan force-stop

Untuk menghentikan aktivitas background sementara, gunakan perintah ini secara selektif:

  • adb shell pm restrict-background <package> untuk batasi data background.
  • adb shell am force-stop <package> untuk menghentikan app yang bermasalah pada sesi uji.
  • Paksa mode idle dan cek whitelist dengan adb shell dumpsys deviceidle lalu adb shell dumpsys deviceidle force-idle.

Kelola bloatware, brightness, resolusi, dan power management

Kita hapus atau disable bloatware agar service tidak lagi menempati resources.

Contoh: pm uninstall –user 0 <package> atau pm disable-user <package>.

Ubah resolusi dan density untuk menurunkan beban render screen:

adb shell wm size 1080×1920 dan adb shell wm density 420.

Setiap perubahan dicatat dan divalidasi dengan snapshot adb shell dumpsys atau adb shell dumpsys batterystats untuk membandingkan battery life dan cpu hotspot sebelum/after.

Optimasi Perintah Efek yang Diharapkan
Low power adb shell settings put global low_power 1 Menurunkan konsumsi background dan throttling cpu
Nonaktifkan animasi adb shell settings put global window_animation_scale 0.0 … Render UI lebih ringan, menekan gpu usage
Batasi background app adb shell pm restrict-background <package> Kurangi trafik dan wakeups dari proses latar
Paksa idle adb shell dumpsys deviceidle force-idle Reduksi activity saat device idle, uji dampak drain

Pemecahan Masalah dan Praktik Terbaik

Masalah overflow log sering muncul saat kita mengaktifkan mode rekam wake lengkap. Untuk mencegah file corrupt dan memudahkan analisis, batasi durasi uji pada sesi 3–4 jam ketika opsi full-wake-history aktif.

Sebelum merekam, reset stats dengan adb shell dumpsys batterystats –reset. Mulai rekaman power monitor setelah itu, hentikan sesuai jadwal, lalu ambil bugreport segera untuk meminimalkan drift time antara sumber data.

Gunakan format power monitor yang konsisten: epoch detik (dengan fraksi) amps/volts atau epoch ms milliamps/millivolts. Format yang seragam memudahkan overlay ke timeline dan mengurangi error parsing.

Catatan state, verifikasi lintas devices, dan checklist

Catat state perangkat sebelum & sesudah uji: charging/offline, radio aktif, screen on/off. Informasi ini penting saat menafsirkan stats dan aktivitas background.

Verifikasi hasil di beberapa devices agar temuan bukan hanya anomali hardware. Kami juga menyarankan checklist sederhana untuk developer: reset → run → capture → label → archive.

  • Pantau cpu dan system load di host; UI lambat sering karena mesin analisis kelebihan beban.
  • Simpan semua file dan files pendukung secara terstruktur dengan penamaan konsisten.
  • Gunakan catatan time yang sama antara power monitor dan bugreport untuk mempermudah korelasi.
Masalah Solusi Praktik Durasi empfohlen
Log overflow Batasi rekaman; nonaktifkan full-wake-history untuk sesi panjang Gunakan 3–4 jam untuk detail wake 3–4 jam
Sinkronisasi time Reset stats lalu mulai rekaman; ambil bugreport segera Gunakan epoch ms atau detik untuk power monitor N/A
Performa host Monitor cpu/system; alokasikan resource lebih Jalankan Historian pada host dengan CPU memadai

Untuk referensi teknis dan langkah lanjutan, lihat panduan resmi. Dengan rutinitas sinkronisasi dan penyimpanan files yang rapi, analisis kami menjadi lebih andal dan dapat direplikasi oleh tim developer.

Kesimpulan

Secara singkat, kombinasi visual timeline dari Historian dan praktik otomasi memberi kita gambaran jelas tentang battery usage dan titik-titik consumption yang bermasalah.

Kita pakai statistik sejak full charge, pemilihan app, dan perbandingan A/B antar bugreport untuk mengidentifikasi puncak drain dalam rentang time tertentu. Ambang praktis 15%/jam tetap menjadi panduan saat menilai apakah sebuah app perlu diinvestigasi.

Kami menganjurkan monitoring rutin di pipeline CI dan pembuatan laporan JSON berkala via adb agar consumption terpantau lintas devices. Perhatikan level tren, cpu spike, perubahan screen, dan event power pada setiap time untuk menemukan penyebab utama.

Terakhir, terapkan prioritas optimasi pada app yang boros lalu ukur ulang usage untuk memastikan battery life membaik.

Back to top button