Dalam artikel ini saya akan menceritakan tentang kesan saya pada konferensi Google I / O 2019, yang saya dan rekan saya kunjungi beberapa hari yang lalu (dan bahkan "menyala" dengan aplikasi kami di salah satu presentasi). Ini akan membantu Anda merasakan atmosfer, dan mungkin mendorong Anda untuk menonton beberapa laporan yang diposting di
saluran Google Developers .
Pengembang Badoo di Google I / O 2019Hari ke 0 Kata Pengantar
Untuk sampai ke konferensi, Anda harus memenangkan lotere, yang dimulai pada bulan Februari
di situs web Google I / O (biasanya ini diketahui dari berita). Tetapi kemenangan tidak menyediakan tiket, tetapi hanya memungkinkan untuk menebusnya dengan 1.150 dolar. Ada program lain yang memungkinkan Anda mendapatkan tiket dengan diskon besar atau gratis, misalnya,
Code Jam . Mahasiswa dan karyawan universitas dapat membeli tiket yang jauh lebih murah - seharga $ 375.
Sebelum konferensi, perusahaan IT mengadakan pesta untuk para peserta. Saya mengetahui tentang mereka dari obrolan di Telegram, yang mengumpulkan lebih dari 150 pengguna berbahasa Rusia. Biasanya, Anda dapat masuk ke obrolan ini dengan undangan dari komunitas Android khusus di Telegram. Pihak-pihak tersebut merupakan kesempatan yang baik untuk bertemu dengan peserta konferensi lainnya dalam suasana informal. Sebagai contoh, kami bertemu dengan penyelenggara Mobius dan tim pengembang yang membuat aplikasi untuk Aplikasi wisatawan udara di Udara.
Konferensi diadakan di bawah slogan "Tidak ada parkir". Google mengorganisasikan bus antar-jemput gratis ke dan dari hotel-hotel paling populer di kawasan itu, serta menyediakan kode promosi untuk layanan taksi Lyft (pesaing Uber di AS).
Ada lima pengembang dari Badoo. Ayo pergi semua orang yang memenangkan kesempatan untuk membeli tiket. Laporan berjalan dalam enam hingga sepuluh aliran, dan seringkali kami berpisah untuk membahas topik yang lebih menarik.
Hari 1
Hari pertama konferensi dibuka oleh para pembicara utama - presentasi umum. Yang pertama adalah untuk semua orang, yang kedua adalah untuk pengembang.
Sebelum keynote, man-DJ dan AI-DJ bekerja bersamaBerita terbaru
Pada keynote pertama, presentasi berbicara tentang berbagai proyek Google. Berikut ini beberapa berita:
- perusahaan terus mengembangkan Google Duplex - asisten robot yang dapat menelepon dan memesan waktu di meja penata rambut / restoran;
- Google Lens dapat menganalisis cek dan membagikan jumlah faktur dengan jumlah tip (tugas populer di AS);
- Google Assistant akan bekerja offline dan secara signifikan mengurangi ukurannya, dan pesan audio dalam pesan instan dan panggilan dapat dilihat sebagai teks di layar menggunakan Live Relay.
Di Android 10 akan muncul:
- lebih banyak kontrol orangtua;
- tema gelap;
- peningkatan dukungan untuk perangkat lipat;
- gerakan navigasi baru;
- peningkatan berbagi;
- Pengelompokan pemberitahuan baru berdasarkan prioritas.
Pada presentasi kepada pengembang, mereka mengumumkan bahwa Kotlin sekarang menjadi bahasa pemrograman utama untuk pengembangan Android. Google memperkenalkan perpustakaan baru untuk kamera Camera X, UI deklaratif Jetpack Compose baru (tampaknya, itu masih cukup kasar, tetapi sangat menjanjikan), fitur baru untuk memperbarui aplikasi: pengembang akan dapat meminta pembaruan sendiri di antarmuka aplikasi.
Teks dibuat secara real time selama setiap laporan.Tips melipat Google
Baru-baru ini, hanya orang malas yang tidak berbicara tentang perangkat lipat. Meskipun mereka sekarang menempati pangsa pasar yang sedikit, aplikasi pada mereka
entah bagaimana harus bekerja.
Perwakilan Google meyakinkan bahwa jika Anda mengikuti praktik terbaik, misalnya, menangani flip layar dengan benar, maka semuanya akan berjalan lancar. Untuk mendukung perangkat lipat, mekanisme yang sama digunakan untuk multi-windows di tablet dan Chrome OS. Selain android yang sudah ada: maxAspectRatio, android: minAspectRatio akan muncul untuk menambahkan pembatasan pada aspek rasio pihak yang didukung dalam aplikasi. Google mengklaim bahwa 2 inci (5,08 cm) akan menjadi lebar layar minimum perangkat Android yang dimulai dengan Android Q.
Beberapa hal untuk memeriksa apakah Anda menerapkan dukungan untuk perangkat lipat di aplikasi Anda saat menekuk dan membuka gulungan perangkat:
- aplikasi harus mengembalikan keadaan yang sama;
- posisi gulir harus dipertahankan;
- fokus keyboard harus tetap sama.
Jika Anda tidak ingin mengubah ukuran Activity, maka android: resizeableActivity = false flag mungkin tidak selalu membantu, karena sistem masih dapat mengubah ukuran Activity atau memasukkannya ke mode kompatibilitas:
Mode kompatibilitasTampaknya sekarang ada sangat sedikit pengguna dengan perangkat lipat, tetapi biaya gadget semacam itu cukup tinggi dan sudah pasti diperlukan untuk memeriksa bagaimana aplikasi bekerja pada mereka.
Tentang pro dan kontra multi-modularitas
Pada konferensi tersebut, banyak perhatian diberikan pada modularitas. Keuntungan utama multimodularitas:
- tes dapat dijalankan hanya untuk modul-modul yang entah bagaimana dipengaruhi oleh perubahan di cabang saat ini;
- Anda dapat mengisolasi pengujian berbagai fungsi aplikasi; misalnya, di Badoo kami memiliki aplikasi galeri yang berisi semua elemen UI; saat mengembangkannya, Anda dapat membangun aplikasi ini dengan cukup cepat, karena memiliki sejumlah dependensi (kolega saya membicarakan hal ini dalam laporan MBLT DEV );
- kemampuan untuk menambahkan fitur dinamis: menurut pembicara, 80% pengguna menggunakan 20% fungsi aplikasi, sehingga sebagian besar fungsi dapat dipindahkan ke modul dinamis dan diunduh nanti; kandidat yang baik adalah, misalnya, fitur untuk pengguna ahli, fitur yang harus Anda bayar, layar aplikasi Tentang; Pada saat yang sama, Onboarding tidak boleh dibuat fungsi dinamis, karena akan ditampilkan kepada semua pengguna aplikasi.
Selain itu, multi-modularitas cocok untuk sejumlah besar pengembang, yang merupakan keuntungan signifikan bagi tim besar dan berkembang cepat.
Multimodularity juga memiliki masalah. Misalnya, tidak jelas cara membuat database. Ada tiga pendekatan:
- buat satu database untuk seluruh aplikasi;
- buat database untuk setiap modul;
- buat satu database untuk beberapa modul yang dapat dihubungkan secara logis.
Semua pendekatan memiliki kelemahan, tetapi orang-orang dari Google menjanjikan masa depan yang cerah dengan Room, di mana mereka ingin mempertahankan isolasi modul dan mendukung pertanyaan lintas-modul, serta modul dengan fungsi dinamis. Sayangnya, ini belum tersedia.
Kami memiliki lebih dari 170 modul dalam aplikasi Badoo, kami belum menggunakan fitur dinamis, tetapi kami mendapatkan kelebihan
dan kekurangan multi-modul lainnya.
Hari 2
Hari kedua konferensi adalah yang paling penting. Laporan pertama dimulai pada pukul 8:30, dan yang terakhir berakhir pada pukul 20:00. Sebanyak 90 laporan telah diserahkan.
Penonton ini benar-benar dipenuhi dengan orang-orang dalam waktu sekitar sepuluh menit.UI deklaratif baru
Android sudah berusia sepuluh tahun, UI saat ini sudah usang secara moral. UI lama sulit dipertahankan. Misalnya, kelas View memiliki 29.188 baris kode, termasuk komentar, versi AppCompat telah ditumbuhi banyak peretasan untuk berbagai versi Android. Setelah melihat gambar ini, pengembang Google memutuskan untuk membuat kerangka UI yang akan datang dengan aplikasi dan akan sepenuhnya terlepas dari Android. Nama kerangka kerja tersebut adalah Jetpack Compose.
Flutter, React, Litho, dan Vue.js berfungsi sebagai inspirasi bagi pengembang, sehingga kerangka kerja baru akan terasa akrab bagi banyak orang. Gagasan utamanya adalah untuk memastikan bahwa UI merespons perubahan dalam model, sementara tidak ada logika di UI.
Hirarki tampilan direpresentasikan sebagai fungsi yang ditandai dengan penjelasan @Composable. Kerangka kerja menggunakan Plugin Compiler untuk mencegat panggilan ke fungsi komposable.
Tim Google berjanji untuk mendukung kerangka kerja baru dalam hierarki Tampilan lama (menggunakan anotasi @GenerateView), serta pratinjau langsung di Android Studio dan dukungan untuk animasi.
Jetpack Compose masih cukup mentah dan belum siap untuk digunakan dalam aplikasi dunia nyata, tetapi ada baiknya mempelajari prinsip-prinsip kerjanya sekarang untuk memahami ke mana arah pengembangan Android.
Merancang Aplikasi Augmented Reality
Google telah menyiapkan kiat untuk merancang aplikasi AR.
- Semua elemen antarmuka harus pada adegan AR, dan bukan pada perangkat, karena pengguna tidak memperhatikan perangkat ketika mereka bersemangat tentang AR.
- Hindari saat-saat ketika pengguna perlu mundur, karena ini dapat menyebabkan cedera pribadi.
- Jika pengalaman AR dibangun di kota, jangan lupakan bahayanya. Misalnya, Anda harus memperingatkan pengguna tentang mendekati penyeberangan pejalan kaki dan meminta untuk menurunkan perangkat.
- Pada adegan AR, objek harus berinteraksi dengan cahaya nyata, yaitu, bayangan harus berubah ketika cahaya berubah. ARCore menyediakan data pencahayaan untuk memungkinkannya menyorot objek virtual.
- Objek di AR harus memiliki properti yang mereka miliki dalam kenyataan. Misalnya, bola harus memantul ke lantai.
- Ketika pengguna memindahkan objek jauh, perlu untuk meningkatkan zona sentuh objek sehingga tetap memungkinkan untuk mengontrolnya dengan mudah.
- Pengembang perlu menjelaskan dengan jelas kepada pengguna bahwa aplikasi AR memerlukan akses ke kamera perangkat agar dapat berfungsi.
Informasi lebih lanjut tentang cara mendesain elemen AR dalam aplikasi dapat ditemukan dalam
video dari konferensi .
Praktik terbaik untuk menggunakan teks saat mengembangkan aplikasi Android
Laporan ini berbicara tentang praktik terbaik untuk bekerja dengan teks dan beberapa perubahan dalam versi Android yang baru.
- Android Q akan menonaktifkan tanda hubung secara default.
- PrecomputedTextCompat membantu Anda menghitung ukuran teks sebelum rendering. Perlu dicatat bahwa mengubah font dan parameter lain dari TextView setelah melewati parameter ke PrecomputedTextCompat tidak akan mungkin.
- Gaya yang berlaku untuk teks (dari prioritas tertinggi ke prioritas terendah):
- Rentang
- Lihat (misalnya, ditentukan oleh atribut dalam XML),
- Gaya
- Gaya bawaan
- Tema
- Penampilan Teks.
- Di Android, Anda dapat mengatur fallback untuk font menggunakan Typeface.CustomFallbackBuilder. Misalnya, jika beberapa font aplikasi tidak didukung dalam salah satu bahasa, maka Anda dapat menentukan yang lain sebagai alternatif, Anda juga dapat mengatur font untuk emoji. Aplikasi kami telah diterjemahkan ke lebih dari 40 bahasa, jadi penting bagi kami untuk memahami bagaimana tampilannya jika font utama tidak didukung di salah satu dari mereka.
- Gunakan android: imeOptions = "flagNoPersonalizedLearning" di EditText untuk mencegah menghafal kata-kata yang dimasukkan (misalnya, ketika memasukkan kode promosi).
- Jika Anda perlu menggunakan dua bahasa dalam suatu aplikasi, Anda dapat menggunakan setImeHintLocales untuk memberi sinyal pada keyboard bahwa Anda memerlukan bahasa yang berbeda. Ini dapat berguna untuk aplikasi kamus atau layanan pelatihan.
Dan satu lagi berita kecil. Dalam presentasi
GIF dan Lainnya: Mengintegrasikan Pencarian Ekspresi di Aplikasi Anda, Google mempresentasikan API mereka untuk bekerja dengan GIF -
Tenor , sebuah alternatif untuk Giphy yang telah lama dikenal. Kami adalah salah satu yang pertama menggunakannya di aplikasi Badoo kami, jadi kami membuka slide pembicara sebagai contoh penggunaan. Agak, tapi bagus!
Aplikasi kami "menyala" dalam presentasi TenorKonser
Di akhir hari kedua, Google menyelenggarakan konser di mana The Flaming Lips tampil. Sejujurnya, saya belum pernah mendengar tentang dia sebelumnya, tetapi, ternyata, dia cukup populer di AS. Sebuah
fragmen kecil pidato tersedia di Internet.
Sebelum konserHari ke 3
Hari ketiga pendek. Pada 16:30 semua laporan diserahkan, dan dengan akhir laporan konferensi berakhir. Sebagian besar pada hari ini saya berbicara dengan peserta lain, tetapi saya akan memberi tahu Anda tentang beberapa laporan yang perlu diperhatikan.
Ada area komunikasi di konferensi di mana tidak direkomendasikan untuk menggunakan peralatanPrinsip Animasi
Dalam laporannya,
Nik Butcher berbicara tentang bagaimana menerapkan animasi di era reaktivitas untuk meningkatkan pengalaman pengguna. Masalahnya adalah bahwa dalam aplikasi reaktif, objek View tidak memiliki status, dan animasi, sebaliknya, memiliki status.
Animasi yang baik harus memenuhi tiga kriteria:
- restartability (reentrant): animasi dapat dibatalkan dan mulai lagi;
- kontinuitas: animasi tidak boleh melompat dari satu negara ke negara lain;
- kelancaran: animasi harus mengubah kecepatan / arah gerakan secara bertahap.
Cara mencapai ini:
- saat memulai animasi, atur hanya nilai akhir (di mana seharusnya diakhiri); pada nilai awal yang diberikan, animasi dapat melompat dari satu keadaan ke keadaan lain, ini bisa terjadi jika dimulai dengan menekan tombol dan pengguna mengkliknya beberapa kali;
- batalkan animasi lama sebelum memulai yang baru (kadang-kadang sudah diterapkan di dalam Android SDK; misalnya, ViewPropertyAnimator, yang diperoleh dari View # animate, membatalkan animasi sebelumnya untuk properti animasi);
- gunakan Animasi Musim Semi ; animasi tersebut bergerak dengan mempertimbangkan hukum fisika, yang berarti bahwa kelancaran dan kontinuitas dicapai lebih mudah, yaitu, jika suatu benda bergerak dari titik A ke titik B dan perintah tiba untuk pindah ke titik C, maka dalam kasus menggunakan Animasi Musim Semi, objek tersebut akan dengan lancar mengubah arah gerakan;
- gunakan <animated-selector> untuk menambahkan animasi ke Drawable; Untuk menghindari transisi di antara semua kondisi yang memungkinkan, Anda dapat memasukkan kondisi antara (misalnya, kondisi boot) dan melewatinya.
Tetapi lebih baik untuk melihat sekali daripada
mendengar seratus kali
untuk membaca, jadi di sini adalah
video dengan laporan.
Pengujian kinerja
Perpustakaan untuk mengukur kinerja aplikasi sekarang dalam kondisi alfa sebagai bagian dari Jetpack. Ini memungkinkan Anda untuk mengambil pengukuran kinerja kode dan menghindari banyak kesalahan pengukuran, ada juga integrasi dengan Android Studio.
Hal yang perlu diingat ketika menulis dan menjalankan tes kinerja menggunakan
Jetpack Benchmark Library :
- tidak dapat diandalkan untuk mengumpulkan pengukuran pada emulator, peringatan saat startup dengan ramah akan memberi tahu Anda tentang ini;
- ProGuard / R8 harus dihidupkan untuk mengukur kinerja dengan benar;
- perangkat harus memiliki tingkat pengisian daya baterai yang memadai sehingga tingkat pengisian daya yang rendah tidak mempengaruhi hasil pengukuran;
- modul di mana tes kinerja ditulis harus dengan parameter "debuggable = false";
- jangan membandingkan hasil pengukuran pada perangkat yang berbeda, mereka dapat sangat bervariasi.
Kesimpulan
Tim Badoo dan Pengembang GoogleGoogle I / O jelas patut dikunjungi. Dalam suasana seperti itu, sambil minum teh, Anda dapat mendengar banyak cerita menarik dan belajar tentang solusi teknik yang menarik. Misalnya, tentang bagaimana orang-orang dari VKontakte datang dengan tema gelap dan menggulungnya ke pengguna yang bertanya: "Di mana tema gelap?", Bagaimana di sisi lain pengembang Bumi dari Tinder melawan konten spam dan porno dan bagaimana penerapan aplikasi dalam tim Air pendaftaran otomatis untuk perjalanan udara. Anda juga dapat menangkap perwakilan Google yang menciptakan alat yang kami gunakan dan mengajukan pertanyaan.
Secara umum, konferensi tingkat ini tidak hanya sekelompok laporan, tetapi juga banyak orang menarik yang dapat Anda ajak bertukar pengalaman.