Chào mừng các bạn đã đến với bài viết về Android Studio 3.2. Đây là bài viết trong các bài bổ sung cho chương trình học Android của Yellow Code Books.
Thời gian trôi qua rất nhanh, nhanh đến nỗi mà mình đã khuyết hẳn một bài viết về Android Studio 3.1. Để rồi Android Studio 3.2 này ra đời rồi mình mới thấy bất ngờ. Nhưng may mà Android Studio 3.1 cũng không có nhiều những cái mới mẻ lắm, bạn có thể xem lại những cập nhật của phiên bản cũ 3.1 ở link này nếu muốn.
Các tính năng mới trên Android Studio 3.2 được nhắc đến từ sự kiện Google I/O 2018. Tập trung lớn nhất trên công cụ lập trình Android này là giúp các lập trình viên xây dựng các ứng dụng tốt nhất trên hệ điều hành Android 9 Pie, đồng thời theo sát tham vọng Android App Bundle. Ngoài ra còn có vô số cập nhật thú vị khác nữa. Mời các bạn cùng đến với bài viết để cùng nhau xem qua những điều mới mẻ đối với hệ điều hành Android và công cụ chính để xây dựng ứng dụng trên hệ điều hành này nhé.
Sample Data
Tính năng đầu tiên mình muốn giới thiệu với các bạn, đó là Sample Data.
Thực ra cái Sample Data này mình thấy xuất hiện lâu rồi, từ các phiên bản Android Studio trước cơ. Vậy Sample Data là gì? Có bao giờ bạn thiết kế một giao diện Android, mà ở các TextView bạn phải điền sẵn các nội dung cho nó, như “test”, hay “1234”, đại loại là có bất cứ text nào, mục đích chính là mong muốn được nhìn xem giao diện lúc thiết kế nó như thế nào thôi, đúng không nào. Trớ trêu thay cái vấn đề thêm vào nội dung text ở môi trường thiết kế này, nếu bạn quên xóa nó đi, thì khi ứng dụng chạy ở thực tế, rất có thể các nội dung rác này sẽ hiển thị ra cho người dùng đấy. Mình đã từng gặp “tai nạn” này rồi.
Với các phiên bản Android Studio trước thì tính năng Sample Data này cũng đã được hỗ trợ, bạn có thể thêm chúng bằng cách chỉ định các giá trị này ở XML code thông qua bộ thuộc tính của tools, hoặc nhanh hơn bạn có thể chỉ định thông qua cửa sổ Attributes khi thiết kế UI, như hình sau.
Lưu ý rằng các Sample Data này chỉ hiển thị khi thiết kế thôi, sau khi bạn thực thi ứng dụng, chúng sẽ bị loại bỏ trong file APK. Sang đến phiên bản 3.2 này, thì Android Studio đã nâng cấp tính năng Sample Data sao cho chúng ta có thể thêm vào các dữ liệu được thiết kế sẵn một cách nhanh chóng, ngay trong cửa sổ thiết kế. Tuy nhiên sự hỗ trợ này cũng chỉ mới áp dụng cho TextView, ImageView và RecycleView thôi. Mình mời bạn xem qua các cách thức dưới đây để biết cách sử dụng tính năng này nhé.
Thêm Sample Data Cho TextView
Trong khi thiết kế, nếu bạn click vào TextView, và nếu TextView này đang rỗng (hoặc đang chứa dữ liệu mặc định là “TextView” ban đầu), thì bạn sẽ nhìn thấy icon . Click vào icon này bạn sẽ thấy các bộ dữ liệu mẫu. Bạn hãy chọn một bộ trong số các phần tử xổ xuống trong cửa sổ Design-time View Attributes đi nào. Chẳng hạn như mình chọn full_names từ cửa sổ này như hình sau, kết quả dữ liệu mẫu sẽ hiển thị “Trinity Bass” trên TextView, đây là tên đầy đủ mẫu của một người nào đó. Quá dễ đúng không nào.
Thêm Sample Data Cho ImageView
Cũng vẫn dễ dàng như với TextView, với ImageView thì bạn cũng hãy tìm và click vào icon , bạn cũng sẽ thấy các tùy chọn tương ứng với widget hiển thị ảnh này, mà mình đoán là không cần phải trình bày dài dòng, nhìn vào là bạn đã biết dùng.
Thêm Sample Data Cho RecyclerView
Với RecyclerView thì bạn cũng vẫn tìm và click vào icon khi RecyclerView này được chọn. Rồi bạn hãy chọn các Sample Data tạo sẵn, chúng bao gồm các item chỉ có text, hoặc vừa ảnh vừa text như hình dưới. Khi bạn tạo Sample Data cho RecyclerView thì hệ thống cũng sẽ tạo sẵn trước một XML item trong thư mục layout/. XML item này có cái tên mặc định là recycler_view_item.xml.
Hỗ Trợ Refactoring AndroidX
Phần này nếu ghi đầy đủ phải là: Hỗ trợ tái cấu trúc project sao cho có thể chuyển sang sử dụng AndroidX. Vậy thì AndroidX là gì? AndroidX là một thành phần nhỏ trong gói Android Jetpack. Mà Android Jetpack lại là một tập hợp lớn các thành phần, trong đó có Android Architecture Component mà mình cũng đang viết. Vậy quay lại câu hỏi đầu tiên, bạn có thể hiểu AndroidX là một gói thư viện mới, nó thay thế hoàn toàn gói thư viện Android Support ngày xưa. Cụ thể cách sử dụng AndroidX như thế nào thì mình đã có dự định sẽ sửa chữa lại các bài học Android của mình sao cho có thể sử dụng sang AndroidX, và lồng ghép các kiến thức AndroidX vào các bài học đó.
Quay lại bài viết. Với việc giới thiệu sơ sơ trên kia thì bạn cũng đã biết rằng AndroidX đã có từ trước rồi. Vậy Android Studio 3.2 này giúp bạn điều gì, nó giúp bạn có thể tái cấu trúc ứng dụng (refactoring) sao cho ít công sức nhất vẫn có thể nhanh chóng hỗ trợ AndroidX thay cho các thư viện Android Support cũ như mình đã nói trên kia.
Để thực hiện việc chuyển đổi tự động từ Android Support sang AndroidX, bạn hãy chọn menu Refactor > Migrate to AndroidX.
Sau khi thực hiện việc chọn menu chuyển đổi, hệ thống sẽ gợi ý bạn nên tạo bản backup đối với project trước khi thực hiện, gợi ý đó nằm trong popup như sau.
Nếu bạn check chọn Backup project as Zip file từ popup gợi ý này, rồi nhấn Migrate, nó sẽ nén toàn bộ project của bạn lại thành một file Zip, tùy bạn cất giữ đâu đó. Sau khi lưu lại bản backup thành file Zip, hệ thống thực hiện việc kiểm tra một lúc project của bạn. Rồi đưa ra bản tổng kết như sau. Đến bước này thì chưa có gì thay đổi cả. Nếu bạn vẫn quyết định việc chuyển đổi, hãy tiếp tục nhấn vào Do Refactor ở cửa sổ sau.
Kết quả cuối cùng sẽ trông như sau ở file build.gradle. Bạn xem, tất cả thư viện của com.android.support đã được thay bằng androidx.*.
Ngoại trừ các thay đổi ở file build.gradle này ra, thì ở gradle.properties cũng có chút thay đổi. Bạn có thể xem thêm bài viết này của Google để hiểu rõ hơn về các thay đổi này nhé.
Thêm Công Cụ Energy Profiler
Còn nhớ, ở bài viết về Android Studio 3.0, mình cũng có nói đến một công cụ mới toanh lúc bấy giờ từ Google mang tên Android Profiler, bạn có thể tham khảo bài viết này ở đây. Cơ bản thì đây là một tập hợp các báo cáo theo thời gian thực các mức độ sử dụng tài nguyên thiết bị từ ứng dụng của bạn, như CPU, RAM, băng thông mạng,… Hoặc các thể hiện khác từ ứng dụng như các sự kiện touch, Activity đang chạy, sự kiện xoay màn hình,… Thì nay, Google đã bổ sung thêm vào “bộ sưu tập” này một “đồ chơi” mới có tên Energy Profiler.
Theo mình thì đây là một công cụ khá hay mà bạn nên sử dụng nó thường xuyên. Nó sẽ giúp bạn chẩn đoán được lượng tiêu hao pin trên thiết bị mà ứng dụng của bạn thực thi sẽ như thế nào.
Để có thể xem được Energy Profiler thì bạn phải thực thi ứng dụng lên thiết bị (và nhớ phải là thiết bị chạy Android 8.0 trở lên nhé). Sau đó bạn mở cửa sổ Android Profiler từ Android Studio lên. Cách để mở Android Profiler đã được mình trình bày kỹ ở bài viết từ link mình vừa cung cấp trên đây nhé. Bạn có thể nhìn ảnh động dưới đây để tham khảo cách thức xem các thông số từ chức năng này. Hoặc bạn có thể xem toàn bộ cách sử dụng công cụ Energy Profiler ở link gốc này nhé.
Android App Bundle
Android App Bundle đã được mình nhắc đến từ đầu bài viết như là một chức năng chính mà Android Studio 3.2 hỗ trợ. Nó là một định dạng mới cho phép bạn xuất bản ứng dụng Android lên Google Play với dung lượng tải lên của ứng dụng nhỏ hơn, và tất nhiên, khi đó, giúp giảm thời gian tải xuống cho người dùng.
Vậy thì Google đã làm điều đó như thế nào? Google cung cấp cho bạn 2 chức năng nhỏ trong định dạng Android App Bundle này. Một là Dynamic Delivery và hai là Dynamic Feature Module.
Dynamic Delivery
Dynamic Delivery có thể nói là cách thức nhanh và dễ dàng nhất để giảm dung lượng của ứng dụng trên Goole Play, vì bạn chỉ cần tốn vài bước nhỏ thôi. Với cách này, Google sẽ tạo ra bản cài đặt chứa sẵn nhiều thông tin tối ưu theo từng loại cấu hình của thiết bị, và sau đó người dùng chỉ cần tải xuống code và các resource đúng với thiết bị của họ mà thôi. Tất nhiên là với cách này, ứng dụng của bạn phải tuân thủ theo việc tổ chức resource theo chuẩn Alternative Resource đấy nhé. Bạn có thể xem thêm kiến thức về Alternative Resource ở link của YellowCodeBooks, hoặc link của Google cũng được. Tất cả những gì bạn cần bây giờ là Android Studio 3.2 hoặc mới hơn, sau đó hãy chọn menu như hình dưới để build ra file .aab (chứ không phải .apk như truyền thống). Và bởi vì kết quả của sự build cho ra là file .aab (Android App Bundle) nên bạn không thể dùng file này để install lên thiết bị Android được, file .aab chỉ được dùng để đưa ứng dụng lên Goolge Play mà thôi. Do đó, mình lưu ý rằng, nếu bạn muốn install ứng dụng lên thiết bị, để test chẳng hạn, thì bạn lại phải build song song cả 2 file .aab và .apk.
Dynamic Feature Module
Nếu như với Dynamic Delivery trên kia, thì hệ thống đã phân tích trước, và tạo ra nhiều thông tin sẵn có cho file cài đặt, để khi người dùng cài đặt lên máy của họ, các phân tích này đã biết được nên cài đặt gói APK nào rồi. Vậy còn Dynamic Feature Modile này lại là một công dụng khác. Với nó, bạn phải chia nhỏ ứng dụng ra làm nhiều module nữa. Các module này có thể chưa được cài đặt ban đầu ở thiết bị của người dùng. Đến khi mà người dùng thật sự dùng đến function ở module đó, họ mới tiến hành cài đặt tiếp tục các module liên quan. Điều này được cho là còn có thể tiết kiệm dung lượng tải ứng dụng về của người dùng nhiều hơn nữa, bởi vì không phải ai cũng sử dụng hết các chức năng trong ứng dụng, việc tách module giúp cho người dùng chẳng bao giờ dùng đến các chức năng nào đó không phải tốn công để tải về cái chức năng đó.
Tuy nhiên thì Dynamic Feature Module cần nhiều “chất xám” của bạn hơn trong việc tổ chức các module. Và cho đến hôm nay thì Dynamic Feature Module này vẫn đang ở tính năng beta (chưa chính thức). Nên mình sẽ không nói dông dài về nó, bạn có thể đọc ở link này của Google nếu muốn vọc trước tính năng này nhé.
Hỗ Trợ Slices
Theo mình biết thì khái niệm Slices đã có từ khi Android Jetpack ra đời, và sự thực thì Slices đúng là một phần trong Android Jetpack (Android Jetpack đã được mình nhắc đến ở mục Hỗ Trợ Refactoring AndroidX ở trên kia rồi nhé). Tuy nhiên, mình chưa có cơ hội tìm hiểu kỹ Slices lắm. Chỉ biết rằng nó là một tập hợp các UI dựng sẵn, giúp các ứng dụng khác bên ngoài (như Google Search hay Google Assistant) có thể hiển thị và tương tác với nội dung bên trong ứng dụng của chúng ta.
Với Android Studio 3.2 thì Slices được hỗ trợ một cách chính thức, bằng cách cung cấp cho bạn sẵn một template, giúp bạn dễ dàng và nhanh chóng hơn trong việc thiết kế tính năng này trong ứng dụng của bạn. Template này được gọi ra từ menu theo như hình dưới đây. Có một điều mình lưu ý là tùy chọn Slice Provider ở menu này mặc định sẽ xám xịt và không chọn được, để làm cho nó sáng lên và chọn được thì bạn phải đảm bảo project của bạn đang sử dụng các thư viện trong gói androidX hết đấy nhé (xin xem lại AndroidX ở mục trên đây của bài viết).
Và vì mình chưa tìm hiểu kỹ Slices nên cũng không có nhiều thông tin để viết tiếp. Bạn có thể xem trước việc xây dựng Slices cho ứng dụng như thế nào, cách thức để nhận tương tác từ bên ngoài ra sao, và ứng dụng của bạn sẽ hiển thị ở phía người dùng như thế nào (bằng cách dùng một ứng dụng giả lập khác) thì bạn có thể xem thêm ở link này nhé.
AVD Có Thêm Chức Năng Snapshot
Đợt ra mắt của Android Studio 3.2 này có bổ sung thêm nhiều “đồ chơi” nữa cho máy ảo Android (AVD). Một trong số đó có thể kể đến là chức năng Snapshot. Với chức năng này thì bạn có thể thoải mái tạo ra các “điểm dừng” ở bất kỳ trạng thái nào của máy ảo, đó có thể là bất kỳ màn hình nào của ứng dụng đang chạy. Hệ thống sẽ lưu lại các thiết lập, trạng thái, và dữ liệu người dùng ở các “điểm dừng” đó, để rồi sau đó bạn có thể chỉ định máy ảo trở lại bất cứ “điểm dừng” nào trong danh sách các “điểm dừng” này.
Để vào chức năng Snapshot, bạn hãy khởi chạy máy ảo lên, chọn vào icon bên phải máy ảo, bạn sẽ dễ dàng tìm thấy mục Snapshots thôi.
Để tạo bất kỳ một Snapshot nào, bạn hãy nhấn nút TAKE SNAPSHOT như ở minh họa dưới đây. Một dòng Snapshot sẽ xuất hiện ở danh sách bên trên đó. Để nhanh chóng đến được Snapshot đã lưu, hãy chọn Snapshot trong danh sách và nhấn vào nút ở góc trái bên dưới cửa sổ này. Bạn có thể xem hình động minh họa sau.
Các Cập Nhật Khác
Sau đây là một số cập nhật khác nữa, đối với mình thì đó là các cập nhật nhỏ hơn, nhưng cũng khá quan trọng để được chúng ta lưu tâm đến.
Cửa Sổ Assistant Có Thêm Nội Dung
Mình đã từng dùng đến cửa sổ Assistant này rồi, cửa sổ này xuất hiện ở bên phải của Android Studio. Cơ bản ngày xưa nó cung cấp cho chúng ta một cách thức dễ nhất để tích hợp các tính năng mới cho project. Điển hình nhất có thể kể đến là Firebase Assistant, hay App Links Assistant.
Và rồi Android Studio 3.2 lần này đã thêm vài nội dung nữa vào cửa sổ Assistant này, nội dung đầu tiên có tên gọi là What’s New Assistant. Theo như Google nói thì cửa sổ What’s New này sẽ được tự động mở lên để mà nói cho bạn biết các tính năng mới đối với Android Studio mỗi khi nó được cập nhật. Bạn có thể mở cửa sổ này lên một cách thủ công bằng cách vào menu Help > What’s New in Android Studio.
Thêm nữa, nếu bạn chọn menu Tools > Connection Assistant, bạn sẽ thấy một nội dung khác của Assistant này. Connection Assistant giúp bạn khắc phục các vấn đề liên quan đến kết nối ADB. Chắc bạn đã biết rồi, ADB – Android Debug Bridge, là một công cụ cầu nối giữa thiết bị Android và máy tính, giúp bạn thực thi ứng dụng Android từ máy tính lên các thiết bị Android này để kiểm tra hay debug lỗi.
Hỗ Trợ Xây Dựng Ứng Dụng Với Material Component
Theo mình biết thì Android Studio 3.2 sẽ hỗ trợ bạn sử dụng các widget mới trong bộ Material Component, như BottomAppBar, TextInputLayout, Chip và nhiều widget khác nữa. Tất cả những gì bạn cần là hãy tìm hiểu về Material Component này nhé. Vì đây là một thư viện mới, chứa đựng khá nhiều thành phần UI mới của Android, giúp bạn thiết kế nhanh các ứng dụng theo chuẩn Meterial Design của Android. Nên bạn hãy dành thời gian tìm hiểu qua. Hoặc mình sẽ tìm cách lồng ghép các kiến thức này vào các bài học Android của mình sau nhé.
Hỗ Trợ Quay Màn Hình Trên Máy Ảo
Không biết bạn có dùng nhiều không, chứ mình thì mình dùng khá nhiều tính năng quay màn hình này của Android Studio đấy. Tính năng này cho phép quay phim lại màn hình của thiết bị trong thời gian tối đa 3 phút, rồi xuất ra theo định dạng MP4, giúp ích rất nhiều cho các tác vụ quảng cáo hay tìm ra lỗi sản phẩm. Nhưng nếu nói như vậy có nghĩa là tính năng này đã xuất hiện khá lâu từ trước ở các phiên bản Android Studio cũ rồi. Nhưng khi đó tính năng này chỉ hỗ trợ quay màn hình trên các thiết bị thật chạy Android 4.4 Kitkat (API 19) trở về sau thôi. Với máy ảo khi đó thì chức năng này cũng khá hạn chế. Nhưng nay Android Studio 3.2 đã mở rộng ra hỗ trợ cho việc quay màn hình máy ảo, và cho tất cả phiên bản hệ điều hành của máy thật. Mình nghe nói là có hỗ trợ cả quay màn hình với âm thanh kèm theo nữa.
Để sử dụng tính năng này, bạn hãy đảm bảo cửa sổ Logcat được mở. Sau đó tìm đến nút sau trong cửa sổ này (nhớ đảm bảo tên thiết bị ảo hay thật xuất hiện trong khung chọn ở trên của cửa sổ nhé, như trong hình là thiết bị ảo Emulator Nexus_5X_AP…).
Nhấn vào đó bạn sẽ thấy một cửa sổ xuất hiện tiếp theo với một vài tùy chọn, bạn có thể xem ý nghĩa của một vài tùy chọn đó khi nhấn vào nút hình dấu hỏi ở phía dưới cửa sổ này. Hoặc bạn có thể để mặc định và nhấn Start Recording.
Sau khi nhấn Start Recording, hãy sử dụng thiết bị của bạn, hệ thống đang quay lại màn hình đấy. Khi xong việc bạn nhấn vào Stop Recording và lưu lại thôi. Dễ mà. Chúc bạn thành công.
Sử Dụng InteliJ Platform Phiên Bản 2018.1.6
Bạn cũng biết Android Studio là một IDE được xây dựng dựa trên nền tảng InteliJ IDEA mà đúng không nào. Vậy với phiên bản mới Android Studio 3.2 này, Google cũng đã nâng cấp với phiên bản mới nhất của InteliJ IDEA luôn rồi, phiên bản mới này có mã là 2018.1.6.
Phiên bản mới này của InteliJ IDEA được cập nhật rất nhiều tính năng mới, như nâng cấp việc kiểm tra lỗi khi code, nâng cấp việc tự động hoàn thành code, cũng như đưa ra nhiều gợi ý hơn cho việc xóa các code dư thừa, sửa code, hỗ trợ thay đổi tên của module, và nhiều thứ hay ho khác mà bạn có thể tham khảo thêm ở link này.
Nâng Cấp Ngôn Ngữ Kotlin
Android Studio 3.2 hỗ trợ phiên bản Kotlin 1.2.61 (giờ thì bạn có thể sử dụng phiên bản mới hơn nữa kia). Theo như trang blog của Google có nói, đây là phiên bản Kotlin-thân-thiên-hơn (Kotlin-friendly). Thân thiện ở chỗ nào, điều này mình cũng chỉ mới đọc thôi, rằng để làm tăng thêm sự an toàn của Kotlin trước các lỗi liên quan đến NullPointerException, đặc biệt các lỗi này xảy ra khi Kotlin gọi đến các API được viết bằng ngôn ngữ Java, hoặc ngược lại, khi mà Java không hề đảm bảo việc kiểm tra giá trị null, sẽ làm cho Kotlin mất đi tính năng bảo vệ trước các giá trị này. Với phiên bản mới của Android SDK, Kotlin đã “an toàn” hơn khi mà hệ thống đã thêm vào các @NotNull annotation vào các thành phần Java API được sử dụng phổ biến. Như vậy thì khi code, chúng ta sẽ nhận được các cảnh báo kịp thời từ hệ thống khi cố gắng truyền vào các giá trị null cho các thành phần này. Điều này thì bạn có thể tự kiểm chứng thông qua trải nghiệm nhé.
Trên đây là những tổng hợp của mình về những cập nhật trên Android Studio 3.2 mà theo mình là đáng giá nhất. Tất nhiên cũng còn những cập nhật khác nữa, biết đâu đối với bạn đó mới là những cái hay. Hãy tìm hiểu hoàn chỉnh các cập nhật mới ở đây nếu bạn thích nhé.
Cảm ơn bạn đã đọc các bài viết của Yellow Code Books. Bạn hãy ủng hộ blog bằng cách:
– Đánh giá 5 sao bên dưới mỗi bài nếu thấy thích.
– Comment bên dưới mỗi bài nếu có thắc mắc.
– Để lại địa chỉ email của bạn ở thanh bên phải để nhận được thông báo sớm nhất khi có bài viết mới.
– Chia sẻ các bài viết của Yellow Code Books đến nhiều người khác.
rất hay, cần thêm nhiều bài viết về Jetpack nữa bạn nhé.
Mình cũng đang viết về App bundle và Dynamic delivery trong Android
http ở đây, mong dk trao đổi vs các bạn:
https://viblo.asia/p/app-bundle-va-dynamic-delivery-trong-android-bJzKmwOYl9N