Computer >> Máy Tính >  >> Hệ thống >> Android

Cách phát triển ứng dụng Android vào năm 2019:sử dụng Android 'mới'

hoặc cách ứng dụng Bitotsav ’19 trở thành hiện thực

Bối cảnh:Pantheon ’17 ⏪

Gần hai năm trước, vào tháng 9 năm 2017, một người bạn, Ashank Anshuman đã thuyết phục tôi làm việc trên một ứng dụng cho lễ hội kỹ thuật của viện chúng tôi. Chúng tôi đã làm việc trong khoảng hai tuần, cả ngày lẫn đêm, chuẩn bị cho việc phát hành ngay trong thời gian diễn ra lễ hội. Mặc dù chúng tôi đã kiệt sức, nhưng đó là một cảm giác tuyệt vời khi nhận được thứ gì đó ‘ngoài kia’, trong quá trình sản xuất, mà mọi người thực sự đã sử dụng! Nó phục vụ rất tốt mục đích của mình, giúp ban tổ chức dễ dàng truyền tải mọi thứ đến những người tham gia.

Pantheon '17 - Ứng dụng trên Google Play
Trong nỗ lực cung cấp một nền tảng quốc gia để thanh niên thể hiện các kỹ năng kỹ thuật của họ; hiển thị… play.google.com

Nó được xếp hạng 4,9 với khoảng 120 lượt đánh giá. Các bot của Google đã xóa vì một số lý do, nhưng đó là câu chuyện của thời gian khác. Chúng tôi đã nhận được một số yêu cầu chia sẻ nguồn của ứng dụng, nhưng chúng tôi đã từ chối, do nhiều lý do - nhưng chủ yếu là vì chúng tôi không hài lòng với mã, đặc biệt là các phần chạy nhanh gần cuối. Đơn giản là chúng tôi không có đủ thời gian và kinh nghiệm để viết mã đủ tốt để mọi người học hỏi và / hoặc sử dụng.

Here We Go Again! ?

Tua nhanh đến tháng 11 năm 2018:Ankit Agrawal (anh ấy là ‘fest guy’) đề nghị tôi tham gia nhóm cho Bitotsav, lễ hội văn hóa xã hội hàng năm của chúng tôi, mà tôi đồng ý, vì tôi đang tìm một lý do nào đó để truy cập lại Android. Lần này, tôi đã thuyết phục Ashank (đã thuyết phục rất nhiều!) Làm việc trên ứng dụng.

Chúng tôi đã không làm gì nhiều vào tháng 12, nhưng tôi đã bắt đầu đọc những thứ như Architecture Components, AndroidX, Jetpack, v.v. Tôi cũng đã làm quen với Kotlin trong vài tháng qua, với một vài khóa học là công cụ:Một phần hai tất nhiên bởi một và duy nhất Hadi Hariri và một khác gần đây hơn của Svetlana Isakova và Andrey Breslav (mà anh ấy đã giới thiệu trong KotlinConf 2018). Do đó, Kotlin là sự lựa chọn rõ ràng cho ứng dụng.

Giới thiệu về Lập trình Kotlin
Kotlin 1.0 được phát hành vào tháng 2 năm 2016 và kể từ thời điểm đó, nó đã được các nhà phát triển trên khắp thế giới đón nhận… shop.oreilly.com
Kotlin dành cho nhà phát triển Java | Coursera
Kotlin dành cho Nhà phát triển Java từ JetBrains. Ngôn ngữ lập trình Kotlin là một ngôn ngữ hiện đại cung cấp cho bạn nhiều hơn… www.coursera.org

Quyết định?

Nửa đầu tháng 1 cũng trôi qua với không nhiều mã được viết, vì tôi bận tâm và không thể đến được trường đại học cho đến ngày 16 tháng 1. Tuy nhiên, chúng tôi đã đưa ra một số quyết định quan trọng:

  • Chỉ sử dụng Kotlin
  • Sử dụng bao bì dựa trên tính năng
  • Sử dụng Thành phần Kiến trúc Jetpack với AndroidX
  • Sử dụng API 21 làm API tối thiểu (22 có thể là một lựa chọn tốt hơn)
  • Sử dụng Android Studio Canary
  • Sử dụng Git Flow &SemVer
  • Viết mã đủ tốt để công khai sau lễ hội?
Cách phát triển ứng dụng Android vào năm 2019:sử dụng Android  mới
Jetpack với AndroidX

Vì vậy, về cơ bản, quá trình khôi phục cài đặt gốc từ tất cả trải nghiệm phát triển một ứng dụng vào năm 2017 cho đến bờ vực chảy máu vào năm 2019. Điều đó thực sự thú vị nhưng cũng là một thách thức lớn.

Mã Mã Mã! ?

