Kiat untuk Mengembangkan Aplikasi Android: Pelajaran Saya

Diterbitkan: 2022-03-11

Hai! Saya Ivan dan saya sudah cukup lama menjadi pengembang aplikasi Android. Atau begitulah tampaknya. Kembali pada hari itu (kita berbicara tentang 2009), Android masih bayi dan saya menyaksikan Little Green Man tumbuh sejak saat itu. Saya khawatir beberapa waktu lalu, Android berhasil melampaui saya.

Saat ini, Android tidak hanya ada di puluhan ribu ponsel dan tablet yang berbeda. Itu ada di pergelangan tangan Anda, di ruang tamu Anda, di mobil Anda, dan segera setelah kita mulai menetapkan alamat IP ke benda mati, itu akan ada di mana-mana di sekitar kita. Banyak hal yang bahkan bisa dicakup oleh pengembang Android berpengalaman!

Juga ada lebih dari satu juta aplikasi hanya di Google Play, tidak termasuk Amazon AppStore atau pasar yang umumnya tidak kita minati, seperti China. Jangan lupakan banyak perusahaan pengembang aplikasi seluler yang menghasilkan miliaran pendapatan setiap tahun.

Jadi, bagaimana pengembang independen dapat membuat aplikasi yang sukses di pasar yang besar ini dengan pemain besar? Saya tidak tahu, saya belum membuat aplikasi yang sukses! Tapi, saya telah membuat yang lucu, dan saya ingin berbagi cerita dengan Anda.

Pelajaran 1: Hubungkan Titik-titik

Sukses (biasanya) tidak terjadi dalam semalam dan ini bukan aplikasi pertama saya. Saya memiliki yang mulai dari pengembangan akhir pekan yang tidak terduga seperti Kalender Ortodoks Makedonia , dengan lebih dari 30.000 pengguna dalam bahasa yang tidak dapat dipahami oleh lebih dari 4 juta orang, hingga kegagalan yang lebih sukses seperti TweetsPie , aplikasi dengan liputan media yang luas dan basis pengguna yang mengerikan dengan lebih dari 600 pengguna aktif. Banyak pelajaran disana!

Sementara aplikasi ini membantu saya memahami pikiran "makhluk sulit dipahami yang disebut Pengguna" sedikit lebih baik, yang mengilhami saya adalah proyek dua jam. Awalnya dikembangkan untuk menjadikan saya seorang jutawan, setelah 1.428.571 pengguna membeli aplikasi karena Google mengambil 30 sen dari setiap dolar, The Dollar App dibuat untuk menguji akun pedagang saya.

Sedikit yang saya tahu bahwa bertahun-tahun kemudian saya akan menerima email dari seorang ibu yang bahagia yang menyatakan bahwa itu adalah dolar terbaik yang pernah dia habiskan sejak putranya tersenyum setiap kali aplikasi saya memeluknya.

Pengembangan aplikasi Android untuk pemula bisa menjadi sederhana dan menyenangkan jika diskalakan secara efektif.

Dan begitulah ide lahir! Mengapa tidak menggunakan kebutuhan dasar manusia akan pelukan dan membuatnya cantik? Buat untuk audiens tertentu, interaktif, menantang, menyenangkan untuk digunakan, dan bahkan lebih menyenangkan untuk dibagikan.

Pelajaran 2: Memahami Pasar Android

Semua hal yang saya sebutkan di atas ditambahkan ke aplikasi wallpaper hidup. Dasar-dasarnya tidak terlalu sulit ditebak. Android memiliki pangsa pasar yang lebih besar daripada iOS, tetapi pengguna iOS membeli lebih banyak. Aplikasi perpesanan sangat populer, tetapi game freemium mendapatkan penghasilan tertinggi. Cina, India, Brasil, dan Rusia adalah pasar negara berkembang, tetapi tidak memiliki kebiasaan belanja. Anda dapat membaca App Annie Index untuk wawasan lebih lanjut.

Jadi bagaimana aplikasi wallpaper hidup cocok dengan ini? Pertama-tama, ini menghilangkan sebagian besar platform karena wallpaper hidup adalah hal Android. Kedua, fitur ini ditambahkan di Android 2.1 sehingga memiliki komunitas yang besar dan beberapa contoh yang bagus. Terutama Paperland dan Muzei open source Roman Nurik, mungkin titik referensi terbaik untuk pengembangan Android.

