Android Jetpack: mengubah aplikasi menjadi roket

Perang ... Perang tidak pernah berubah. Jadi, perang untuk kode yang indah dan bekerja sedang berlangsung. Dan untuk setiap tugas sulit, senjatanya sendiri lahir: seseorang membuatnya untuk dirinya sendiri, dan seseorang menggunakan alat yang sudah jadi. Pengembangan Android tidak terkecuali. Pada konferensi AppsConf 2018 kami, kami akan membahas bagaimana dan apa yang paling menarik untuk digunakan sekarang, di mana Anda dapat tersandung dan yang menarik adalah gudang besar alat pengembangan yang akhirnya Google mulai letakkan. Topik utama laporan dapat dilihat di situs web kami, tetapi untuk saat ini kami meminta Pakar Pengembang Google Denis Neklyudov dan Alexander Smirnov untuk berbicara tentang perangkat Android Jetpack baru, yang diperkenalkan pada Mei tahun ini.



Alexander Smirnov, salah satu pendiri dan CTO di PapaJobs, pendiri komunitas pengembang Android MOSDROID, blog video terkemuka Android in Faces.
Denis Neklyudov, GDE pertama di Rusia, bekerja di Singapura pada 90seconds.tv, pemimpin pusat podcast AndroidDev, pembicara dari berbagai konferensi dan penulis beberapa kursus pengembangan.

Android Jetpack diperkenalkan Mei ini di Google I / O.
Apa yang Anda harapkan dari konferensi itu? Apakah harapan Anda menjadi kenyataan?

Alexander Smirnov : Harapan saya jauh lebih sedikit dari yang saya bayangkan. Tampaknya tidak perlu mengembangkan platform dari sudut pandang bisnis. Di segmen seluler, Google meraih kemenangan besar di 87% pasar dengan tren positif, dan selama beberapa tahun terakhir ML telah terlihat sebagai area kerja utama mereka. Saya menunggu kemajuan Desain Material, penambahan alat-ML untuk pengembang, rilis Constraint Layout 2.0. Tapi kami melihat langkah besar dalam menertibkan dan mendukung pengembang. Tiba-tiba senang dengan item baru di AJP dan awal perjuangan untuk meningkatkan Dukungan. Hai, Android X.

Denis Neklyudov : Saya berpegang pada aturan utama perjalanan ke konferensi kelontong: jangan menunggu pengumuman, perubahan revolusioner, hadiah - hanya bertemu teman-teman lama. Kalau saja mereka tidak merusak apa pun. Tapi tidak, mereka memperkenalkan Android X, migrasi yang bukan proses paling menyenangkan dalam proyek-proyek besar. Tetapi ada banyak hal positif. Hal paling berharga tentang Google I / O adalah komunikasi dengan pengembang kerangka kerja dan kolega di bengkel.

Item baru apa yang sudah dipraktikkan?

Denis Neklyudov : Dari AJP kami menguji hanya migrasi ke Android X. Saya punya satu set solusi yang terbukti dalam proyek ini, saya tidak punya keinginan untuk terburu-buru dan memperkenalkan komponen baru. Mereka hanya mendukung Target SDK 28, memeriksa rilis Android Pie baru-baru ini dan tenang. Kami sedang menunggu perbaikan yang dijanjikan agar pengujian tersedia. Jetpack sekarang - ini adalah berbagai perpustakaan kecil yang berkumpul di satu tempat, yang terkadang membuat kehidupan pengembang sedikit lebih mudah dan lebih menyenangkan. Sebagian besar produk baru belum siap untuk versi rilis aplikasi.

Alexander Smirnov :
Dari hal-hal baru yang disajikan, saya mencoba segalanya, tetapi dalam produksi kami hanya memperbarui aplikasi ke Desain Material baru dan menerapkan KTX Android, yang kami sukai karena kesederhanaan dan kenyamanannya. Saya suka menutup banyak kode dalam beberapa baris. Kami membuang sisanya ke dalam pipa dan melanjutkan tahun ini.