Chúng tôi quyết định rằng Ashank sẽ đảm nhận Phần phụ trợ của ứng dụng (DB &Mạng, Thông báo với FCM, Xử lý nền) và tôi sẽ chăm sóc Giao diện người dùng và Tích hợp, giống như chúng tôi đã làm cho Pantheon ’17. Nhiều tài nguyên hữu ích khi bắt đầu và khi chúng tôi làm việc, nhưng tốt nhất cho đến nay là những bộ codelabs tuyệt vời này do Google cung cấp:

  • Phòng có Tầm nhìn - Kotlin (ViewModel, LiveData &Room with Coroutines)
  • Sử dụng Kotlin Coroutines trong Ứng dụng Android của bạn
  • Bảng mã liên kết dữ liệu
  • Bảng mã điều hướng:(Thành phần kiến ​​trúc điều hướng)
  • Làm việc nền với WorkManager
Google Codelabs
Google Developers Codelabs cung cấp trải nghiệm viết mã có hướng dẫn, hướng dẫn, thực hành. Hầu hết các codelabs sẽ hướng dẫn bạn qua… codelabs.developers.google.com

Ngoài ra, các ứng dụng Sunflower &Google IO 18 của Google là cơ sở mã lý tưởng cho mục đích tham khảo. Ứng dụng Android Dev Summit cũng sẽ là một nguồn tốt để tham khảo, tôi đã biết về nó trước đây!

googlesamples / android -flower
Một ứng dụng làm vườn minh họa các phương pháp phát triển Android hay nhất với Android Jetpack. - googlesamples / android -flower github.com

Với những thứ này trong kho vũ khí của mình, chúng tôi bắt đầu viết mã. Tôi đã quyết định sử dụng Thành phần kiến ​​trúc điều hướng mới để triển khai kiến ​​trúc ứng dụng Hoạt động đơn lẻ . Ashank bắt đầu với Room và FCM. Tôi cũng đã suy nghĩ về việc sử dụng Koin đối với IoC , nhưng không chắc lắm.

Thật tình cờ, Joe Birch đã tung ra một khóa học Koin ngay trong khoảng thời gian đó trên caster.io (Có các khóa học nhỏ, trọng điểm của các chuyên gia, mỗi khóa học miễn phí trong một tuần khi ra mắt!) Và quyết định tiếp tục. Không hối tiếc ở đó! Nghiêm túc mà nói, hỗ trợ Android thật tuyệt vời và tài liệu tuyệt vời ❤️

Koin
Trong khóa học này, chúng ta sẽ tìm hiểu về một khuôn khổ tiêm phụ thuộc được gọi là Koin bằng cách xây dựng một… caster.io

Với thiết lập Điều hướng và Koin, tôi bắt đầu với giao diện người dùng, quyết định là sử dụng các thành phần material design dành riêng cho giao diện người dùng mà nguyên tắc và tài liệu có ích, hữu ích. Ngoài ra, tôi đã để sử dụng Liên kết dữ liệu vì tôi thích nó! Trong khi đó Ashank đã triển khai WorkManager, mà chúng tôi đã quyết định sử dụng thay vì Người điều phối công việc của Firebase , đang sử dụng Jetpack đầy đủ!

Điều đầu tiên tôi phát triển là Giao diện người dùng lịch biểu, giúp tôi làm quen với Thành phần Kiến trúc. Sau khi hoàn thành, tôi chuyển sang UI luồng đăng ký, có lẽ là phần phức tạp nhất của ứng dụng, có cách sử dụng nâng cao LiveData và Điều hướng để triển khai ba bước với các biểu mẫu được xác thực trực tiếp (Đáng có một bài đăng trên blog của riêng nó, sắp tới Sớm?!). Điều này khiến tôi tự tin hơn rất nhiều vào những thành phần này, và từ đó về sau thật suôn sẻ. Chúng tôi đã hoàn thành các tính năng theo kế hoạch, phát hiện ra một số lỗi, sửa một số lỗi.

Khởi chạy?

Với các tính năng chính được triển khai, chúng tôi đã thực hiện một số chỉnh sửa giao diện người dùng, hoàn thành một số VIỆC CẦN LÀM cuối cùng và sẵn sàng ra mắt! Để kết thúc, tôi đã thêm một số thứ mà tôi đã lên kế hoạch từ lâu:

Một chủ đề màu sắc khác nhau trên mỗi lần thay đổi cấu hình! Điều này được thực hiện để tôn lên chủ đề của lễ hội:“ Sắc màu châu Á”

Ứng dụng đã có trên Cửa hàng Play vào ngày 11 tháng 2 năm 2019! ??