Meskipun ada banyak wallpaper hidup di luar sana, kebanyakan dari mereka termasuk dalam kategori pemandangan/cuaca, dan sangat sedikit yang termasuk dalam kategori kelucuan yang berlebihan . Ini adalah sesuatu yang ingin kami ubah dan menawarkan sesuatu yang memberi Anda senyuman setiap kali Anda membuka kunci ponsel, meskipun Anda membukanya untuk alasan yang sama sekali berbeda. Kami memberi Anda seikat kecil kegembiraan untuk memeluk Anda sebelum Anda pergi tidur di malam hari, atau ketika Anda mematikan alarm di pagi hari. Dan lebih baik lagi, buatlah menjadi pribadi dan dapat disesuaikan.

Tanpa basa-basi lagi, dan sebelum kita masuk ke detail teknis, saya dengan bangga mempersembahkan kepada Anda: Ooshies - Wallpaper Animasi

Ooshies adalah nama aplikasi Android saya. Ini mungkin tidak berhasil tetapi membantu saya mempelajari pelajaran yang diperlukan untuk menulis panduan ini untuk pengembang Android pemula.

Ini fitur:

  • aplikasi wallpaper hidup gratis yang memberi Anda pelukan
  • 12 ooshies unik untuk dipilih
  • konten gratis, tidak dapat dikunci, dan dapat dibeli
  • pembaruan cuaca saat ini
  • login sosial dan sinkronisasi data
  • salam musiman
  • banyak kejutan
  • kucing ninja
  • apakah kita menyebutkan pelukan?

Aplikasi Android yang sukses terkadang hanya membuat Anda tersenyum.

Pelajaran 3: Cobalah Mewujudkannya

Ooshies sepertinya ide aplikasi Android yang cukup sederhana. Lukis latar belakang, lapisi beberapa awan dan bintang, letakkan beruang dengan balon di atasnya, dan Anda siap melakukannya. Tapi tidak, ini Android! Apa yang tampak mudah seringkali cukup sulit dan kita cenderung mengulangi kesalahan umum yang sama berulang-ulang. Berikut ini ikhtisar singkat dari tantangan yang saya hadapi:

  1. Akselerasi perangkat keras - mengapa menggambar menggunakan CPU saat GPU jauh lebih baik? Nah, ternyata menggambar bitmap di kanvas tidak bisa diakselerasi secara hardware. Setidaknya tidak untuk saat ini.

  2. OpenGL - jika kita menginginkan akselerasi perangkat keras, kita perlu menggunakan OpenGL ES atau bahkan kerangka kerja yang lebih baik yang melakukan sebagian besar pekerjaan untuk kita.

  3. Pemuatan bitmap - masalah konsumsi memori yang terkenal. Kita perlu mengalokasikan 1 byte [0-255] memori, untuk setiap saluran di #ARGB, untuk menampilkan satu piksel. Juga gambar yang kami gunakan sering kali memiliki resolusi yang lebih tinggi daripada tampilan perangkat. Memuat semuanya akan dengan cepat menghasilkan OutOfMemroyException.

  4. Peluncur rumah - wallpaper hidup akan di-host dalam proses peluncur rumah, dan peluncur yang berbeda cenderung memberikan panggilan balik yang berbeda ke layanan wallpaper hidup (terutama Nova dan TouchWiz).

  5. Masa pakai baterai - jika tidak dilakukan dengan benar, wallpaper hidup dan widget dapat menghabiskan banyak baterai. Dengan semua desas-desus tentang masa pakai baterai Lollipop (Android 5.0) yang buruk, aplikasi pertama yang digunakan adalah wallpaper hidup.

Jadi, melapisi bitmap, melukisnya di atas kanvas, dan kemudian mengganti bingkai dengan sentuhan untuk memberikan pelukan, sepertinya bukan masalah besar, bahkan jika itu dilakukan pada CPU, bukan? Itu benar, itu tidak masalah. Tapi, siapa yang mau wallpaper hidup statis? Itu mengalahkan tujuannya. Wallpaper harus merespons sentuhan Anda, itu harus bergerak saat Anda menggulir layar beranda Anda, itu harus melakukan tindakan kebaikan secara acak dan membuat Anda merasa bahagia.

