Chào mừng các bạn đến với các bài viết bổ sung cho chương trình học Android của Yellow Code Books.
Tiếp nối với thành công từ sự nâng cấp đáng giá ở phiên bản Android Studio 2.2 mà mình cũng có điểm qua. Đầu tháng 3 năm 2017, tức là cũng khoảng nửa năm trôi qua kể từ ngày đưa ra bản 2.2, Android Studio 2.3 đã được trình làng nhằm mang đến cho chúng ta, các lập trình viên Android, một công cụ lập trình tốt hơn, nhanh hơn và tiện dụng hơn.
Nào chúng ta hãy bắt đầu xem qua các cập nhật này nhé. Trước tiên thì mời bạn xem video giới thiệu sau. Nếu bạn “ngại” nghe tiếng Anh thì có thể bỏ qua video mà xem các tổng hợp của mình ở phần bên dưới.
Tách Biệt Hai Nút Run và Apply Changes
Đầu tiên hẳn bạn có thể dễ dàng nhìn thấy ngay thay đổi nhỏ về mặt UI trên Android Stuio 2.3 này, đó là việc tách biệt hai nút Run và Apply Changes
ra làm hai nút riêng biệt. Điều này giúp chúng ta dễ dàng đưa ra lựa chọn rằng có cần sử dụng tính năng Instant Run hay không. Bằng cách nhấn vào nút Apply Changes để kích hoạt Instant Run, còn nhấn vào Run sẽ khởi chạy ứng dụng một cách bình thường.
Vậy khi nào thì cần dùng đến tính năng Instant Run? Phần này dành cho bạn nào chưa từng thử nghiệm tính năng hữu ích này. Thì tính năng Instant Run này sẽ giúp chúng ta cải thiện đáng kể công việc thực thi ứng dụng, bằng cách giúp phân tích những thay đổi trên code, rồi đưa ra quyết định là có cần phải khởi động lại ứng dụng hay không. Trong một vài trường hợp với chỉnh sửa nhỏ, như là đổi text resource, thì việc khởi chạy với Instant Run sẽ cho bạn cái nhìn về việc thay đổi một cách gần như tức thì.
Để tính năng Instant Run hoạt động thì bạn nên thực thi trên hệ điều hành từ Android 5.0 trở lên.
Ngoài ra thì liên quan đến các tính năng thực thi này, Google có nói là họ đã tự động bật chức năng build cache lên, điều này giúp cho Android Studio 2.3 có thể thực thi app nhanh hơn các phiên bản trước.
Hỗ Trợ Công Cụ Chuyển Đổi Ảnh Sang Định Dạng WebP
Nếu bạn thường xuyên viết ứng dụng Android, thì có thể thấy rằng để đảm bảo một kích thước gọn nhẹ cho file APK khi xuất xưởng là một điều không dễ dàng gì. Và phần lớn nguyên nhân gây ra sự phình to một cách khó kiểm soát của file APK đó là các resource ảnh.
Biết được điều đó thì Android Studio 2.3 đã cung cấp cho chúng ta một công cụ để có thể chuyển đổi dễ dàng từ các file resource dạng PNG, BMP, JPG, và GIF sang dạng WebP.
Định dạng WebP là một định dạng ảnh của Google, theo như quảng cáo thì định dạng này có thể làm giảm kích thước lên đến 25% so với ảnh gốc.
Lưu ý là WebP chỉ được hỗ trợ từ hệ điều hành Android 4.0 (API level 14) trở lên. Và WebP có transparent thì được hỗ trợ từ hệ điều hành Android 4.3 (API level 18) trở lên. Do đó để xài tốt được định dạng này trên ứng dụng của bạn, thì bạn nên set tối thiểu cho minSdkVersion của mình trong build.gradle từ 14, tốt nhất là từ 18.
Cách Chuyển Đổi Sang WebP
Lưu ý là mình chỉ nói đến cách chuyển từ các file ảnh thông thường sang WebP thôi nhé, cách chuyển đổi ngược lại các bạn có thể xem thêm ở link này.
1. Ở cửa sổ Project, bạn hãy tìm đến thư mục resource có chứa ảnh. Bạn có thể click phải chuột vào bất kỳ file ảnh nào, hoặc vào thư mục ảnh. Rồi chọn Convert to WebP… như hình sau.
2. Dialog Converting Images to WebP xuất hiện với các tùy chọn. Các tùy chọn mặc định này sẽ phụ thuộc vào thông số minSdkVersion của bạn. Bước kế tiếp bên dưới mình sẽ nói rõ hơn xíu các tùy chọn này.
3. Tùy chọn Lossy encoding theo mình biết là sẽ giúp giảm dung lượng ảnh rất tốt, nhưng cũng làm mất đi chất lượng ảnh. Với tùy chọn này thì bạn có thể tùy chỉnh được chất lượng nén ảnh (như hình cho thấy con số chất lượng cần giữ lại là 75%). Bạn có thể check vào tùy chọn xem qua mỗi ảnh trước khi tiến hành chuyển đổi hay không (Preview/inspect each converted image before saving).
4. Tùy chọn Use lossless encoding cho bạn một giải thuật nén ảnh không làm mất đi chất lượng ảnh (khác với tùy chọn lossy ở trên), nhưng bù lại thì dung lượng ảnh sẽ không giảm đi nhiều. Tùy chọn này chỉ được dùng khi minSdkVersion của ứng dụng từ 18 trở lên mà thôi.
5. Các checkbox tiếp theo thì nghĩa của nó cũng khá rõ, nếu bạn cần quan tâm thi tiết có thể xem thêm ở đây.
6. Click OK ở dialog này sẽ bắt đầu thao tác chuyển đổi. Lưu ý là tùy chọn Use lossless encoding như nói ở trên sẽ khiến hệ thống thực hiện việc chuyển đổi ngay. Nhưng nếu bạn chọn Lossy encoding và có check vào ô Preview… gì đó thì nó sẽ dẫn bạn qua bước kế tiếp sau đây.
7. Dialog ở bước này giúp cho bạn có cái nhìn tổng thể giữa một bên là ảnh gốc (bên trái), và một bên là ảnh WebP (bên phải). Ở giữa sẽ cho bạn biết sự khác nhau giữa hai ảnh hai bên. Ở dialog này bạn còn có thể điều chỉnh lại chất lượng từng ảnh, lưu ý là nếu chất lượng ảnh càng giảm sẽ làm ảnh càng nhẹ, nhưng như vậy thì ảnh WebP cho ra sẽ rất xấu, như hình minh họa sau.
8. Bạn có thể nhấn Next nếu còn ảnh khác cần chuyển đổi. Hoặc nhấn Finish để hoàn tất thao tác.
Nói chung theo ý mình thấy thì tính năng này của Android Studio 2.3 rất dễ dùng. Bạn cứ thử mày mò đi nhé. Theo mình thử nghiệm với một project sau khi build ra APK với các ảnh bình thường thì “cân nặng” khoảng 8MB, sau khi áp dụng Lossy encoding thì APK còn lại 4MB, còn dùng Lossless encoding thì APK còn 6MB. Tùy các bạn chọn lựa cho mình các cách encoding phù hợp nhé.
Hỗ Trợ App Links Assistant
App Links thì có từ lâu rồi nhé, chức năng này giúp cho user có thể mở ứng dụng của bạn từ một link URL nào đó. Có nghĩa là nếu ở đâu đó có một đường dẫn URL, và khi mà user click vào đường dẫn này, nếu ứng dụng của bạn có định nghĩa App Link rồi, thì thay vì mở một trang web, app của bạn sẽ được gọi lên.
Nói vậy thì Android Studio 2.3 hỗ trợ gì? Vâng, phiên bản Android Studio mới này hỗ trợ chữ Assistant. Có nghĩa là nó hỗ trợ cho bạn một công cụ trực quan hơn để xây dựng App Links, giúp giảm thời gian code cho bạn.
Và vì các bước config và kiểm thử App Links khá dài, nên mình sẽ dành một bài nói riêng về nó. Nếu các bạn muốn biết sớm về kiến thức này thì có thể đọc ở đây.
Thêm Tính Năng Cho ConstraintLayout
ConstraintLayout đã được giới thiệu từ Android Studio 2.2. Và quả thực layout mới này mang đến một cách thiết kế giao diện cực kỳ thú vị. Hầu như các bạn chỉ cần kéo-thả, chỉnh sửa, ngắm nghía, rồi chạy thử, vậy là xong, không cần code gì cả (trừ trường hợp hiếm lắm sự kéo thả gây ra vài lộn xộn và bạn cần phải đọc code XML của nó và chỉnh sửa chút đỉnh). Nhưng dù sao thì layout mới này cũng quá tuyệt rồi, và mình cũng đang soạn một bài viết riêng về ConstraintLayout này, các bạn chờ xem nhé.
Với Android Studio 2.3 thì editor cho ConstraintLayout được nâng cấp thêm một số “công cụ” sau.
– Cho phép bạn chỉ định kích thước của view theo tỉ lệ (ratio). Chẳng hạn bạn có thể chỉ định tỉ lệ này là 2:1, hay 16:9, hay bất kỳ tỉ lệ nào mà bạn thích, bên cạnh việc canh chỉnh theo dp, hay theo các điểm neo, các padding, margin từ version trước. Mình nghĩ việc cập nhật này sẽ rất tốt cho các bạn muốn để vào một ảnh hay một video view.
– Ngoài ra, editor của ConstraintLayout ở phiên bản này này còn hỗ trợ bạn gom các view thành một nhóm theo phương ngang (horizontal) hay theo phương dọc (vertical), rồi chỉ định các thành phần trong nhóm đó co dãn theo kiểu Dàn ra (Spread – Kiểu số 1 và 2 bên dưới), theo Trọng số (Weighted – Kiểu số 3 bên dưới – Như trọng số của LinearLayout vậy), hay theo Gói (Packed – Kiểu số 4 bên dưới).
Nếu bạn muốn biết thêm thông tin về ConstraintLayout thì có thể xem thêm ở đây.
ConstraintLayout Nay Đã Là Layout Mặc Định
Nếu như bạn tạo một project mới từ các phiên bản Android Studio trước đó, thì RelativeLayout sẽ là layout mặc định của các project này. Còn với Android Studio 2.3 thì… thật vui vì ConstraintLayout chính là layout mặc định. Thậm chí khi bạn tạo mới một Activity từ bây giờ, nếu Activity đó có kèm giao diện XML được tạo sẵn, thì XML đó cũng có layout cha chính là ConstraintLayout.
Điều này giúp bạn tiếp cận gần hơn với ConstraintLayout, và cũng giúp mình nhanh chóng cho ra bài viết về layout thú vị này nữa.
Favorite Attributes Cho Cửa Sổ Properties
Chắc bạn cũng biết đến cửa sổ Properties? Nếu bạn không biết, thì có thể thấy được cửa sổ này khi thiết kế layout với tab Design. Như hình bên dưới mình có mô phỏng cửa sổ Properties và tab Design trong editor là như thế nào.
Với phiên bản cũ thì bạn phải nhấn vào nút View all properties ở cửa sổ Properties này để xem tất cả các thuộc tính có thể có của một view. Nhưng giờ đây với Android Studio 2.3 thì bạn có thể nhấn chọn vào hình ngôi sao ở danh sách thuộc tính, và rồi thuộc tính đó sẽ xuất hiện bên danh sách rút gọn cho bạn, và được gom nhóm vào trong một tiêu đề là Favorite Attributes. Giúp bạn có thể truy xuất nhanh đến các thuộc tính thường dùng. Bạn có thể nhìn vào hình minh họa sau.
Cập Nhật Nhỏ Cho Vector Asset Studio
Với mục này thì mình thấy chỉ có một cập nhật nhỏ thôi cho công cụ Vector Asset Studio. Nếu bạn có nhu cầu muốn biết, thì Vector Asset Studio là một công cụ trong Android Studio, nó xuất hiện khá lâu rồi chứ không phải đến phiên bản 2.3 này mới được hỗ trợ. Công cụ này giúp bạn đưa vào hệ thống các resource dạng vector một cách dễ dàng nhất. Các resource dạng vector là các ảnh có đuôi là SVG hoặc PSD. Các ảnh vector khác các ảnh thường ở chỗ nó gần như không quan tâm đến kích thước ảnh, với một ảnh vector thì khi bạn phóng lớn đến cỡ nào đi nữa thì ảnh vẫn không bị vỡ, điều này hoàn toàn khác với các ảnh thông thường. Mình sẽ có một bài viết đặc biệt về các ảnh vector này sau.
Quay lại với công cụ Vector Asset Studio, nhờ có công cụ này mà các file vector sẽ được tự động chuyển thành các file XML thay cho các file ảnh thường. Tuy nhiên nếu ứng dụng của bạn vẫn còn hỗ trợ cho các hệ điều hành cũ hơn, thì công cụ này còn giúp chuyển đổi ảnh vector đó về lại định dạng PNG để các hệ điều hành cũ có thể thoải mái sử dụng (phần này mình chưa được kiểm chứng).
Nay với Android Studio 2.3 thì Vector Asset Studio được thêm vào tính năng… tìm kiếm tên file khi bạn vào tìm các resource vector trong thư viện vector của Material có sẵn.
Thực sự thì Vector Asset Studio không hề khó sử dụng, nếu bạn muốn thì có thể đọc và làm theo các bước ở đây. Còn nếu cần một bài viết demo về cách sử dụng thì có thể để lại email cho mình, hoặc bình luận bên dưới bài viết hôm nay nhé.
Thêm Một Annotation Mới Và Thêm Tính Năng Cho Một Annotation Cũ
Có thể nói annotation là một trong những công cụ giúp kiểm tra lỗi, một trong số đó có thể bạn cũng đã biết đó là công cụ Lint. Tất cả các công cụ kiểm tra lỗi này mang đến cho bạn một sự ràng buộc nhất định trong việc code, chẳng hạn nó dự báo trước các biến có khả năng null, các kiểu dữ liệu truyền vào không hợp lệ, hay các hàm không tương thích với version của hệ điều hành,… Việc ràng buộc này là hợp lý vì nó giúp bạn tránh các lỗi gây ra khi đưa ứng dụng vào thự tế.
Tất cả về cách sử dụng cũng như chức năng của từng loại annotation đã được Google liệt kê khá đầy đủ ở đây. Và dĩ nhiên mình cũng đang tổng hợp về vấn đề này ở trong bài viết khác của mình.
Với Android Studio 2.3 thì Google đã cung cấp cho chúng ta một annotation đáng giá nữa, đó là @RestrictTo. Và thêm vào tùy chọn otherwise cho annotation cũ @VisibleForTesting.
– @RestrictTo: annotation mới này giúp bạn giới hạn quyền truy cập vào trong các package, các class hay các method trong code của bạn. Chẳng hạn như nếu có một hàm (method) nào đó được đánh annotation là @RestrictTo(RestrictTo.Scope.SUBCLASSES), nó sẽ giúp cho hàm đó trở thành không thể truy xuất được từ bên ngoài, mà chỉ được gọi đến từ class con của nó mà thôi, dù cho bạn có set hàm này là public. Bạn có thể thắc mắc rằng nếu một hàm được set là protected thì cũng chỉ được dùng đến từ class con, chứ không gọi đến được từ bên ngoài? Bạn chắc chứ? 😉
– @VisibleForTesting: annotation này giúp bạn chỉ định function nào dành cho test mode mà thôi. Giờ đây thì annotation được tăng cường thêm tham số truyền vào otherwise giúp bạn chỉ định mức độ truy xuất đến với các hàm test này. Giống như là cách sử dụng các từ khóa private, public mà bạn hay dùng vậy.
Hỗ Trợ In Report Từ Lint
Có vẻ như lần này Google quyết tâm xuống đường lấy lại vỉa… à không, lấy lại chất lượng sản phẩm. Càng ngày các lập trình viên Android càng có được trong tay các công cụ tốt giúp chẩn đoán nhanh các lỗi có thể xảy ra ở môi trường thật trước khi cho xuất xưởng sản phẩm. Và đây, một chức năng mới của công cụ Lint, chức năn in ra report để bạn có thể thoải mái nghiên cứu và sửa lỗi, tránh trường hợp chạy đi chạy lại chức năng Lint.
Cách Dùng Lint
Ở mục này mình xin trình bày lại một chút cách dùng công cụ Lint để kiểm tra lỗi, chắc nhiều bạn biết rồi. Bạn nào đã biết dùng Lint như thế nào thì có thể bỏ qua mục này nhé.
1. Cách nhanh nhất để bạn có thể chạy công cụ Lint là từ Android Studio bạn vào menu Analyze > Inspect Code…
2. Dialog Specify Inspection Scope xuất hiện cho bạn tùy chọn muốn Lint khởi chạy kiểm tra code ở cả project, hay module nào đó,… Bạn có thể để mặc định rồi nhấn OK.
3. Đợi một lúc, kết quả từ Lint sẽ cho bạn biết các cảnh báo (warning) hay các lỗi (error) có thể có trong ứng dụng. Nếu bạn không có thời gian chỉnh sửa lại code để giảm thiểu các cảnh báo, thì hãy tập trung vào các lỗi. Các lỗi này có thể trình biên dịch sẽ không báo khi bạn build ứng dụng đâu, nhưng nó có thể gây ra việc crash ứng dụng khi ở ngoài thị trường. Như hình ví dụ dưới đây cho thấy việc báo lỗi rằng các thiết bị dùng hệ điều hành trước Android 5.0 sẽ không thể thấy được các ảnh vector.
Hỗ Trợ In Report
Với phiên bản Android Studio 2.3 này, ngoài việc xem kết quả của công cụ Lint in ra cửa sổ Inspection Results như trên, bạn còn có thể kêu hệ thống in kết quả này ra file để có thể sử dụng ở những lần sau nữa.
1. Đầu tiên bạn hãy mở file build.gradle ở cấp độ module ra. Sau đó tìm đến khối android và thêm vào khai báo cho khối lintOptions như code sau. Như vậy là bạn vừa chỉ định nơi sẽ chứa nội dung report từ Lint rồi đó.
android { lintOptions { baseline file("lint-baseline.xml") } }
2. Vào menu Analyze > Inspect Code… để tiến hành kiểm tra lỗi từ Lint như bình thường. Sau khi kết quả Lint hiện ra ở cửa sổ Inspection Results, thì bạn có thể tìm trong cửa sổ Project (tốt nhất là chọn chế độ view là Project ở cửa sổ này), bạn sẽ dễ dàng tìm thấy file lint-baseline.xml chứa đầy đủ các lỗi và cảnh báo từ Lint.
Trên đây mình đã tổng hợp lại những cập nhật cho Android Studio 2.3 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, mà 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 đánh giá 5 sao nếu thấy thích bài viết, hãy comment bên dưới nếu có thắc mắc, hãy để lại địa chỉ email của bạn để nhận được thông báo mới nhất khi có bài viết mới, và nhớ chia sẻ các bài viết của Yellow Code Books đến nhiều người khác nữa nhé.
Reblogged this on gioilaptrinh.
Rất thú vị!