Jetpack akan berhasil menyelesaikan tugas dan Anda akan menikmati menggunakannya. Tapi ya, beberapa bagian masih dalam alpha, jadi pada tahap pengembangan masalah kecil bisa keluar. Ini normal. Saya tidak akan merekomendasikan menyeret alat produksi dalam kondisi alfa, tetapi dengan Kotlin yang sama itu tidak menghentikan saya.

Untuk Android, pertanyaan tentang navigasi yang nyaman selalu menjadi masalah akut.
Apakah ada yang berubah dengan AJP?

Denis Neklyudov : Di Android, navigasi selalu kuat dan beragam: Activity, Fragment, Anda masih perlu memproses DeepLinks dan memonitor argumen yang diterima. Anda dapat dengan mudah menjadi bingung di peta layar besar. Google hanya mencoba menyelesaikan ini dengan Navigasi baru, yang bahkan dibangun ke dalam Android Studio dengan reaktor hierarki layarnya sendiri.

Saya menggunakan solusi buatan yang memenuhi persyaratan dan keseluruhan arsitektur proyek. Sementara Navigasi memiliki bug serius dan tidak siap untuk digunakan dalam aplikasi yang diterbitkan.

Alexander Smirnov : Di Jetpack, Google mengambil langkah serius ke depan: Navigasi muncul, yang akan mengubah arsitektur aplikasi menjadi lebih baik. Dalam aplikasi besar, navigasi bisa menjadi sangat rumit sehingga mengingat semua opsi transisi tidak realistis. Dan mereka masih perlu diprogram dan diuji. Ada beberapa alternatif yang mencoba menyelesaikan ini: Cicerone, Flow, Conductor. Tak satu pun dari mereka yang begitu fungsional.

Pertama-tama, perlu dicatat Editor Navigasi: lebih nyaman untuk membangun diagram transisi grafis dengannya, dan senang untuk mengendalikannya dengan mouse. Diimplementasikan pemrosesan DeepLinks yang nyaman dengan dukungan untuk memainkan seluruh pohon transisi. Komponen Navigasi membagi pekerjaan dengan DeepLinks menjadi dua kasus: Eksplisit dan Implisit. Yang pertama kita dapat membuat diri kita melalui DSL yang nyaman dan memanggil sebagai PendingIntent melalui tindakan tertentu. Yang kedua adalah DeepLinks yang kita kenal, misalnya, dari browser. Mereka dibuat dan dipanggil dengan cara yang berbeda, tetapi mereka diproses secara identik menggunakan grafik navigasi dan dukungan penuh untuk membangun tumpukan untuk membuka bagian yang diperlukan. Memproses DeepLinks tidak pernah semudah ini.

Perpustakaan Paging telah ditambahkan ke AJP. Bagaimana dia mengubah pekerjaan dengan RecyclerView?

Denis Neklyudov : RecyclerView selalu memiliki kekurangan: Anda harus menghabiskan banyak waktu untuk solusi yang menyediakan pemuatan halaman-demi-halaman di kedua arah, dan bahkan dengan kemampuan untuk melompat ke bagian berbeda dari daftar tanpa akhir ini. Di Paging Library, Google memperkenalkan solusi untuk masalah ini.

Alexander Smirnov : Perpustakaan mengulangi rutinitas kebanyakan pengembang Android - bekerja dengan daftar. Untuk mempercepat tampilan kumpulan data besar, kita semua memecahnya menjadi beberapa halaman dan bekerja dengannya. Menggunakan Paging Library, jenis pekerjaan ini menjadi sederhana, karena kita mendapatkan implementasi di luar kotak. Selain itu, komponen dapat bekerja memuat data dari beberapa sumber dan mencampurnya. Kami juga mendapatkan ide menarik dengan Placeholder, ketika pada saat pemuatan data tambahan Anda dapat menampilkan bertopik indah alih-alih pemintal abadi. Selain itu, fitur kill telah ditambahkan untuk bekerja dengan snapshot atau data yang tidak stabil - komponen itu sendiri dapat memahami apa yang telah diubah dan elemen mana yang perlu dibuang ke tengah daftar dan mana yang ke atas.