Bitotsav '19 - Ứng dụng trên Google Play
Bitotsav '19 ấn bản thứ 29 của Viện Công nghệ Birla, lễ hội văn hóa xã hội hàng năm của Mesra đều được tổ chức… play.google.com
Cách phát triển ứng dụng Android vào năm 2019:sử dụng Android  mới
Ứng dụng Bitotsav ’19

Bản sửa lỗi và cập nhật

Chúng tôi đã phải đối mặt (duy nhất!) Hai lỗi trong vòng vài giờ, chúng tôi đã sửa ngay lập tức. Phương thức đầu tiên liên quan đến các phương thức DAO được đánh dấu suspend , nhưng tôi vẫn không chắc chắn 100% lý do chính xác tại sao điều đó lại xảy ra ?. Lỗi thứ hai do xáo trộn gây ra lỗi tuần tự hóa và dễ dàng được sửa bằng K eep a chú thích.

Sau đó, tôi bắt đầu làm việc trên bản cập nhật tiếp theo, trong đó tôi đã thêm bảng xếp hạng trong nguồn cấp dữ liệu và các sự kiện ban đêm cho lễ hội trong lịch trình, cùng với một số thay đổi khác. Bản cập nhật thứ ba sau đó bổ sung thêm một số tính năng nhỏ.

Lễ hội đã diễn ra tốt đẹp và ứng dụng đã được hơn 1000 người tham gia sử dụng!

Chúng tôi đã phải đối mặt với một vấn đề nhỏ do mục nhập DB không chính xác trong máy chủ của người bạn của chúng tôi, Sushant Gupta, người sau này đã tiếp tục viết một bài đăng blog khá ấn tượng về vấn đề tương tự.

Tấn công DDoS trên Trang web Bitotsav '19
Đây không phải là một bài viết kỹ thuật. Đây là một câu chuyện mà tôi muốn chia sẻ, có thể là bài học cho một số Web &App… cs.sonudoo.com

Sau lễ hội, chúng tôi đã phát hành bản cập nhật cuối cùng, lưu trữ chi tiết sự kiện, nguồn cấp dữ liệu, v.v. dưới dạng JSON như một phần của ứng dụng và liên hệ lại với số liên lạc của ban tổ chức vì lý do bảo mật.

Công khai!

Đã đến lúc mở mã nguồn! Khoảng thời gian này, chúng tôi đã quan tâm đến việc viết mã dễ hiểu và nó đã sẵn sàng cho thế giới. Tôi đã chuẩn bị một README mượt mà và để xóa các số liên lạc khỏi lịch sử của kho lưu trữ, chúng tôi đã sử dụng công cụ BFG Repo Cleaner tuyệt vời.

Mã cho ứng dụng Bitotsav ’19 hiện đã được công khai để mọi người có thể xem xét, tham khảo, học hỏi hoặc sử dụng! Kiểm tra nó ra và đừng quên để lại một? ?

aksh1618 / Bitotsav-19
Ứng dụng chính thức cho Bitotsav '19. Đóng góp vào sự phát triển aksh1618 / Bitotsav-19 bằng cách tạo tài khoản trên GitHub. github.com

Thách thức?

Chúng tôi đã phải đối mặt với một số thách thức trong quá trình phát triển:

  • Giới hạn Thời gian: Thách thức chính mà chúng tôi phải đối mặt là có rất ít thời gian để tìm hiểu các khái niệm rất mới và sử dụng chúng để tạo ra một ứng dụng được hàng trăm người sử dụng. Thời gian hạn chế này dẫn đến việc phải làm nhiều giờ liên tục, dẫn đến căng thẳng và mệt mỏi, nhưng chúng tôi vẫn có thể vượt qua và thực hiện!
  • WorkManager với Coroutines: Về mặt kỹ thuật, chúng tôi phải đối mặt với một số thách thức nhỏ với WorkManager và Coroutines, nhưng đã có thể vượt qua chúng. Hy vọng được hỗ trợ tốt hơn cho các quy trình trong SDK Android khi quá trình phát triển tiếp tục diễn ra?.
  • API 21: Chúng tôi đã chọn API tối thiểu 21 để tránh phải điều chỉnh mọi thứ để hoạt động trên các phiên bản cũ hơn, vì hầu hết các thiết bị Android đều sử dụng API 21 trở lên. Nhưng đáng ngạc nhiên là một số thứ từ chối hoạt động trên API 21, đặc biệt là chế độ xem hình nền. Thật sự rất bực mình, khiến tôi ước rằng chúng tôi đặt API tối thiểu là 22, thậm chí còn hơn thế nữa khi chúng tôi phát hiện ra rằng ứng dụng chỉ được cài đặt trên hai thiết bị API 21:những thiết bị mà chúng tôi đã thử nghiệm?.
  • Thiếu thiết bị: Một thách thức khác mà chúng tôi phải đối mặt là không có đủ thiết bị để kiểm tra. Trong thời gian Pantheon ’17, chúng tôi có một ký túc xá với khoảng 200 người và do đó việc kiểm tra rất dễ dàng. Khoảng thời gian này, hầu hết mọi người đã đi thực tập, vì vậy chúng tôi chỉ còn cách dựa vào việc tin tưởng vào mã!
  • Không có người đánh giá mã: Rất nhiều thứ chúng tôi đã sử dụng đều mới đối với chúng tôi và chúng tôi đã cố gắng hết sức để đảm bảo rằng chúng tôi đang làm đúng mọi thứ. Nhưng có một người đánh giá sẽ rất hữu ích. Ngay cả bây giờ, nếu bạn cảm thấy có thể xem xét nhanh mã của ứng dụng, chúng tôi rất cảm ơn bạn!
  • Ngày Tận thế: Chúng tôi cũng đã đối mặt với ‘ DDoS đó Vấn đề, hãy đọc bài đăng trên blog của Sushant được liên kết ở trên, bạn sẽ không hối tiếc!

