Computer >> คอมพิวเตอร์ >  >> ระบบ >> Android

วิธีพัฒนาแอพ Android ในปี 2019:โอบรับ Android 'ใหม่'

หรือวิธีที่แอป Bitotsav ’19 กลายเป็นความจริง

เบื้องหลัง:Pantheon ’17 ⏪

เกือบสองปีที่แล้ว ในเดือนกันยายน 2017 เพื่อนคนหนึ่ง Ashank Anshuman โน้มน้าวให้ฉันทำงานในแอปสำหรับงานด้านเทคนิคของสถาบันของเรา เราทำงานกันประมาณสองสัปดาห์ ทั้งกลางวันและกลางคืน เตรียมพร้อมสำหรับการเปิดตัวให้ทันเทศกาล แม้ว่าเราจะหมดแรง แต่มันก็เป็นความรู้สึกที่น่าอัศจรรย์ เมื่อได้รับบางสิ่ง 'ออกไปที่นั่น' ในการผลิตที่ผู้คนใช้จริง ๆ ! ช่วยให้ผู้จัดงานถ่ายทอดทุกอย่างไปยังผู้เข้าร่วมได้อย่างง่ายดาย

Pantheon '17 - แอปพลิเคชันใน Google Play
พยายามที่จะให้เวทีระดับชาติสำหรับเยาวชนในการแสดงทักษะทางเทคนิคของพวกเขา กำลังแสดง… play.google.com

ได้รับการจัดอันดับ 4.9 โดยมีบทวิจารณ์ประมาณ 120 รายการ ซึ่งบ็อตของ Google ได้ลบออกด้วยเหตุผลบางประการ แต่นั่นเป็นอีกเรื่องหนึ่ง เราได้รับคำขอบางรายการให้แชร์แหล่งที่มาของแอป แต่เราปฏิเสธด้วยเหตุผลหลายประการ — แต่ส่วนใหญ่เป็นเพราะเราไม่พอใจกับโค้ดนั้น โดยเฉพาะอย่างยิ่งส่วนที่เร่งรีบในตอนท้าย เราไม่มีเวลาและประสบการณ์เพียงพอที่จะเขียนโค้ดให้ดีพอให้ผู้คนเรียนรู้และ/หรือใช้

มาอีกแล้ว! ?

กรอไปข้างหน้าถึงเดือนพฤศจิกายน 2018:Ankit Agrawal (เขาคือ 'คนในเทศกาล') ขอให้ฉันเข้าร่วมทีม Bitotsav ซึ่งเป็นเทศกาลทางสังคมและวัฒนธรรมประจำปีของเรา ซึ่งฉันเห็นด้วย เนื่องจากฉันกำลังหาข้ออ้างในการกลับมาใช้ Android อีกครั้ง ครั้งนี้ ฉันโน้มน้าวให้ Ashank (โน้มน้าวใจมาก!) ให้ทำงานในแอป

เราไม่ได้ทำอะไรมากในเดือนธันวาคม แต่ฉันเริ่มอ่านเรื่องต่างๆ เช่น Architecture Components, AndroidX, Jetpack เป็นต้น ฉันยังคุ้นเคยกับ Kotlin ในช่วงไม่กี่เดือนที่ผ่านมา โดยมีหลักสูตรสองหลักสูตรที่เป็นส่วนสำคัญ:สองส่วน แน่นอนโดย Hadi Hariri เพียงหนึ่งเดียวและอีกอันล่าสุดโดย Svetlana Isakova และ Andrey Breslav (ซึ่งเขาแนะนำใน KotlinConf 2018) Kotlin จึงเป็นตัวเลือกที่ชัดเจนสำหรับแอปนี้

ความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรม Kotlin
Kotlin 1.0 เปิดตัวในเดือนกุมภาพันธ์ 2559 และนับตั้งแต่นั้นมาก็ได้รับการยอมรับจากนักพัฒนาทั่วโลก… shop.oreilly.com
Kotlin สำหรับ Java Developers | Coursera
Kotlin สำหรับ Java Developers จาก JetBrains ภาษาการเขียนโปรแกรม Kotlin เป็นภาษาสมัยใหม่ที่ให้คุณมากกว่า... www.coursera.org

การตัดสินใจ ?