Faktanya, komponen ini diciptakan untuk bekerja bersama dengan RecyclerView, tetapi Paging Library terdiri dari dua bagian utama: PagedList dan PagedListAdapter. Sebenarnya, menggunakan PagedList, Anda dapat bekerja dengan bagian-bagian ini, unduh dari beberapa sumber.

Salah satu produk baru adalah Workmanager. Bagaimana dia mengubah pekerjaannya dengan tugas latar belakang?

Alexander Smirnov : Ini membantu untuk secara sistematis pindah dari layanan mahakuasa ke API yang nyaman di Jetpack: ini memungkinkan Anda untuk menambahkan kebutuhan untuk memenuhi kondisi lingkungan untuk memulai tugas, untuk mengatur urutan tugas dan rantai. Anda dapat mentransfer data ke tugas yang dapat dieksekusi dan mendapatkan hasilnya. Ini memiliki tiga keuntungan besar: Anda tidak perlu Google Play di perangkat Anda, Anda dapat menjalankan tugas hanya dalam kondisi tertentu, Anda dapat membuat rantai tugas.

Tidak ada analog sebelumnya yang mandiri, sehingga ada perpustakaan seperti Android-Job dari Evernote, yang menggunakan semua analog sekaligus. Setelah kemunculan WorkManager, kebutuhan mereka menghilang.

Denis Neklyudov : Google mendapat bungkus besar atas semua solusi yang ada untuk bekerja dengan tugas-tugas latar belakang. Karena tugas yang ditangguhkan tidak dapat diselesaikan di Layanan, pengembang dihadapkan dengan rilis Android Marshmallow dan kedatangan Mode Doze. Sekarang aplikasi tidak dapat melakukan apapun yang diinginkan. Dan dengan setiap versi pembatasan seperti itu semakin banyak. Bahkan dengan Lollipop, kami memiliki JobScheduler tersedia, yang meluncurkan tugas latar belakang dalam kondisi tertentu dan dengan persetujuan sistem, tetapi ia memiliki bug pada versi sebelumnya dan tidak jelas cara bekerja dengannya dalam versi Android di mana tidak ada. Untuk melakukan ini, pembungkus dibuat dalam bentuk manajer jaringan GCM dan ditulis ulang lagi sebagai Firebase Job Dispatcher. Tetapi mereka ternyata tidak sempurna - itu adalah kelahiran WorkManager pengganti modern mereka, yang mengambil tugas melakukan tugas-tugas latar belakang pada setiap versi Android tanpa bug.

AJP telah menambahkan fitur baru - Irisan. Apa yang menarik tentangnya?

Alexander Smirnov : Pertama-tama, Irisan harus ditunjukkan kepada produk dan pemasar Anda. Mereka memungkinkan pengguna untuk melihat aplikasi Anda lebih sering dan menggunakan bagian yang diperlukan lebih cepat: langsung ke bagian yang diinginkan, beralih fitur yang diperlukan. Irisan juga memungkinkan Anda untuk berpartisipasi dalam aplikasi Anda di antara hasil pencarian di Google Search, dan juga akan dapat diintegrasikan ke dalam Google Assistant di masa depan.

Dalam Irisan, Anda dapat menampilkan fungsi yang terkait dengan jenis aplikasi Anda dan kemampuannya. Tiga kelompok dapat dibedakan: navigasi, pelaksanaan tugas, dan kembali ke data. Secara umum, dari pengguna Iris mendapatkan interaksi yang lebih sederhana dan lebih cepat, pengembang mendapatkan lebih banyak lalu lintas dan peluang untuk mengembalikan pengguna ke aplikasi.

