Keadaan Fragmentasi Android yang Menyedihkan: Sebuah Contoh untuk Memahami Penderitaan Pengembang

Rata-rata pengguna Android mungkin sudah lama tidak lagi memedulikan "masalah fragmentasi" Android. Namun masalah ini masih menghantui para pengembang.

Fragmentasi telah menjadi masalah kontroversial di Android sejak sistem operasi seluler diumumkan.

Selain sebagai alat bagi para troll untuk digunakan dalam perang api online, keberagaman yang muncul akibat fragmentasi kini sebagian besar dipandang sebagai sebuah alat yang tidak berguna. positif bersih bagi konsumen perangkat Android. Lagi pula, kita diberi begitu banyak kebebasan dalam memilih jenis perangkat dengan jenis perangkat lunak yang kita inginkan sehingga sulit bagi rata-rata konsumen untuk peduli terhadap fragmentasi. Memvisualisasikan keragaman perangkat Android yang luar biasa menghasilkan mosaik indah dari representasi Android yang beragam.

Contoh Fragmentasi Perangkat Android berdasarkan Instalasi Aplikasi aplikasi OpenSignal. Sumber: Sinyal Terbuka

Namun fragmentasi perangkat keras dan perangkat lunak tidak membuat pengembang perangkat lunak bahagia. Faktanya justru sebaliknya. Mengembangkan aplikasi di berbagai konfigurasi perangkat keras dan perangkat lunak yang berbeda terbukti menjadi gangguan besar saat melakukan debug. OEM dapat membuat perubahan besar atau kecil yang perlu diperhitungkan saat mengembangkan aplikasi, namun sebenarnya tidak ada cara mudah bagi masing-masing pengembang untuk memastikan bahwa aplikasi mereka akan berfungsi secara universal. Meskipun rata-rata konsumen sudah lama melupakan perdebatan fragmentasi, masalah ini masih menghantui Android pengembang aplikasi dan sepertinya tidak ada yang bisa dilakukan kecuali menyedotnya dan mengatasi kesalahan yang ada muncul.


Keadaan Fragmentasi yang Menyedihkan

Salah satu OEM khususnya menerima banyak kebencian atas kerumitan yang mereka timbulkan saat mengembangkan aplikasi -- Samsung. Para pengembang telah mengomel tentang Samsung selama bertahun-tahun, beberapa bahkan menulis tulisan pedas seperti "Ada Tempat Khusus untuk Samsung di Neraka Android" yang menggambarkan bug yang sangat membuat frustrasi Perangkat Samsung dan dukungan perpustakaan appcompat. Saya ingin menarik perhatian pada satu paragraf khususnya dari kata-kata kasar Pak Ambri, yang dengan sangat baik menguraikan mengapa pengembang masih peduli dengan fragmentasi:

Jika Anda seorang pengembang Android, kebencian Anda terhadap perangkat Samsung mungkin tidak terbatas. Lebih dari rata-rata pengguna, yang identik dengan Samsung Touchwiz yang konyol Dan bloatware yang berlebihan, Anda membenci Samsung karena Anda tidak punya pilihan. Karena Samsung pangsa pasar yang sangat besar, Anda tidak bisa memilih untuk tidak mendukung perangkat Samsung. Dan itulah yang paling menyakitkan; fakta bahwa pilihan ini diambil darimu!

Ini juga bukan kata-kata kasar dari masa lalu keberadaan Android - postingan ini diterbitkan pada pertengahan Desember tahun lalu. Saya akan berterus terang dan menyatakan bahwa saya tidak yakin apakah masalah ini telah diperbaiki secara resmi, namun, Tn. Ambri telah memberikan perbaikan dalam postingannya untuk siapa saja yang menemukan kata-kata kasarnya melalui pencarian Google untuk tersebut serangga. Yang harus Anda lakukan hanyalah menggunakan Penjaga Pro dengan satu baris kode berikut:

# Samsung ruining all nice things-keep class !android.support.v7.view.menu.**, !android.support.design.internal.NavigationMenu, !android.support.design.internal.NavigationMenuPresenter, !android.support.design.internal.NavigationSubMenu, android.support.** {*;}

Itu tidak terlalu buruk, bukan? Masalahnya, perbaikan ini dilakukan dari Stack Overflow. Jangan salah paham, Stack Overflow adalah situs web yang bagus. Namun ini bukanlah sumber ideal untuk menemukan perbaikan pada aplikasi Anda. Menemukan sesuatu di Stack Overflow sering kali melibatkan penyelaman mendalam melalui tautan setelah banyak pencarian Google trial-and-error. Kadang-kadang Anda bahkan akan menemukan pengguna lain menyebutkan bug yang sama dengan yang Anda alami, tetapi tanpa perbaikan yang terlihat. Atau yang lebih membuat frustrasi adalah saat Anda menemukan topik yang diklaim oleh pembuat poster aslinya telah menemukan perbaikan tetapi mereka sudah lama meninggalkan thread mereka tanpa menginstruksikan orang lain cara memperbaikinya masalah.

Sumber: XKCD

Contoh Masalah Fragmentasi Halus

Saya sendiri bukan seorang pengembang, tetapi saya cukup akrab dengan kemampuan Android setelah bertahun-tahun mengutak-atik Tasker sehingga saya mulai memprogram solusi saya sendiri untuk masalah yang saya hadapi. Dan ketika saya tidak dapat menemukan sesuatu, saya mencarinya di Google, sama seperti orang lain. Saat saya sedang dalam proses menulis artikel saya sebelumnya tentang menggali aplikasi Pengaturan ponsel Anda untuk aktivitas tersembunyi, saya menemukan bug yang agak aneh yang tidak dapat saya jelaskan. Bug unik untuk perangkat Huawei.

