top of page
Tìm kiếm

KÝ SỰ ĂN HÀNH KHI LÀM ANDROID APP

Bài viết này ghi lại một số kinh nghiệm cá nhân của tôi khi thử làm một ứng dụng Android siêu nhỏ cho bản thân tự sử dụng. Đây không phải lần đầu tiên tôi làm ứng dụng cho điện thoại Android, nhưng vì đã bỏ không đụng tới trong nhiều năm, nên giờ cũng như trải nghiệm lần đầu, đương nhiên là ít bỡ ngỡ hơn những người chưa có kinh nghiệm nào.

Lưu ý: Đây không phải là bài viết với mục đích hướng dẫn mọi người nên trong bài tôi có sử dụng nhiều từ ngữ chuyên môn. Bạn sẽ cảm thấy chán khi đọc, nếu bạn chưa có nền tảng nào về những vấn đề này. (Không nên tốn thời gian với những thứ khiến bạn chán, thay vì vậy bạn có thể đọc các bài khác của tôi chẳng hạn như bài này).

BUILD ANDROID APP BẰNG UNITY

Lưu ý do tôi không cài Unity thông qua Unity Hub, nên khi muốn build app cho android phải tự tải thêm một số phần còn thiếu. Để build được android app, Unity yêu cầu trên máy của chúng ta phải có JDK, Android SDK, Android NDK, Gradle. Từ phiên bản 2019 trở đi, Unity đã dùng Gradle để quản lý cấu trúc cho các ứng dụng Android. Cái Gradle này khá lung tung, vì mỗi phiên bản của nó sẽ tương thích tốt nhất với một phiên bản JDK tương ứng. Bạn sẽ biết được các yêu cầu này khi bấm build Android app, Unity sẽ kêu bạn thêm vào các thứ còn thiếu trong Preferences/External Tools. Sau khi phát hiện mình còn thiếu nhiều thứ cần thiết, tôi làm theo các bước dưới đây.

Bước đầu tiên là tải JDK phù hợp, tôi dùng bản 1.8, có sẵn trên máy vì các bản mới hơn phần JRE đã nằm chung trong JDK, thay đổi này làm cho Unity không tự nhận biết được vị trí của JRE của JDK mới. Tôi đang sử dụng version Unity 2020.3.28f1 khi build ứng dụng android này, tôi không chắc đây là vấn để của Unity hay là do các thiết lập trong máy của mình. Nhưng để xử lý khá tốn thời gian, nên tôi quyết định dùng JDK 1.8 để mọi chuyện bớt phức tạp. Nhìn chung, đôi khi đội ngũ phát triển engine Unity cũng còn bỏ sót nhiều thứ lắm, càng sống lâu với nghề mới thấy là không chỉ dev ta mới “chuối”, mà dev tây cũng “chuối” không kém gì, điểm khác biệt là số lượng “chuối” của mỗi bên nhiều hơn hay ít hơn thôi.

Bước hai là tải Android SDK, trước đây trên website của android developer cho phép chúng ta tải riêng phiên bản mà mình muốn, nhưng từ khi Android Studio xuất hiện thì tùy chọn đó không còn hiện diện trên website của họ nữa. Nên chúng ta sẽ tải Android Studio về và mở ứng dụng quản lý SDK trong cái IDE này. Cũng đã khá lâu tôi không làm việc với các ứng dụng di động như android hay iOS, nhưng cảm nhận về trải nghiệm của tôi đối với Android Studio là tương đối dễ dàng. Giao diện thân thiện, dù tôi không code dòng nào trong IDE này nhưng các ứng dụng hỗ trợ quản lý SDK và Devices rất trực quan. Khi “Make Project” có hỗ trợ download những package còn thiếu hoặc version phù hợp với thiết lập của project. IDE này còn có tính năng cho phép chạy Debug ứng dụng trên thiết bị thật qua kết nối Wifi sử dụng QR Code hoặc Pair Code, trước đây khi muốn chạy trên thiết bị thật tôi phải cắm USB và dùng công cụ ADB để cài file APK lên. Tính năng rất hay tuy nhiên khi tôi thử sử dụng, thì không kết nối được với điện thoại mình đang dùng, có thể do khi build ứng dụng gặp vấn đề, hoặc nó là lỗi của IDE.

Bước ba là tải NDK, ta cũng dùng SDK Manager trong Android Studio để tải về phiên bản phù hợp. Khi mở nó lên, ta chuyển sang tab Build Tools, và check vào tùy chọn “Show obsoletes file”, để nó hiển thị những phiên bản NDK cũ. Do Unity nó hoạt động với một số phiên bản cũ đó. Khi chọn được phiên bản phù hợp thì bấm tải về. Một trong những lý do tôi không thích các nền tảng mobile như Android hay iOS là vì chúng có quá nhiều phiên bản khác nhau. Riêng về Android thì lại đòi hỏi đủ thứ thư viện khác nhau, rồi mỗi một version của chúng lại lệ thuộc vào một version nào đó của các package khác. Đây là điểm cực kỳ phiền toái đối với các lập trình viên phát triển ứng dụng cho điện thoại, bạn sẽ khá đau đầu khi phải tìm kiếm các gói thư viện và phiên bản phù hợp cho project của mình. Cho nên, lâu lâu tôi đổi gió thử làm cho vui, chứ khá ngán mấy thứ linh tinh này.

