Android Studio 3.4 (tháng 4 năm 2019)
Android Studio 3.4 là một bản phát hành chính có nhiều tính năng và điểm cải tiến mới.
Phiên bản 3.4.2 (Tháng 7 năm 2019)
Bản cập nhật nhỏ này bao gồm nhiều bản sửa lỗi và điểm cải tiến hiệu suất. Để xem danh sách những bản sửa lỗi đáng chú ý, hãy đọc bài đăng liên quan trên blog Thông tin cập nhật về bản phát hành.
Phiên bản 3.4.1 (Tháng 5 năm 2019)
Bản cập nhật nhỏ này bao gồm nhiều bản sửa lỗi và điểm cải tiến hiệu suất. Để xem danh sách những bản sửa lỗi đáng chú ý, hãy đọc bài đăng liên quan trên blog Thông tin cập nhật về bản phát hành.
Vấn đề đã biết về phiên bản 3.4.0
Tính năng phân tích tài nguyên bị tắt khi triển khai ứng dụng cho một thiết bị chạy Android Q Beta.
- Khi bạn sử dụng Thư viện liên kết dữ liệu, có thể
LiveDataListener.onChanged()
sẽ gặp lỗi NPE. Bản sửa lỗi cho vấn đề này sẽ được đưa vào Android Studio 3.4.1 và sẽ có trong Phiên bản xem trước mới nhất của Android Studio 3.5. (Xem vấn đề #122066788)
IntelliJ IDEA 2018.3.4
IDE Android Studio chính đã được cập nhật với các điểm cải tiến từ IntelliJ IDEA thông qua bản phát hành 2018.3.4.
Tính năng cập nhật của trình bổ trợ Android cho Gradle 3.4.0
Để biết thông tin về các tính năng mới trong trình bổ trợ của cho Gradle 3.4.0, hãy xem các bản ghi chú phát hành của trình bổ trợ này.
Hộp thoại cấu trúc dự án mới
Hộp thoại cấu trúc dự án (PSD) mới giúp bạn dễ dàng cập nhật các phần phụ thuộc và định cấu hình nhiều khía cạnh của dự án, chẳng hạn như các mô-đun, biến thể bản dựng, cấu hình ký tên và biến thể bản dựng.
Bạn có thể mở PSD bằng cách chọn Tệp > Cấu trúc dự án (File > Project Structure) trên thanh trình đơn. Bạn cũng có thể mở PSD bằng cách nhấn Ctrl+Shift+Alt+S
trên Windows và Linux hoặc Command+;
(dấu chấm phẩy) trên macOS. Bạn có thể xem phần mô tả về một số mục mới, được cập nhật của PSD ở bên dưới.
Biến
Mục biến mới của PSD cho phép bạn tạo và quản lý biến thể bản dựng, chẳng hạn như các biến giúp duy trì sự nhất quán số phiên bản giữa các phần phụ thuộc trên dự án.
- Nhanh chóng xem và chỉnh sửa các biến thể bản dựng đã tồn tại trong tập lệnh bản dựng Gradle của dự án.
- Thêm các biến thể bản dựng mới ở cấp dự án hoặc cấp mô-đun ngay trong PSD.
Lưu ý: Nếu các tệp cấu hình bản dựng hiện có của bạn gán giá trị thông qua tập lệnh Groovy phức tạp, thì có thể bạn không chỉnh sửa được các giá trị đó thông qua PSD. Ngoài ra, bạn còn không chỉnh sửa được các tệp bản dựng viết bằng Kotlin thông qua PSD.
Mô-đun
Định cấu hình các thuộc tính áp dụng cho mọi biến thể bản dựng trong một mô-đun hiện có hoặc thêm các mô-đun mới vào dự án của bạn qua phần Modules (Mô-đun). Ví dụ: đây là nơi bạn có thể định cấu hình các thuộc tính của defaultConfig
hoặc quản lý các cấu hình ký tên.
Phần phụ thuộc
Kiểm tra và trực quan hoá từng phần phụ thuộc trong biểu đồ phần phụ thuộc của dự án, do Gradle giải quyết trong quá trình đồng bộ hoá dự án, bằng cách làm theo các bước sau:
- Trong ngăn bên trái của PSD, hãy chọn Dependencies (Phần phụ thuộc).
- Trong ngăn Mô-đun (Modules), hãy chọn một mô-đun mà bạn muốn kiểm tra các phần phụ thuộc đã được giải quyết.
- Ở phía bên phải của PSD, hãy mở ngăn Phần phụ thuộc đã giải quyết (Resolved Dependencies), như minh hoạ bên dưới.
Bạn cũng có thể nhanh chóng tìm kiếm và thêm phần phụ thuộc vào dự án bằng cách chọn một mô-đun trong phần Dependencies (Phần phụ thuộc) của PSD trước tiên, sau đó nhấp vào nút (+) trong phần Declared Dependencies (Phần phụ thuộc đã khai báo) rồi chọn loại phần phụ thuộc mà bạn muốn thêm.
Tuỳ thuộc vào loại phần phụ thuộc mà bạn chọn, bạn sẽ thấy một hộp thoại tương tự như hộp thoại dưới đây, giúp bạn thêm phần phụ thuộc vào mô-đun.
Biến thể bản dựng
Trong phần này của PSD, hãy tạo và định cấu hình các biến thể bản dựng cũng như phiên bản sản phẩm cho mỗi mô-đun trong dự án của bạn. Bạn có thể thêm phần giữ chỗ cho tệp kê khai, thêm tệp ProGuard và chỉ định khoá ký, v.v.
Nội dung đề xuất
Xem nội dung cập nhật đề xuất cho các phần phụ thuộc của dự án và biến thể bản dựng trong phần Suggestions (Nội dung đề xuất), như minh hoạ dưới đây.
Trình quản lý tài nguyên mới
Resource Manager (Trình quản lý tài nguyên) là một cửa sổ công cụ mới dùng để nhập, tạo, quản lý và sử dụng các tài nguyên trong ứng dụng của bạn. Bạn có thể mở cửa sổ công cụ bằng cách chọn View > Tool Windows > Resource Manager (Xem > Cửa sổ công cụ > Trình quản lý tài nguyên) trên thanh trình đơn. Resource Manager giúp bạn làm những việc sau:
- Trực quan hoá tài nguyên: Bạn có thể xem trước các đối tượng có thể vẽ, màu sắc và bố cục để tìm nhanh những tài nguyên mình cần.
- Thêm hàng loạt: Bạn có thể cùng lúc thêm nhiều thành phần có thể vẽ bằng cách kéo và thả các thành phần đó vào cửa sổ công cụ Resource Manager (Trình quản lý tài nguyên) hoặc bằng cách sử dụng trình hướng dẫn Import drawables (Nhập đối tượng có thể vẽ). Để truy cập trình hướng dẫn, hãy chọn nút (+) ở góc trên cùng bên trái cửa sổ công cụ, sau đó chọn Import Drawables (Nhập đối tượng có thể vẽ) trên trình đơn thả xuống.
-
Chuyển đổi đồ hoạ vectơ có thể mở rộng (SVG) thành đối tượng
VectorDrawable
: Bạn có thể dùng trình hướng dẫn Import Drawables (Nhập đối tượng có thể vẽ) để chuyển đổi hình ảnh SVG thành đối tượngVectorDrawable
. - Kéo và thả thành phần: Trên cửa sổ công cụ Resource Manager (Trình quản lý tài nguyên), bạn có thể kéo và thả các đối tượng có thể vẽ vào cả thành phần hiển thị thiết kế và thành phần hiển thị XML của Layout Editor.
- Xem các phiên bản thay thế: Giờ đây, bạn có thể xem các phiên bản thay thế của tài nguyên bằng cách nhấp đúp vào tài nguyên trong cửa sổ Tool (Công cụ). Chế độ xem này cho thấy nhiều phiên bản mà bạn đã tạo và các bộ hạn định được đưa vào.
- Chế độ xem ô và danh sách: Bạn có thể thay đổi chế độ xem trong cửa sổ Công cụ để trực quan hoá tài nguyên của mình theo nhiều cách sắp xếp.
Để tìm hiểu thêm, hãy đọc hướng dẫn về cách Quản lý tài nguyên ứng dụng.
Kiểm tra mã bản dựng khi phân tích và gỡ lỗi APK
Khi bạn cung cấp tệp biểu tượng gỡ lỗi cho thư viện dùng chung .so
bên trong tệp APK của mình, Android Studio sẽ xác minh rằng mã bản dựng của các tệp biểu tượng đã cung cấp khớp với mã bản dựng của thư viện .so
trong tệp APK.
Nếu bạn tạo các thư viện gốc trong tệp APK bằng một mã bản dựng thì Android Studio sẽ kiểm tra xem mã bản dựng trong các tệp biểu tượng có khớp với mã bản dựng trong thư viện gốc hay không, sau đó từ chối các tệp biểu tượng trên nếu không khớp. Nếu bạn không xây dựng bằng mã bản dựng thì việc cung cấp tệp biểu tượng không chính xác có thể gây ra sự cố khi gỡ lỗi.
R8 được bật theo mặc định
R8 tích hợp tính năng đơn giản hoá, rút gọn, làm rối mã nguồn, tối ưu hoá và tạo tệp dex tất cả chỉ trong một bước. Điều này giúp cải thiện đáng kể hiệu suất của các bản dựng. R8 ra mắt trong trình bổ trợ Android cho Gradle 3.3.0 và hiện được bật theo mặc định cho cả ứng dụng lẫn các dự án thư viện Android sử dụng trình bổ trợ 3.4.0 trở lên.
Hình ảnh dưới đây cung cấp thông tin tổng quan cấp cao về quá trình biên dịch trước khi R8 ra mắt.
Hiện tại, nhờ R8, việc đơn giản hoá, rút gọn, làm rối mã nguồn, tối ưu hoá và tạo tệp dex (D8) đều được hoàn tất trong một bước, theo minh hoạ dưới đây.
Xin lưu ý rằng R8 được thiết kế để hoạt động với các quy tắc ProGuard hiện có, vì vậy, bạn có thể sẽ không cần thực hiện thêm hành động nào. Tuy nhiên, vì công nghệ này khác với ProGuard được thiết kế riêng cho các dự án Android, nên việc rút gọn và tối ưu hoá có thể khiến mã mà ProGuard không có bị xoá. Vì vậy, trong trường hợp hiếm gặp này, có thể bạn cần phải thêm quy tắc bổ sung để giữ lại đoạn mã đó trong đầu ra của bản dựng.
Nếu gặp vấn đề khi sử dụng R8, hãy đọc bài viết Câu hỏi thường gặp về khả năng tương thích với R8 để xem có giải pháp nào không. Nếu không tìm thấy giải pháp, vui lòng báo cáo lỗi.
Bạn có thể tắt R8 bằng cách thêm một trong các dòng sau vào tệp gradle.properties
của dự án:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
Lưu ý: Đối với một loại bản dựng cụ thể, nếu bạn đặt useProguard
thành false
trong tệp build.gradle
của mô-đun ứng dụng, thì trình bổ trợ Android cho Gradle sẽ sử dụng R8 để rút gọn mã của ứng dụng cho loại bản dựng đó, bất kể bạn có tắt R8 trong tệp gradle.properties
của dự án hay không.
Trình chỉnh sửa điều hướng hiện hỗ trợ tất cả các loại đối số
Tất cả các loại đối số được hỗ trợ trong thành phần Navigation (Điều hướng) hiện cũng được hỗ trợ trong Navigation Editor. Để biết thêm thông tin về các loại được hỗ trợ, hãy xem bài viết Chuyển dữ liệu giữa các đích đến.
Các điểm cải tiến của Layout Editor {:#layout-editor}
Ngăn Attributes (Thuộc tính) trong Layout Editor được tinh giản thành một trang duy nhất cùng với các mục mà bạn có thể mở rộng để xem các thuộc tính có thể định cấu hình. Ngăn Thuộc tính (Attributes) cũng có những điểm cập nhật sau đây:
- Phần mới tên là Declared Attributes (Thuộc tính đã khai báo) liệt kê những thuộc tính mà tệp bố cục chỉ định và cho phép bạn để nhanh chóng thêm các thuộc tính mới.
- Ngăn Attributes (Thuộc tính) giờ đây cũng có các chỉ báo tính năng bên cạnh mỗi thuộc tính bền vững khi giá trị của thuộc tính đó là một mã tham chiếu tài nguyên hoặc trống.
- Các thuộc tính có lỗi hoặc cảnh báo giờ đây sẽ được làm nổi bật. Nội dung đánh dấu màu đỏ để chỉ các lỗi (ví dụ: khi bạn sử dụng giá trị bố cục không hợp lệ) và nội dung đánh dấu màu cam để chỉ các cảnh báo (ví dụ: khi bạn sử dụng giá trị được cố định giá trị trong mã).
Thao tác mới theo ý định để nhập nhanh các phần phụ thuộc
Nếu bạn bắt đầu sử dụng một số lớp Jetpack và Firebase trong đoạn mã của mình nhưng chưa thêm phần phụ thuộc bắt buộc của thư viện Gradle vào dự án của bạn thì một thao tác mới theo ý định sẽ đề xuất thực hiện việc này. Ví dụ: nếu bạn tham chiếu lớp WorkManager
mà không nhập trước phần phụ thuộc android.arch.work:work-runtime
bắt buộc, thì một thao tác theo ý định sẽ giúp bạn thực hiện thao tác đó dễ dàng chỉ bằng một lần nhấp, theo minh hoạ dưới đây.
Cụ thể, vì Jetpack đã đóng gói lại thư viện hỗ trợ thành các gói riêng biệt để dễ quản lý và cập nhật hơn, nên thao tác theo ý định này sẽ giúp bạn nhanh chóng thêm những phần phụ thuộc mà bạn cần cho các thành phần Jetpack mà bạn muốn sử dụng.