Dan ada trik pengembangan Android untuk itu. Ada istilah yang disebut efek paralaks untuk menambah kedalaman pada ruang 2 dimensi. Bayangkan diri Anda mengendarai mobil. Rumah yang lebih dekat dengan Anda bergerak lebih cepat daripada gunung di kejauhan. Efek yang sama dapat dicapai dengan memindahkan objek dengan kecepatan berbeda di atas kanvas. Meskipun, mereka semua berada di bidang yang sama, otak Anda merasakan objek yang bergerak lebih cepat lebih dekat dengan Anda. Sama seperti menambahkan bayangan jatuh, efek paralaks menambahkan sumbu z.

Dan di sinilah semua neraka pecah! Pada sebagian besar perangkat yang menggerakkan Ooshie, hamparan cuaca, dan latar belakang, pada kecepatan yang berbeda, menghasilkan penurunan kecepatan bingkai yang signifikan. Berikut cara menggambar satu bingkai:

 canvas.drawBitmap(background, 0 - offsetX / 4, 0, null); canvas.drawBitmap(weatherOverlay, 0 - offsetX / 2, 0, null); if (!validDoubleTap) { canvas.drawBitmap(ooshieNormal, positionX - offsetX, positionY, null); } else { canvas.drawBitmap(ooshieTapped, positionX - offsetX, positionY, null); }

offset adalah persentase jarak yang telah digulir pengguna. Ini adalah panggilan balik yang disediakan oleh mesin wallpaper:

 @Override public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset){ super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset); // athe current offset should be a fraction of the screen offset to achieve parallax if (!isPreview()) { float newXOffset = xOffset * 0.15f; wallpaperDrawHelper.setOffsetX(newXOffset); if (isVisible() && hasActiveSurface) { wallpaperDrawHelper.drawFrame(false); } } }

Saya harus mencatat bahwa semua ini tidak perlu jika saya tahu cara bekerja dengan OpenGL! Itu ada dalam daftar TODO saya, karena apa pun yang lebih kompleks daripada yang kita miliki sekarang akan membutuhkan akselerasi perangkat keras. Tapi, untuk saat ini saya harus bekerja lebih keras, bukan lebih pintar (saya terbuka untuk saran di komentar). Jadi, inilah yang kami lakukan:

Pelajaran 4: Bekerja Dengan Apa yang Anda Miliki

Sebagai pendukung besar inisiatif minSdk=15 , sejak awal kami menghilangkan semua perangkat 2.x. Upaya untuk mempertahankan kompatibilitas mundur lebih besar daripada kemungkinan pendapatan dari pengguna yang tidak dapat\tidak mau mengupgrade ponsel mereka. Jadi, dalam kebanyakan kasus, kami akan dapat mencapai pengalaman yang mulus dengan opsi tambahan untuk menonaktifkan paralaks jika diinginkan.

Per panduan pengembangan Android ini, saya ingin memberikan opsi untuk menonaktifkan paralaks.

Pengoptimalan besar lainnya adalah cara kami menangani bitmap. Efek paralaks yang sangat mirip dapat dicapai dengan menggambar dua bitmap, bukan tiga:

  1. Ooshie overlay - bitmap Ooshie yang dipangkas dan diskalakan dengan hati-hati (dapat diakses)

  2. Hamparan gabungan - latar belakang gabungan dan bitmap cuaca yang bergerak dengan sebagian kecil dari kecepatan Ooshie

Trik pengembangan Android ini menghemat memori dan mempercepat waktu menggambar, untuk sedikit penurunan efek paralaks.

Saat menggulir layar beranda, bingkai akan digambar cukup sering (idealnya lebih dari 30 kali per detik). Sangat penting untuk tidak menggambarnya saat layar beranda tidak terlihat (beberapa layar kunci, beberapa laci aplikasi, membuka/beralih aplikasi, dll.) untuk meminimalkan penggunaan CPU.

