Google Dapat Menghapus Akses ke API Tidak Terdokumentasi/Tersembunyi di Android P

click fraud protection

Berdasarkan serangkaian komitmen di AOSP, Google mungkin mulai membatasi akses ke API yang tidak terdokumentasi atau tersembunyi di Android P. Banyak aplikasi bermerek menggunakan API tersembunyi untuk meningkatkan fungsionalitas, sehingga efeknya mungkin meluas.

Pembaruan 28/2/18: Google telah menerbitkan postingan blog hari ini yang mengonfirmasi perubahan tersebut. Lebih detailnya ada di akhir artikel.

Sementara beberapa penggemar Android demikian berspekulasi Apa nama makanan penutup yang akan diambil dari versi Android berikutnya, ada beberapa perkembangan menarik yang terjadi di balik layar. Kami telah melihat a hanya sedikit yang patut diperhatikan fitur-fitur yang akan datang di Android P, namun penemuan terbaru di Android Open Source Project (AOSP) terbukti jauh lebih menarik. Berdasarkan komitmen terbaru ini, aplikasi mungkin dilarang mengakses API yang tidak terdokumentasi di Android SDK (seperti API yang ditandai dengan atribut javadoc @hide).


Mengapa ini penting

Android Software Development Kit (SDK) menyediakan pustaka API dan alat yang dibutuhkan pengembang untuk menguji dan membangun aplikasi Android baru. Dengan setiap rilis baru Android, hadir sejumlah API baru yang tersedia bagi pengembang melalui Android SDK. API apa yang tersedia untuk suatu aplikasi bergantung pada CompileSDKVersion yang ditetapkan pengembang. Itu sebabnya Google

persyaratan Play Store baru sangat signifikan—hal ini akan memaksa aplikasi untuk memperbarui dan bermigrasi menggunakan API yang lebih baru.

tuan rumah Google halaman dokumentasi untuk setiap kelas dan semua metodenya yang tersedia di setiap level API. Ini adalah kumpulan API terdokumentasi yang tersedia di SDK Android resmi. Anda dapat menelusuri daftar kelas dengan mudah menggunakan aplikasi Android seperti aplikasi Android SDK Search yang baru dirilis oleh Android Engineer Jake Wharton.

Pencarian SDKPengembang: Jake Wharton

Harga: Gratis.

4.1.

Unduh

Namun, tidak semua API yang tersedia di setiap rilis Android didokumentasikan oleh Google, atau tersedia di SDK Android resmi. Seringkali ada API yang berguna tidak berdokumen, namun tetap sangat berguna. Pengembang tidak disarankan untuk membuat aplikasi mereka menggunakan API yang tidak terdokumentasi atau tersembunyi, namun banyak yang melakukannya karena tidak ada alternatif lain jika mereka ingin menawarkan fitur tertentu. Pengembang yang menggunakan API tersembunyi atau tidak terdokumentasi juga dapat menempatkan diri mereka pada keunggulan kompetitif, karena mereka dapat menawarkan fitur-fitur yang dibandingkan pesaing mereka—yang tetap menggunakan API yang ditawarkan oleh Android SDK—tidak bisa.

Meskipun saya tidak dapat memberikan daftar aplikasi yang menggunakan API tidak berdokumen (pengembang mungkin tidak membagikannya mana yang mereka gunakan karena akan memberi keunggulan pada pesaing mereka), daftarnya mungkin lebih tepat besar. Oleh karena itu, saya menyimpulkan bahwa melarang akses ke API tersembunyi akan menjadi hal yang signifikan. Mark Murphy, pendiri perangkat lunak umum, setuju:

Saya setuju dengan penilaian bahwa pelarangan massal akses ke @hide-annotated items akan menjadi masalah besar, jika hal itu terjadi. Mudah-mudahan, hanya sedikit aplikasi yang mengakses item ini sebagai bagian dari fungsi utama. Namun, saya menduga banyak aplikasi bermerek kadang-kadang menggunakannya, secara langsung atau melalui perpustakaan.


Apa yang terjadi di Android P?

Perubahan mendatang ini pertama kali dicatat oleh Pengembang Senior yang Diakui XDA rovo89, pengembang Kerangka Xpose. Dia menunjukkan dua komitmen kepada saya, salah satunya yang telah digabungkan, yang memperkenalkan alat pembangunan baru yang disebut 'hiddenapi.' Alat ini memodifikasi tanda akses semua anggota kelas dalam file DEX jika tanda tangan mereka muncul di daftar abu-abu atau daftar hitam masukan, dan jika demikian, metode yang ditandai akan diperlakukan sebagai API internal dengan batasan mengakses. Komit lainnya menjelaskan cara kerja daftar hitam API; itu mencegah akses ke kelas boot metode dan bidang yang ditandai dengan 'hiddenapi' yang disebutkan di atas yang dapat diakses pengembang melalui tautan statis, refleksi, dan JNI.