Denis Neklyudov : Akui saja, Anda sudah lama tidak memiliki kemampuan untuk menerima informasi dari aplikasi dalam aplikasi dengan elemen interaktif langsung dari pencarian. Irisan hanya memecahkan masalah seperti itu, memungkinkan aplikasi untuk mendeklarasikan UI dan tindakan dengannya, yang akan dibangun ke dalam aplikasi pihak ketiga, termasuk pencarian. Saya benar-benar menantikan ketika berita di Google Assistant di smartphone akan disematkan dari Feedly, foto-foto dari masa lalu dari Timehop, penerbangan saya dari App in the Air, rute untuk bekerja "Y. Navigator", dll.

Untuk pemilik aplikasi, ini adalah peluang besar untuk meningkatkan frekuensi penggunaan layanan mereka, juga akan menjadi lebih nyaman bagi pengguna untuk berpindah trek di Spotify tanpa meninggalkan simulator balap baru.

Dan apa saja batasannya?

Alexander Smirnov : Irisan masih sangat dipangkas oleh templat: banyak aplikasi yang tertanam dalam yang lain dan pengguna perlu memahami bahwa mekanisme interaksi akan berbeda. Untuk fleksibilitas, Anda selalu harus membayar. Jika Anda ingat Widget, itu juga sangat terbatas. Perluasan fungsional, tentu saja, akan, tetapi saya tidak berpikir bahwa sesuatu yang besar harus diharapkan dari ini.

Denis Neklyudov : Saya setuju, sekarang Slices API terbatas pada sekumpulan templat tertentu yang mungkin dapat disematkan dalam aplikasi pihak ketiga, tetapi templat baru juga akan muncul dengan versi baru. Pengembang secara khusus melarang antarmuka khusus untuk dapat mengontrol bagaimana irisan terlihat di aplikasi yang disematkan, dan agar semuanya konsisten.

Google telah menambahkan pustaka KTX ke AJP. Apa kesan Anda padanya?

Alexander Smirnov : Alat yang hebat, ini adalah persis apa yang hilang untuk waktu yang sangat lama. KTX adalah serangkaian ekstensi untuk penggunaan API Android yang lebih menyenangkan dalam tugas sehari-hari.

Saya sangat merekomendasikan beralih ke semua pengembang Android untuk meningkatkan produktivitas. Ini memberikan kenyamanan, kecepatan dan suasana hati yang baik saat berkembang. Dengan KTX, Anda bahkan dapat menutup boilerplate dan mendapatkan kode yang rapi dan mudah dibaca.

Tetapi Anda perlu mempelajari ekstensi yang disediakan KTX dengan hati-hati, dan melihat kode sumber ekstensi ini untuk memahami apa yang terjadi di bawah tenda. Dan karena tidak ada lagi jebakan, Anda dapat dengan aman melakukan pertempuran.

Denis Neklyudov : Pengembang AJP mengambil keputusan yang tepat: kerangka kerja harus lebih bersahabat dengan Kotlin. Jadi proyek dengan serangkaian fungsi statis lahir, memperluas sintaksis kerangka kerja. Kotlin memiliki banyak fitur bahasa yang nyaman, dan hanya fungsi ekstensi memungkinkan Anda untuk mengakses kelas kerangka kerja dengan cara yang nyaman. Misalnya, view.isVisible datang sebagai alternatif singkat untuk view.getVisibility () == View.Visible.

Ada banyak fungsi yang berbeda, lebih baik dilihat sendiri . Tentu saja, Anda dapat hidup tanpa mereka, seperti, memang, tanpa Kotlin. Tapi ini lebih menyenangkan.

Google semakin mempromosikan Kotlin. Bagaimana perasaan Anda tentang ini?
Apa prospeknya?

Alexander Smirnov : Saya memiliki sikap yang sangat positif terhadap Kotlin dan sejak Januari 2016 saya telah menggunakannya sebagai bahasa pengembangan utama untuk Android. Selama waktu ini, ia berpartisipasi dalam migrasi tiga perusahaan dari Jawa ke Kotlin. Java, sayangnya, berkembang cukup lambat, dan Kotlin untuk pengembangan ponsel menghirup udara segar.