ครึ่งแรกของเดือนมกราคมผ่านไปด้วยการเขียนโค้ดไม่มากนัก เนื่องจากผมยุ่งมากและไม่สามารถเข้าถึงวิทยาลัยได้จนถึงวันที่ 16 มกราคม อย่างไรก็ตาม เราได้ทำการตัดสินใจที่สำคัญบางประการ:

  • ใช้ Kotlin เท่านั้น
  • ใช้บรรจุภัณฑ์ตามคุณลักษณะ
  • ใช้ส่วนประกอบสถาปัตยกรรม Jetpack กับ AndroidX
  • ใช้ API 21 เป็น API ขั้นต่ำ (22 อาจเป็นทางเลือกที่ดีกว่า)
  • ใช้ Android Studio Canary
  • ใช้ Git Flow &SemVer
  • เขียนโค้ดดีพอที่จะเผยแพร่ต่อสาธารณะหลังจบเทศกาล ?
วิธีพัฒนาแอพ Android ในปี 2019:โอบรับ Android  ใหม่
Jetpack พร้อม AndroidX

โดยพื้นฐานแล้ว เป็นการฮาร์ดรีเซ็ตจากประสบการณ์ทั้งหมดในการพัฒนาแอปในปี 2017 ไปจนถึงการล่มสลายในปี 2019 มันน่าตื่นเต้นจริงๆ แต่ก็เป็นความท้าทายที่ยิ่งใหญ่ด้วย

รหัส รหัส รหัส! ?

เราตัดสินใจว่า Ashank จะดูแลส่วนแบ็คเอนด์ของแอป (DB &Networking, Notifications with FCM, Background Processing) และฉันจะดูแล Frontend และ Integration เหมือนกับที่เราทำกับ Pantheon '17 แหล่งข้อมูลมากมายมีประโยชน์ในขณะที่เริ่มต้นและในขณะที่เราทำงาน แต่สิ่งที่ดีที่สุดคือ Codelab ที่ยอดเยี่ยมเหล่านี้จาก Google:

  • ห้องพร้อมวิว - Kotlin (ViewModel, LiveData &Room with Coroutines)
  • การใช้ Kotlin Coroutines ในแอป Android ของคุณ
  • Data Binding Codelab
  • Navigation Codelab:(ส่วนประกอบสถาปัตยกรรมการนำทาง)
  • การทำงานเบื้องหลังด้วย WorkManager
Google Codelabs
Google Developers Codelabs มอบประสบการณ์การเขียนโค้ดแบบลงมือปฏิบัติพร้อมคำแนะนำ บทแนะนำ Codelab ส่วนใหญ่จะแนะนำคุณ… codelabs.developers.google.com

นอกจากนี้ แอป Sunflower &Google IO 18 ของ Google ยังเป็นฐานรหัสในอุดมคติสำหรับการอ้างอิง แอป Android Dev Summit ก็เป็นแหล่งอ้างอิงที่ดีด้วย ถ้าฉันรู้เรื่องนี้มาก่อน!

googlesamples/android-sunflower
แอปทำสวนที่แสดงแนวทางปฏิบัติที่ดีที่สุดสำหรับการพัฒนา Android ด้วย Android Jetpack - googlesamples/android-sunflower github.com

ด้วยสิ่งเหล่านี้ในคลังแสงของเรา เราจึงเริ่มเขียนโค้ด ฉันตัดสินใจใช้องค์ประกอบสถาปัตยกรรมการนำทางใหม่ เพื่อใช้สถาปัตยกรรมแอปที่มีกิจกรรมเดียว . Ashank เริ่มต้นด้วย Room และ FCM ฉันยังคิดที่จะใช้ Koin สำหรับ IoC แต่ไม่แน่ใจนัก

อนึ่ง Joe Birch ได้เปิดตัวหลักสูตร Koin ในช่วงเวลานั้นบน caster.io (มีหลักสูตรเล็กๆ ตรงประเด็นโดยผู้เชี่ยวชาญ แต่ละหลักสูตรฟรีเป็นเวลาหนึ่งสัปดาห์เมื่อเปิดตัว!) และตัดสินใจเข้าร่วม ไม่เสียใจที่นั่น! อย่างจริงจัง การสนับสนุน Android นั้นยอดเยี่ยมและเอกสารประกอบก็ยอดเยี่ยม ❤️

Koin
ในหลักสูตรนี้ เราจะเรียนรู้เกี่ยวกับเฟรมเวิร์กการฉีดการพึ่งพาที่เรียกว่า Koin โดยการสร้างฟังก์ชันที่สมบูรณ์... caster.io