Setiap kali saya mencoba memulai aktivitas tertentu (seperti menu "Pengujian" yang berisi statistik penggunaan aplikasi) dalam aplikasi Pengaturan, saya selalu menemui kesalahan izin. Secara khusus, aplikasi yang saya gunakan untuk memulai aktivitas tidak memiliki izin izin huawei.android. HW_SIGNATURE_OR_SYSTEM. Tidak ada perangkat lain yang saya uji yang memerlukan izin unik apa pun untuk meluncurkan aktivitas Pengaturan ini, hanya ponsel yang menjalankan Android versi Huawei (EMUI). Analisis tentang com.android.settings mengungkapkan bahwa aktivitas tertentu dalam aplikasi Pengaturan memang berada di bawah tingkat perlindungan yang memerlukan tindakan tersebut tanda tangan atau izin sistem.

Sayangnya bagi saya, ini berarti hanya aplikasi yang diinstal di /system atau aplikasi yang ditandatangani dengan yang sama tanda tangan sebagai aplikasi Pengaturan akan dapat membuka aktivitas ini menggunakan metode yang saya lakukan mencoba. Ketika saya mencari jawaban atas kesalahan ini di Google, saya (Anda dapat menebaknya) menemukan a Utas Stack Overflow. Pengembang yang memposting masalahnya menemukan masalah yang sama seperti yang saya alami (walaupun masalahnya sedang dalam proses mengembangkan aplikasi). Masalahnya muncul ketika dia mencoba menjalankan kode berikut:

<span >Intentspan><span > mainIntent span><span >=span><span >newspan><span >Intentspan><span >(span><span >Intentspan><span >.span><span >ACTION_MAINspan><span >,span><span >nullspan><span >);span><span >mainIntentspan><span >.span><span >addCategoryspan><span >(span><span >Intentspan><span >.span><span >CATEGORY_LAUNCHERspan><span >);span><span >Intentspan><span > pickIntent span><span >=span><span >newspan><span >Intentspan><span >(span><span >Intentspan><span >.span><span >ACTION_PICK_ACTIVITYspan><span >);span><span >pickIntentspan><span >.span><span >putExtraspan><span >(span><span >Intentspan><span >.span><span >EXTRA_TITLEspan><span >,span><span >"Pick App to Play in"span><span >);span><span >pickIntentspan><span >.span><span >putExtraspan><span >(span><span >Intentspan><span >.span><span >EXTRA_INTENTspan><span >,span><span > mainIntentspan><span >);span><span >thisspan><span >.span><span >startActivityForResultspan><span >(span><span >pickIntentspan><span >,span><span > REQUEST_PICK_APPLICATIONspan><span >);span>

Dilihat dari maksud dan halaman web pengembang, dia kemungkinan mencoba mengizinkan pengguna memilih aplikasi pihak ketiga untuk memutar beberapa media. Perbaikannya, disediakan oleh pengembang veteran Perangkat Umum, cukup sederhana: gunakan Maksud. Buat Pemilih alih-alih ACTION_PICK_ACTIVITY. Namun, Mengapa haruskah kita menerapkan perbaikan ini? Mengapa apakah Huawei memerlukan izin ini sejak awal? Mengapa apakah kita perlu menemukan jawaban di StackOverflow dengan menggunakan pencarian Google yang sangat spesifik?


Paradoks Pilihan

Untuk menemukan jawabannya, CommonsWare mengajukan laporan bug di pelacak bug Android meminta Google menyelidiki masalah ini. Secara khusus, pengembang meminta agar Google melarang persyaratan izin tidak berdokumen yang membatasi aplikasi pihak ketiga mengakses ACTION_PICK_ACTIVITY. Dengan menulis persyaratan ini di CTS, Huawei akan terpaksa mematuhi perubahan ini.

Namun sejujurnya, bug ini sendiri sebenarnya bukan masalah besar. Meskipun tidak ada aplikasi lain yang saya coba (seperti Tasker) yang dapat mengatasi izin ini persyaratan dan meluncurkan aktivitas tertentu dalam aplikasi Pengaturan, saya tidak terlalu kecewa hasilnya. Namun ketika saya teringat kata-kata kasar Pak Ambri, saya sadar bahwa perubahan kecil seperti ini pasti sangat membuat frustasi untuk dihadapi, apalagi karena sekecil apa pun mereka, tidak diragukan lagimenjumlahkan, terkadang cukup menyebabkan sakit kepala. Satu perubahan kecil pada aplikasi Pengaturan dapat mengakibatkan ulasan negatif yang tidak patut terhadap pengembang. Satu perubahan kecil yang tidak terdokumentasi dengan baik dan mengharuskan saya menjelajahi Internet untuk mencari thread Stack Overflow. Berapa banyak bug kecil lainnya yang ada di perangkat lain?

Meningkatnya persaingan di ruang seluler telah terbukti memberikan dampak positif bagi konsumen, namun setelah melihat perubahan yang tidak kentara ini karena banyaknya lini produk yang berbeda dapat memengaruhi pengembang, saya semakin menghargai pandangan pengembang terhadapnya fragmentasi. Masalahnya bukan pada pilihan itu sendiri, melainkan karena masyarakat tidak berbuat banyak untuk mengatasi permasalahan ini. Seperti yang disarankan Pak Ambri dalam artikelnya, mungkin pengembang Android memerlukan versi mereka sendiri caniuse.com atau sdkcritic.com untuk mengumpulkan semua bug yang tidak jelas ke dalam satu database. Satu-satunya alternatif lain adalah meminta OEM mendokumentasikan perubahan ini dengan benar atau berhenti melakukannya semoga beruntung dengan itu.

Kredit Gambar Fitur: Sinyal Terbuka