Saat Kotlin menjadi bahasa pengembangan utama untuk Android adalah masalah waktu. Pengembang Android sudah muncul, di mana Kotlin adalah bahasa pengembangan pertama, dan Java adalah sesuatu yang asing. Kami memiliki masa depan yang menyenangkan dengan Kotlin, setidaknya sampai Google memutuskan untuk membangun OS baru, sehingga untuk Android yang lebih baik. Tetapi ini adalah masalah masa depan yang jauh, yang bukan fakta tentang apa yang akan datang.

Denis Neklyudov : Saya tidak bisa mengatakan bahwa Google secara aktif mempromosikan Kotlin, alih-alih, beberapa proyek yang terkait dengan kerangka itu sendiri menjadi ramah terhadap Kotlin. Ini tidak berarti sama sekali bahwa pada tahun 2018, pengembang Java untuk Android adalah semacam pengkhianat atau perwakilan dari minoritas. Tetapi fakta bahwa Kotlin menjadi semakin percaya diri dan lebih cepat menjadi bahasa default untuk pengembang, dan ini adalah kabar baik.

Ketika Anda mendengar tentang Flutter, kerangka kerja lintas platform untuk aplikasi seluler Google, Kotlin Native segera menggema, yang mengkompilasi untuk Android dan iOS. Banyak yang menunggu untuk menjadi bahasa untuk segalanya: Android, iOS, Web, Embeded ... Paket JetBrains adalah Napoleon. Kami mengamati laporan bug, uji beta dan menikmati bahasa yang menyenangkan di mana kami berhasil memigrasi proyek kami dengan sedikit rasa sakit.

Sudah lebih dari tiga bulan sejak rilis Android AJP. Bagaimana dia menunjukkan dirinya?

Alexander Smirnov : Menggunakan AJP, Google berencana untuk membantu pengembang Android membuat aplikasi berkualitas tinggi lebih cepat dan tanpa solusi tambahan di kebun binatang. Dan sebagai bonus, mereka memudahkan pemula untuk memasuki pengembangan Android. Saya pikir Jetpack mengatasi tugas itu.

Hasilnya adalah set keren yang menyelesaikan tugas sebagian besar pengembang. Tetapi kita dapat memastikan dengan pasti dalam waktu sekitar 6-12 bulan, ketika kita sampai pada rilis sebagian besar inovasi. Sejauh ini, ini telah menghentikan banyak cara mereka untuk mulai menggunakan AJP dalam produksi.

Denis Neklyudov : Google tidak melakukan AJP dari awal, tetapi mengumpulkan banyak hal berguna yang bukan bagian dari kerangka kerja itu sendiri dan dikemas ke dalam aplikasi oleh pengembang mereka. Merupakan ide bagus untuk menggabungkan semuanya di bawah satu nama yang modis dan bersemangat. Baik bagi pengembang bahwa sekarang ada satu sumber daya tempat Anda dapat menemukan solusi resmi untuk banyak masalah. Setidaknya itu nyaman.

Tentu saja, tidak semua yang termasuk dalam set ini siap digunakan dalam aplikasi serius, ada sesuatu yang masih dalam tahap pengembangan aktif dan debugging. Dari kerangka itu sendiri, ada perasaan gigih dari versi beta, saya benar-benar tidak akan memberi tekanan pada pasien dan mendiskusikan IDE. Tapi kami sudah terbiasa dengan Android.

Dalam daftar pustaka dan solusi ini, semua orang akan menemukan sesuatu yang berguna untuk diri mereka sendiri. Dan untuk pemula, ini adalah sumber yang benar-benar wajib untuk sosialisasi, sehingga mereka tidak menginjak penggaruk yang terkenal, tetapi pertama-tama cobalah cara yang kurang lebih resmi untuk menyelesaikan masalah mereka.