ด้วยการตั้งค่าการนำทางและ Koin ฉันเริ่มต้นด้วย UI โดยตัดสินใจว่าจะใช้ส่วนประกอบการออกแบบวัสดุ เฉพาะสำหรับ UI ซึ่งแนวทาง และเอกสาร เข้ามาสะดวก นอกจากนี้ ฉัน มี เพื่อใช้การผูกข้อมูล เพราะฉันรักมัน! ในขณะเดียวกัน Ashank ได้ดำเนินการ WorkManager ซึ่งเราตัดสินใจใช้แทน Firebase Job Dispatcher เต็ม Jetpack!

สิ่งแรกที่ฉันพัฒนาคือ Schedule UI ซึ่งช่วยให้ฉันคุ้นเคยกับ Architecture Components เมื่อเสร็จแล้ว ฉันจึงย้ายไปที่ UI ของขั้นตอนการลงทะเบียน ซึ่งอาจเป็นส่วนที่ซับซ้อนที่สุดของแอป ซึ่งมีการใช้งาน LiveData และการนำทางขั้นสูงสำหรับการดำเนินการสามขั้นตอนด้วยแบบฟอร์มที่ตรวจสอบความถูกต้องแล้ว (ควรค่าแก่การโพสต์บล็อกของตัวเองที่กำลังมา เร็วๆ นี้?!). สิ่งนี้ทำให้ฉันมั่นใจในส่วนประกอบเหล่านี้มากขึ้น และมันก็เป็นการขับขี่ที่ราบรื่นตั้งแต่นั้นเป็นต้นมา เราเสร็จสิ้นคุณสมบัติตามแผน ค้นพบ gotcha บางส่วน แก้ไขข้อบกพร่องบางอย่าง

เปิดตัว ?

ด้วยคุณสมบัติหลักๆ ที่นำมาใช้ เราได้ทำ UI ปัดฝุ่น ทำ TODO ขั้นสุดท้าย และพร้อมสำหรับการเปิดตัว! ในขั้นสุดท้าย ฉันได้เพิ่มบางสิ่งที่ฉันวางแผนไว้ตลอดมา:

ธีมสีที่แตกต่างกันในทุกการกำหนดค่าที่เปลี่ยนแปลง! จัดขึ้นเพื่อชมเชยธีมงาน “Colours of Asia”

แอปเผยแพร่บน Play Store เมื่อวันที่ 11 กุมภาพันธ์ 2019! ??

Bitotsav '19 - แอปพลิเคชันใน Google Play
Bitotsav '19 รุ่นที่ 29 ของ Birla Institute of Technology เทศกาลทางสังคมและวัฒนธรรมประจำปีของ Mesra เตรียมพร้อมสำหรับ… play.google.com
วิธีพัฒนาแอพ Android ในปี 2019:โอบรับ Android  ใหม่
แอป Bitotsav '19

แก้ไข &อัปเดต

เราพบข้อบกพร่องสองข้อ (เท่านั้น) ภายในไม่กี่ชั่วโมง ซึ่งเราแก้ไขได้ทันที อันแรกเกี่ยวข้องกับวิธี DAO ที่ทำเครื่องหมาย suspend แต่ฉันก็ยังไม่แน่ใจ 100% ว่าทำไมมันถึงเกิดขึ้น? อันที่ 2 เกิดจาก obfuscation ซึ่งทำให้ serialization ล้มเหลว และแก้ไขได้ง่ายๆ ด้วย Keep a คำอธิบายประกอบ

จากนั้นฉันก็เริ่มทำงานในการอัปเดตครั้งต่อไป โดยฉันได้เพิ่มกระดานผู้นำในฟีดและงานกลางคืนสำหรับเทศกาลตามกำหนดการ พร้อมกับการเปลี่ยนแปลงอื่นๆ การอัปเดตครั้งที่สามตามมาด้วยการเพิ่มคุณสมบัติเล็กน้อยเพิ่มเติม

เทศกาลเป็นไปด้วยดี และมีผู้เข้าร่วมกว่า 1,000 คนใช้แอปนี้!

เราประสบปัญหาเล็กน้อยเนื่องจากมีรายการ DB ที่ไม่ถูกต้องในเซิร์ฟเวอร์โดยเพื่อนของเรา Sushant Gupta ซึ่งต่อมาได้ดำเนินการเขียนบล็อกโพสต์ที่ค่อนข้างน่าสนใจในเรื่องเดียวกัน

การโจมตี DDoS บนเว็บไซต์ Bitotsav '19
นี่ไม่ใช่การเขียนเชิงเทคนิค นี่เป็นเรื่องราวที่ผมอยากแชร์ซึ่งอาจเป็นบทเรียนสำหรับหลายๆ Web &App… cs.sonudoo.com