Bước bốn là tải Gradle theo chỉ dẫn trong tài liệu của Unity. Sau đó bấm buid project và tôi gặp cái lỗi “Gradle failed”. Thông báo lỗi của Unity khá đơn giản, và dò trong một tá dòng lỗi từ Trace Stack cũng chẳng giúp được gì. Tôi thử export project Unity sang project android và mở lên bằng Android Studio. Sau khi build thử thì gặp cái thông báo cụ thể hơn là cái “build-tools 32.0.0 corrupted”, tức là cái lỗi này nằm trong đống tool của Android SDK, thử cài lại tới lui mà không hết, thử các version khác của Gradle cũng không đi tới đâu.


Cuối cùng phải nhờ thánh Google trợ giúp thì biết được thực chất là có một file trong folder build-tools/32.0.0 của Android SDK bị sai tên, cụ thể là file r8.exe và r8.bat, cách khắc phục là sửa tên hai file này thành rx.exe và rx.bat. Theo suy đoán cá nhân của tôi thì có ông dev nào đó trong team SDK của Google trong lúc bị deadline dí đã viết sai tên của tập tin, hoặc nếu không phải vậy thì lỗi là do ông dev của team phát triển engine Unity. Nói chung chỉ một trong hai ông này là người gây ra lỗi. Hy vọng trong tương lai các thứ linh tinh này được sửa, cho các lập trình viên mobile bớt khổ.

ĐƯA ỨNG DỤNG LÊN PLAY STORE

Cái bước này quá quen với các lập trình viên mobile, nhưng lại có nhiều điểm mới mẻ đối với tôi. Do tôi đã bỏ một thời gian dài không đụng đến các ứng dụng di động nữa. Sau khi đăng nhập vào lại Play Console thì thấy giao diện hoàn toàn mới, các app cũ ngày xưa làm đã bị Google xóa hết vì lâu rồi không cập nhật cho theo kịp các phiên bản mới của Android. Đây cũng là một điểm tôi ghét khi phải làm việc với các nền tảng di động. Bạn sẽ tốn cả đống thời gian để chạy theo đuôi các hãng lớn khi họ nâng cấp hệ điều hành hay là sửa đổi chính sách, kiểm duyệt các ứng dụng. Nếu bạn có một đội ngũ đông người làm chung, chuyện này không thành vấn đề, nhưng nếu bạn chỉ có một mình thì nó sẽ tốn rất nhiều năng lượng và thời gian của bạn cho những việc linh tinh thay vì dùng khoảng thời gian đó để chăm chút nội dung sản phẩm.

Sau khi dành thời gian để tự than phiền thì tôi cũng vẫn phải làm theo một số bước được hướng dẫn bởi Play Console, bao gồm nhập các thông tin cần thiết về nội dung của ứng dụng, chụp cắt một số hình ảnh để đưa lên, làm đánh giá độ tuổi của người dùng mà ứng dụng hướng tới, rồi phải làm một cái nội dung về chính sách bảo mật đối với các dữ liệu mà ứng dụn sẽ thu thập, mặc dù app của tôi không thu thập dữ liệu nào của người dùng. Nhưng nếu không điền bất cứ loại dữ liệu nào, thì bạn không thể hoàn thành bước này được, nên buộc lòng tôi phải chọn một loại dữ liệu vô hại nhất là địa chỉ email. Đôi khi muốn làm người tốt cũng khá khó, vì cái nền tảng này nó không cho mình lựa chọn khác.

Tiếp theo là upload ứng dụng lên store. Định dạng yêu cầu không còn là APK như xưa nữa, mà thay vào đó là AAB. Tức là khi dùng Unity để build ta phải chọn vô mục Bundle nữa. Nhưng vậy cũng chưa đủ, vì mặc định Scripting Backend trong Project Setting là Mono, nên ứng dụng build ra chỉ hỗ trợ kiến trúc ARMv7 (32 bit). Tôi phải upload lại vài lần mới biết hết được các yêu cầu đối với một ứng dụng Android là phải hỗ trợ các OS 32bit và 64bit, để làm được vậy thì phải chỉnh Scripting Backend sang IL2CPP, rồi chọn thêm ARM64. Lưu ý thêm là nếu lỡ upload lên mà sai, lần upload sau nhớ tăng cái code version lên, nếu không muốn phải tốn thời gian build lại. Nói chung là cũng có quá nhiều thứ linh tinh, lặt vặt không đáng có phải ghi nhớ.

Cuối cùng là chọn kiểu publish (phát hành), nó có vài kiểu như phát hành cho nội bộ kiểm tra, alpha testing dành cho nội bộ hoặc open testing dành cho một số người bên ngoài nào đó thử nghiệm. Cho dù chọn kiểu nào thì cũng phải chờ đội ngũ của Google thẩm định lại trong vòng bảy ngày cho mỗi lần cập nhật, một khoảng thời gian khá lâu. Theo như tôi biết được, Google dành nhiều thời gian để xem xét là do có quá nhiều ứng dụng rác được đưa lên store của họ mỗi ngày, trong đó có nhiều ứng dụng có chứa nguy cơ gây hại cho người dùng.


Đây là những gì tôi trải qua, và viết lại các kinh nghiệm trong lúc chờ đội ngũ Google duyệt cho ứng dụng được thử nghiệm.

Bài đăng gần đây

Xem tất cả

CẢM ƠN BẠN!

bottom of page