Ini semua terkait erat dengan pembaruan cuaca. Awalnya ada tugas yang berulang, dijalankan setiap satu atau dua jam, untuk menyinkronkan cuaca, tapi itu benar-benar berlebihan. Jika pengguna tidak dapat melihat wallpaper, info cuaca tidak relevan. Jadi sekarang, pembaruan cuaca hanya terjadi ketika wallpaper terlihat.

 long lastUpdate = prefStore.getLong(SharedPrefStore.Pref.WEATHER_TIMESTAMP); if (System.currentTimeMillis() - lastUpdate > Consts.WEATHER_UPDATE_INTERVAL){ // update the weather if obsolete Intent intent = new Intent(getApplicationContext(), WeatherUpdateService.class); startService(intent); }

Jadi, pada dasarnya, inilah daftar periksa untuk gambar bitmap perangkat lunak halus yang dioptimalkan memori:

  1. Gabungkan bitmap sekali
  2. Gambar lebih sedikit bitmap
  3. Gambar ulang hanya sesuai permintaan
  4. Hindari tugas latar belakang
  5. Tawarkan kepada pengguna beberapa kendali atas prosesnya

Pelajaran 5: Tes. Uji. Uji

Saya tidak bisa menekankan betapa pentingnya ini! Tidak pernah, saya ulangi TIDAK PERNAH , lepaskan aplikasi Anda sebelum mengujinya! Dan, saya tidak bermaksud bahwa ANDA harus melakukan pengujian. Anda menulis kodenya, Anda tahu cara kerjanya, dan Anda memengaruhi hasilnya dengan mengetahui ekspektasinya. Saya tidak berbicara tentang pengujian JUnit (walaupun disarankan), tetapi tentang peluncuran bertahap yaitu pengujian alfa dan beta.

Jika Anda menyukai pengembangan perangkat lunak Android, persyaratannya mudah, tetapi berikut adalah ikhtisar singkatnya:

  1. Penguji alfa - sekelompok kecil orang yang terdiri dari rekan satu tim Anda dan orang-orang dari industri, lebih disukai pengembang Android. Kemungkinan mereka akan memiliki perangkat kelas atas dan akan bermain-main dengan opsi pengembang. Mereka akan mengirimi Anda pelacakan tumpukan, laporan bug, dan bahkan memberi Anda beberapa tip dan trik pengoptimalan kode/UI. Sempurna untuk rilis awal dengan fitur parsial/hilang.

  2. Penguji beta - audiens yang jauh lebih luas dengan berbagai demografi. Rilis stabil harus dipublikasikan di sini. Bahkan jika level ninja Anda terlalu tinggi, Anda tidak akan pernah bisa memprediksi, apalagi memperhitungkan, untuk semua kemungkinan distribusi Android dan cara orang menggunakan ponsel mereka.

Setelah kami melewati alpha, saya pikir kami sudah selesai. Tapi, Nak, aku salah?! Ternyata tidak semua pengguna Android memiliki perangkat Nexus dengan software terbaru! Siapa yang tahu? :)

Berikut adalah beberapa masalah pengembangan Android berdasarkan wahyu ini:

  1. Peluncur yang berbeda memiliki layar beranda default yang berbeda - biasanya yang pertama atau yang tengah, dan, sejauh yang saya tahu, tidak ada cara untuk mengetahui posisinya.

  2. Sulit untuk memusatkan Ooshie tanpa mengetahui posisi layar awal default - jadi penggeser pengaturan untuk menyesuaikan offset paralaks.

  3. Rata-rata pengguna tidak tahu apa artinya offset paralaks - terminologi yang lebih sederhana harus digunakan pada halaman pengaturan.

  4. Pengguna acak akan menyarankan fitur Anda berikutnya.

Jadi saya ingin berterima kasih kepada semua penguji beta kami atas kerja keras yang mereka lakukan. Saya berharap mendapatkan semua fitur terbaru sebelum orang lain adalah hadiah yang layak untuk dedikasi mereka. Jika mau, Anda juga dapat menjadi bagian dari Komunitas Google+ Beta kami.

Pengujian beta adalah langkah penting yang harus diingat oleh pemula Android saat mereka mulai memprogram aplikasi Android mereka yang sukses.

Pelajaran 6: Biarkan Data Berbicara

Membuat aplikasi Android yang menonjol saat ini sedikit lebih sulit daripada membuat aplikasi kalkulator, ketika tidak ada di tahun 2009. Membuat aplikasi yang sempurna itu sulit. Terutama karena kesempurnaan ada di mata yang melihatnya. Apa yang baik bagi saya, belum tentu baik bagi Anda. Itulah mengapa penting untuk membiarkan aplikasi berkembang. Daftar periksa peta jalan kami untuk fitur-fitur baru menunjukkan bahwa kami memiliki cukup pekerjaan untuk keseluruhan tahun 2015. Antara lain, kami akan segera menyertakan:

  1. suara
  2. Latar belakang musiman
  3. Kustomisasi (warna latar belakang, paket cuaca, kulit ooshie, dll.)
  4. Ooshi khusus wilayah (mis. babushka)
  5. Banyak ooshies baru dan cara untuk membukanya