หลังจากเทศกาล เราได้เผยแพร่การอัปเดตขั้นสุดท้าย จัดเก็บรายละเอียดกิจกรรม ฟีด ฯลฯ เป็น JSON ที่เป็นส่วนหนึ่งของแอป และแก้ไขหมายเลขติดต่อของผู้จัดงานเพื่อเหตุผลด้านความเป็นส่วนตัว

เผยแพร่สู่สาธารณะ!

ได้เวลาเปิดซอร์สโค้ดแล้ว! คราวนี้ เราได้ระมัดระวังในการเขียนโค้ดที่เข้าใจได้ และมันพร้อมสำหรับโลก ฉันเตรียม README ที่ลื่นไหล และเพื่อลบหมายเลขติดต่อออกจากประวัติของที่เก็บ เราใช้เครื่องมือ BFG Repo Cleaner ที่น่าทึ่ง

รหัสสำหรับแอป Bitotsav '19 เปิดให้ทุกคนตรวจสอบ อ้างอิง เรียนรู้ หรือใช้! ตรวจสอบแล้วอย่าลืมทิ้ง ? ?

aksh1618/Bitotsav-19
แอปอย่างเป็นทางการสำหรับ Bitotsav '19 มีส่วนร่วมในการพัฒนา aksh1618/Bitotsav-19 โดยการสร้างบัญชีบน GitHub github.com

ความท้าทาย ?

เราเผชิญกับความท้าทายบางอย่างในระหว่างการพัฒนา:

  • การจำกัดเวลา: ความท้าทายหลักที่เราเผชิญคือมีเวลาจำกัดในการเรียนรู้แนวคิดใหม่ๆ และใช้แนวคิดเหล่านี้สร้างแอปให้คนหลายร้อยคนใช้ ข้อจำกัดด้านเวลานี้ทำให้ต้องใช้เวลานานหลายชั่วโมงอย่างต่อเนื่อง ซึ่งนำไปสู่ความเครียดและความเหนื่อยล้า แต่เราก็สามารถผ่านพ้นและส่งมอบได้!
  • WorkManager กับ Coroutines: ในด้านเทคนิค เราเผชิญกับความท้าทายเล็กๆ น้อยๆ กับ WorkManager และ Coroutines แต่สามารถเอาชนะอุปสรรคเหล่านั้นได้ หวังว่าจะได้รับการสนับสนุนที่ดีขึ้นสำหรับ coroutines ตลอดทั้ง Android SDK ในขณะที่การพัฒนายังคงดำเนินต่อไป
  • API 21: เราเลือก API ขั้นต่ำ 21 เพื่อหลีกเลี่ยงการปรับทุกอย่างให้ทำงานบนเวอร์ชันเก่าได้ เนื่องจากอุปกรณ์ Android ส่วนใหญ่ใช้ API 21 ขึ้นไปอยู่แล้ว แต่น่าประหลาดใจที่บางสิ่งปฏิเสธที่จะทำงานบน API 21 โดยเฉพาะการดูพื้นหลัง มันน่าผิดหวังจริงๆ ทำให้ฉันหวังว่าเราจะตั้ง API ขั้นต่ำเป็น 22 ให้มากยิ่งขึ้นไปอีก ดังนั้นเมื่อเราพบว่าแอปได้รับการติดตั้งบนอุปกรณ์ API 21 สองเครื่องเท่านั้น:อันที่เราทดสอบบน ?
  • ขาดอุปกรณ์: ความท้าทายอีกประการหนึ่งที่เราเผชิญคือไม่มีอุปกรณ์เพียงพอที่จะทดสอบ ในช่วง Pantheon '17 เรามีหอพักที่มีผู้คนประมาณ 200 คน การทดสอบจึงเป็นเรื่องง่าย คราวนี้คนส่วนใหญ่ไปฝึกงาน ดังนั้นเราจึงเหลือความมั่นใจในรหัส!
  • ไม่มีผู้ตรวจสอบโค้ด: หลายสิ่งที่เราใช้เป็นเรื่องใหม่สำหรับเรา และเราพยายามอย่างเต็มที่เพื่อให้แน่ใจว่าเรากำลังทำทุกอย่างถูกต้อง แต่การมีนักวิจารณ์จะมีประโยชน์มาก ถึงแม้ว่าตอนนี้ หากคุณรู้สึกว่าสามารถตรวจทานโค้ดของแอปได้อย่างรวดเร็ว เราก็ยินดีเป็นอย่างยิ่ง!
  • คติ: เรายังต้องเผชิญกับว่า ' DDoS ’ อ่านบล็อกโพสต์ของ Sushant ที่ลิงก์ไว้ด้านบน คุณจะไม่เสียใจเลย!