Takeaways ✅

  • Kotlin + Jetpack =❤️: Kết quả chính là Phát triển Android đã đi được một chặng đường dài và với Kotlin và Jetpack, điều đó chắc chắn sẽ thú vị hơn rất nhiều và hoàn toàn vui vẻ! Nghiêm túc mà nói, có nhiều cực khoái những khoảnh khắc trong quá trình viết mã!
  • Không gì là Không thể: Kinda sáo rỗng nhưng đúng:nếu bạn có ý chí làm việc chăm chỉ, bạn có thể làm bất cứ điều gì, dù khó khăn đến đâu. Chắc chắn, sẽ có những pha căng thẳng, nhưng hãy tiếp tục vượt qua. Chỉ cần tin tưởng vào bản thân!

Hối tiếc?

  • Không có Ứng dụng tức thì / Gói ứng dụng :Chúng tôi chỉ đơn giản là bỏ lỡ điều này. Thậm chí không nghĩ về nó. À, có thể là lần sau.
  • Không có thử nghiệm :Tôi biết, đây là một cái lớn! Có những bài kiểm tra phù hợp có thể giúp chúng tôi rất nhiều, nhưng do thời gian hạn hẹp, chúng tôi quyết định không viết bài kiểm tra cho đến một thời điểm "sau", điều này vẫn chưa đến?.

TL; DR. ?

Bắt đầu với một ứng dụng với năm 2019?

Sử dụng Kotlin &Coroutines

  • Tìm hiểu Kotlin và sử dụng nó độc quyền!
  • Học cách sử dụng coroutines với Android.

Sử dụng Thành phần Jetpack với AndroidX

  • Tìm hiểu cách sử dụng Thành phần điều hướng cho Kiến trúc hoạt động đơn lẻ.
  • Tìm hiểu cách sử dụng Các thành phần vòng đời cho giao diện người dùng và Phòng để tồn tại lâu dài.
  • Hãy tự giúp mình và sử dụng Data Binding!
  • Học cách sử dụng WorkManager để xử lý nền.

Sử dụng Thành phần Vật liệu

  • Nguyên tắc về Thành phần Vật liệu
  • Thành phần Vật liệu Tài liệu Android

Viết thử nghiệm!

Chà, chúng tôi không thể nhưng bạn chắc chắn nên làm như vậy! KHÔNG bỏ qua các bài kiểm tra.

Tham khảo Mã nguồn

.. trong số các ứng dụng thực hiện những điều này:Ứng dụng Sunflower, Ứng dụng IO, Ứng dụng Dev Summit hoặc tất nhiên, Ứng dụng Bitotsav ‘19! (còn nữa, để lại dấu sao?)

Luôn cập nhật

Đăng ký các blog và bản tin để luôn cập nhật! Dưới đây là một số để bắt đầu:Android Weekly, ProAndroidDev, AndroidPub, Kotlin Weekly. Choáng ngợp? Hãy xem bài nói hay này của Huyền Tuệ Đạo:

Be Like Water:Theo kịp Android
Nếu bạn thích các bài nói chuyện từ 360 AnDev, vui lòng ủng hộ hội nghị qua Patreon! Một hằng số làm việc trên thiết bị di động là… Academy.realm.io

Vâng, chúng tôi đi. Đây là thời điểm tuyệt vời để Phát triển Android, vì vậy hãy bắt đầu với ứng dụng mới của bạn và đừng quên vui vẻ khi thực hiện nó!

Nếu bạn học được điều gì đó, hãy để lại bình luận. Những lời chỉ trích mang tính xây dựng được hoan nghênh?

Bắt gặp tôi trên Twitter? , LinkedIn? hoặc GitHub ??

Cho đến lần sau ??