Sekarang, kami mungkin telah menyimpan aplikasi dalam versi beta sampai semuanya selesai, tetapi dengan begitu kami membuang data berharga. Tidak semua penguji beta akan mendedikasikan sebagian waktunya untuk mengirimkan masukan kepada Anda. Di situlah Anda bisa mendapatkan keuntungan dalam menggunakan alat untuk mendapatkan umpan balik. Anda dapat menggunakan Google Analytics, Flurry, Mixpanel, Crashalytics, ACRA, dll. untuk mengumpulkan data penggunaan.

Misalnya, dengan menganalisis data, kami melihat bahwa pengguna tidak sering mengklik tombol pengaturan, jadi kami membuatnya lebih jelas dan menambahkan tutorial singkat untuk mengubah pengaturan.

Meskipun ini adalah proses latar belakang, ini dapat digunakan untuk lebih meningkatkan pengalaman pengguna. Mengapa tidak menunjukkan kepada pengguna berapa kali:

  1. dia menerima pelukan
  2. berapa hari hujan yang cerah dengan senyuman
  3. berapa banyak ketukan yang diperlukan untuk membuka kunci Ooshie dengan mini-game
  4. berapa banyak teman yang menginstal aplikasi karena Anda

Setiap panduan pengembangan Android harus menekankan pentingnya Google Analytics dalam mengoptimalkan aplikasi Anda!

Hal ini penting karena memberikan konsekuensi atas tindakan mereka. Jangan membuat kesalahan yang sama dengan sistem pendidikan kita, membuat pengguna menjadi konsumen pasif konten. Buat mereka yang bertanggung jawab. Beri mereka pilihan untuk mengontrol perangkat mereka sendiri dan menciptakan pengalaman pribadi mereka sendiri. Jika Anda berhasil mengemas semua ini ke dalam bundel lucu yang mencuri senyum pada percikan pertama, daripada tidak terlalu jauh untuk meminta bantuan spam kepada pengguna untuk membuka kunci konten.

Pada akhirnya, Anda perlu mengembangkan pengembangan aplikasi Android Anda berdasarkan data ini sebagai panduan. Meskipun terutama ditujukan untuk ibu/anak, aplikasi ini mungkin menjadi populer di demografi lain. Ini mungkin tidak sesuai dengan visi awal kami, tetapi kebutuhan pengguna harus dipenuhi. Kalau tidak, mereka akan menemukan seseorang yang bisa.

Kesimpulan

Mari kembali ke TweetPie kegagalan saya yang paling sukses. Meskipun beberapa penghargaan dan liputan media besar-besaran, aplikasi gagal mempertahankan penggunanya (alasan mengapa berada di luar cakupan artikel ini).

Sukses tidak selalu terlihat. Berkat seluruh pengalaman saya belajar banyak. Saya memberikan, setidaknya, selusin kuliah tentang Bagaimana (tidak) gagal sebagai startup di berbagai acara dan hackathon, dan berhasil mendapatkan beberapa klien di Toptal.

Yang lebih penting, saya mencoba untuk tidak mengulangi kesalahan pengembangan Android yang sama dengan Ooshies dengan mengikuti tips dan trik dalam panduan ini.

Untuk mengakhiri panduan panjang ini, apa yang kami definisikan sebagai sukses, pada tahap selanjutnya, sangat erat dengan apa yang kami tetapkan sebagai tujuan di awal. Ukuran keberhasilan yang paling umum adalah, tentu saja, menghasilkan banyak uang. Tidak peduli apakah aplikasi Anda berhasil atau tidak, Anda harus berusaha mewujudkannya, dan percayalah pada akhirnya Anda akan menjadi orang yang lebih baik (semoga orang yang berhasil mempelajari OpenGL). Anda akan mendapatkan teman baru, sedikit musuh, dan jika Anda beruntung/cukup pintar, Anda akan membuat banyak pengguna senang.

Anda dapat memeriksa situs web kami atau mengunduh Ooshies untuk mencobanya.