ซื้อกลับบ้าน ✅

  • Kotlin + Jetpack =❤️ : ประเด็นหลักคือการพัฒนา Android มาไกล และด้วย Kotlin และ Jetpack ทำให้สนุกและสนุกสนานมากขึ้นอย่างแน่นอน! จริงๆ แล้วมี orgasmic . หลายตัว ช่วงเวลาระหว่างกระบวนการเขียนโค้ด!
  • ไม่มีอะไรที่เป็นไปไม่ได้: ค่อนข้างคิดโบราณแต่ความจริง:หากคุณมีความตั้งใจที่จะทำงานหนัก คุณสามารถทำทุกอย่างได้ ไม่ว่าจะยากแค่ไหนก็ตาม แน่นอนว่าจะมีช่วงที่ตึงเครียด แต่ก็ต้องเดินหน้าต่อไป แค่เชื่อมั่นในตัวเอง!

เสียใจ ?

  • ไม่มี Instant App / App Bundle :เราเพิ่งพลาดอันนี้ไป ไม่ได้คิดเกี่ยวกับมัน อืม ไว้ครั้งหน้าก็ได้นะ
  • ไม่มีการทดสอบ :ฉันรู้ นี่มันเรื่องใหญ่! การมีการทดสอบที่เหมาะสมสามารถช่วยเราได้มาก แต่เนื่องจากข้อจำกัดด้านเวลา เราจึงตัดสินใจที่จะไม่เขียนการทดสอบจนกว่าจะถึงเวลา 'ภายหลัง' ซึ่งยังไม่มา ?

TL;DR. ?

เริ่มต้นด้วยแอพในปี 2019?

ใช้ Kotlin &Coroutines

  • เรียนรู้ Kotlin และใช้งานโดยเฉพาะ!
  • เรียนรู้การใช้ coroutines กับ Android

ใช้ Jetpack Components กับ AndroidX

  • เรียนรู้การใช้ส่วนประกอบการนำทางสำหรับสถาปัตยกรรมแบบกิจกรรมเดียว
  • เรียนรู้การใช้ส่วนประกอบวงจรชีวิตสำหรับ UI และห้องเพื่อความคงอยู่
  • ทำสิ่งที่ชอบและใช้การผูกข้อมูล!
  • เรียนรู้การใช้ WorkManager สำหรับการประมวลผลเบื้องหลัง

ใช้ส่วนประกอบของวัสดุ

  • แนวทางส่วนประกอบวัสดุ
  • Material Components เอกสาร Android

เขียนการทดสอบ!

เราทำไม่ได้ แต่คุณควรทำอย่างแน่นอน! อย่าข้ามการทดสอบ

อ้างอิงซอร์สโค้ด

.. ของแอพที่ทำสิ่งเหล่านี้:แอพ Sunflower, แอพ IO, แอพ Dev Summit หรือแอพ Bitotsav '19! (ฝากดาวด้วยนะ ?)

อัปเดตอยู่เสมอ

สมัครสมาชิกบล็อกและจดหมายข่าวเพื่อรับข่าวสารล่าสุด! นี่คือบางส่วนที่จะเริ่มต้นด้วย:Android Weekly, ProAndroidDev, AndroidPub, Kotlin Weekly ล้นหลาม? ดูการบรรยายที่ยอดเยี่ยมโดย Huyen Tue Dao:

Be Like Water:ก้าวทัน Android
หากคุณสนุกกับการพูดคุยจาก 360 AnDev โปรดสนับสนุนการประชุมผ่าน Patreon! สิ่งหนึ่งที่คงที่ในการทำงานบนมือถือคือ… academy.realm.io

เอาล่ะเราไปกันเถอะ นี่เป็นช่วงเวลาที่ยอดเยี่ยมสำหรับการพัฒนา Android ดังนั้นให้เริ่มต้นกับแอปใหม่ของคุณ และอย่าลืมทำให้สนุกในขณะทำ!

หากคุณเรียนรู้บางสิ่งบางอย่างแสดงความคิดเห็น วิจารณ์เชิงสร้างสรรค์ ยินดีต้อนรับ ?

จับฉันบน Twitter ? , LinkedIn ? หรือ GitHub ??

จนกว่าจะถึงครั้งต่อไป ??