Menurut rovo89, hasil akhir dari kedua perubahan di Android P ini adalah sebagai berikut:

Jika komitmen ini digabungkan, itu berarti aplikasi tidak dapat lagi menggunakan/mengakses API tersembunyi kelas, metode, dan bidang yang dianotasi dengan @hide di AOSP dan oleh karena itu bukan bagian dari SDK resmi. Ini tidak akan menjadi masalah untuk modul Xpose karena saya dapat dengan mudah mengembalikan komitmen tersebut atau mengizinkan modul juga mengakses API ini. Namun ada banyak aplikasi yang memanfaatkan API tersembunyi, dan aplikasi tersebut akan gagal dalam prosesnya masa depan.

Memang, komitmen lebih lanjut menunjukkan bahwa ini mungkin yang direncanakan Google. Ini melakukan menyatakan hal berikut:

Meskipun penerapan khusus ini tidak digabungkan karena ditinggalkan demi 3 penerapan yang lebih kecil, pesan penerapan menjelaskan tujuan dari perubahan ini. Satu set lainnya berkomitmen menunjukkan bahwa Google akan menyarankan alternatif bagi pengembang yang ingin menggunakan API non-publik:

Namun, seringkali tidak ada alternatif selain API tersembunyi tertentu. Kami di XDA dapat berbicara dari pengalaman di sini sebagai sayangnya perubahan ini mungkin berarti akhir dari beberapa aplikasi inovatif, atau mungkin memerlukan beberapa aplikasi ternama untuk menguranginya Kegunaan. Perubahan yang akan datang ini nampaknya memiliki semangat yang sama dengan perubahan yang baru-baru ini terjadi tindakan keras terhadap Layanan Aksesibilitas (itu untungnya dijeda saat Google mengevaluasi penggunaan inovatif). Meskipun sebagian besar aplikasi yang menggunakan API tidak berdokumen melakukannya untuk alasan yang tidak berbahaya, mungkin ada beberapa aplikasi yang menyalahgunakannya untuk tujuan jahat.

Karena itu, Google mungkin mengunci akses ke semua API tersembunyi di Android P untuk melindungi pengguna dari beberapa orang yang menyalahgunakannya. Sulit untuk mengatakan seberapa besar dampak hal ini terhadap pengguna, tetapi jika Anda seorang pengembang mempertimbangkan untuk menelusuri AOSP untuk menemukan penggunaan inovatif dari API tersembunyi, maka Anda mungkin ingin melakukannya mempertimbangkan kembali.


Pembaruan: Google Konfirmasi

Di sebuah postingan blog diterbitkan hari ini, 28 Februari, Google telah mengonfirmasi perubahan ini. Mengutip risiko kerusakan bagi pengguna dan kemudian memaksa pengembang untuk meluncurkan perbaikan darurat, Google menyatakan bahwa perusahaan secara bertahap mulai mengurangi keinginan pengembang untuk mengakses non-SDK antarmuka. Dimulai dengan Android P, pembatasan akan diperluas hingga mencakup antarmuka bahasa Java pada SDK.

Perusahaan tersebut menyatakan bahwa "beberapa metode dan bidang non-SDK akan dibatasi", meskipun mereka tidak merinci metode dan bidang mana yang akan dibatasi. Awalnya pembatasan akan fokus pada antarmuka yang jarang digunakan, dan untuk sementara waktu perusahaan akan mengizinkannya pengembang untuk terus menggunakan metode dan kolom non-SDK yang secara teknis merupakan transisi ke metode SDK menantang. Namun, pada akhirnya pembatasan tersebut akan meluas, sehingga pengembang aplikasi yang menggunakan metode non-SDK harus melakukan transisi sesegera mungkin sebagai persiapan untuk Android P. Adapun metode tanpa alternatif SDK, Google meminta pengembang untuk mempostingnya pelacak bug dengan informasi lebih lanjut.

Pratinjau pengembang berikutnya, yang tampaknya akan segera hadir, akan memungkinkan pengembang menguji aplikasi yang ada terhadap daftar hitam atau daftar abu-abu sebelum rilis final.