Bagaimana prospek pengembangan AJP? Apa yang bisa baru tahun depan?

Alexander Smirnov : Sekarang kita memiliki banyak perkembangan baru, oleh karena itu, pertama-tama, mereka perlu diselesaikan dan distabilkan. Maka saya akan mengharapkan pengembangan sistematis masing-masing komponen dan alat, mungkin sedikit tambahan dari sesuatu yang baru. Jetpack adalah langkah maju, jadi mulai tahun depan saya mengharapkan peningkatan sistematis, tetapi setelah satu tahun lagi bisa sangat menarik. Apa yang benar-benar layak untuk ditunggu tahun depan adalah integrasi yang lebih padat dan nyaman dengan Android Studio.

Denis Neklyudov : AJP akan berkembang dengan setiap tugas baru yang diselesaikan, yang dikeluarkan dalam domain publik. Dengan setiap versi Android, kerangka kerja Jetpack juga akan dikembangkan dalam bentuk AppCompat dan Komponen Bahan. Apa yang akan muncul dalam waktu dekat ini sulit dikatakan, saya sedang menunggu Nitrogen ditambahkan - paket utilitas untuk menguji aplikasi dalam skala besar.

Secara global, Google terus mengembangkan kemampuan peramban, apa yang dapat menyebabkan hal ini di masa depan?

Denis Neklyudov : Saya terus mengulangi bahwa tidak perlu menganggap beberapa langkah Google sebagai sesuatu yang global dan terpusat. Jika tim Chrome memiliki sumber daya yang cukup untuk mengembangkan AMP, PWA, dan sekarang juga WebAssembly, ini tidak berarti bahwa ada konspirasi untuk mengambil dan mentransfer semua orang ke web dengan 202 .... Seperti pengembangan Flutter, itu tidak berarti bahwa kita semua akan menggunakan kerangka kerja ini, dan kemudian Android akan ditakdirkan untuk mati, karena pertama ChromeOS, dan kemudian Fuchsia akan mengambil alih semua perangkat pengguna. Musim panas ini, Jake Wharton berbicara di Droidcon Berlin tentang bagaimana batas antara web dan aplikasi asli menjadi kabur. Dapat disimpulkan dari laporan bahwa dalam situasi saat ini perlu untuk mendukung semua platform secara terpisah dan mencoba menggunakan kembali kode di antara mereka. Namun, jika Anda percaya bahwa Internet bisa sangat cepat, stabil, dan murah di seluruh dunia, maka mungkin aplikasi web memiliki peluang untuk mendominasi. Namun sejauh ini sulit dipercaya.

Alexander Smirnov : Transisi dari aplikasi asli ke Progressive Web Apps adalah impian jutaan pengembang web, manajer produk, dan sejumlah besar orang lain. Memilih aplikasi PWA alih-alih ponsel, perusahaan menyederhanakan pengembangan, penggunaan, pembaruan, dan menarik pengguna. PWA adalah solusi yang baik untuk sebagian besar aplikasi mobile sederhana, dan kami tidak akan dapat sepenuhnya meninggalkan pengembangan asli dalam waktu dekat.

Nah, siapa yang peduli untuk mendengarkan berita dari dunia pengembangan Android secara langsung, untuk mengetahui banyak hal menarik tentang rencana berbahaya terbaru Google Enclave, untuk mengobrol dengan para ahli secara langsung, kami sedang menunggu di konferensi AppsConf 2018 kami.

Bagi mereka yang lebih suka mempelajari segala sesuatu di rumah, kami memiliki saluran YouTube tempat video AppsConf akan diunggah (beberapa bulan setelah konferensi).

Dan pengumuman semua acara dan materi yang bermanfaat, termasuk konferensi di masa depan, pengumuman laporan terbaik, undangan rapat, laporan dekripsi dan artikel bermanfaat, kami publikasikan di milis kami.

Source: https://habr.com/ru/post/id421665/


All Articles