Các vấn đề đã biết với Android Studio và Trình bổ trợ Android cho Gradle

Trang này theo dõi các vấn đề đã biết với Android Studio Hedgehog và trình bổ trợ Android cho Gradle 8.2.2. Nếu bạn gặp phải vấn đề chưa được nêu ở đây, vui lòng báo cáo lỗi.

Nâng cấp lên bản xem trước: Mỗi bản phát hành Android Studio và trình bổ trợ Android cho Gradle đều nhằm cải thiện độ ổn định và hiệu suất, cũng như bổ sung các tính năng mới. Để tận hưởng những lợi ích của các bản phát hành sắp tới, hãy tải xuống và cài đặt Bản xem trước Android Studio.

Các vấn đề đã biết với Android Studio

Phần này mô tả các vấn đề đã biết trong phiên bản ổn định mới nhất của Android Studio.

Cửa sổ Trợ lý Firebase hiển thị thông báo lỗi

Nếu Cửa sổ Trợ lý Firebase (trong phần Tools > Firebase (Công cụ > Firebase) trên trình đơn chính) hiển thị thông báo lỗi, hãy vô hiệu hoá bộ nhớ đệm rồi khởi động lại Android Studio để khắc phục lỗi.

Không phải nút Compose nào cũng kiểm tra được bằng Layout Inspector

Nếu bạn nhận thấy có nút Compose không kiểm tra được khi đang sử dụng Layout Inspector, thì có thể là do một lỗi đã được khắc phục trong phiên bản Compose 1.5.0-alpha04 của chúng tôi. Nếu gặp vấn đề này, hãy đảm bảo rằng bạn nâng cấp lên Compose phiên bản 1.5.0-alpha04 trở lên.

Lỗi khi hiển thị tính năng Xem trước trong Compose

Bắt đầu với Android Studio Chipmunk, nếu bạn thấy java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner hoặc java.lang.ClassNotFoundException: androidx.savedstate.R$id trong bảng các vấn đề, hãy nhớ thêm phần phụ thuộc debugImplementation vào androidx.lifecycle:lifecycle-viewmodel-savedstate trong mô-đun của bạn.

Nếu bạn thấy java.lang.NoSuchFieldError: view_tree_lifecycle_owner trong bảng các vấn đề, hãy nhớ thêm phần phụ thuộc debugImplementation vào androidx.lifecycle:lifecycle-runtime trong mô-đun của bạn.

Nếu bạn thấy java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer hoặc java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener trong bảng các vấn đề, hãy nhớ thêm phần phụ thuộc debugImplementation vào androidx.customview:customview-poolingcontainer trong mô-đun của bạn.

Lỗi khi sử dụng nhiều mật khẩu khác nhau cho khoá và kho khoá

Kể từ phiên bản 4.2, Android Studio hiện chạy trên JDK 11. Bản cập nhật này gây ra sự thay đổi lớn về hành vi liên quan đến các khoá ký.

Khi bạn chuyển đến phần Build > Generate Signed Bundle/APK (Tạo > Tạo gói/tệp APK đã ký) và tìm cách định cấu hình hoạt động ký ứng dụng cho gói ứng dụng hoặc tệp APK, việc nhập các mật khẩu khác nhau cho khoá và kho khoá có thể dẫn đến lỗi sau:

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

Để khắc phục vấn đề này, hãy nhập cùng một mật khẩu cho cả khoá và kho khoá.

Android Studio không khởi động sau khi cài đặt phiên bản 4.2

Studio cố gắng nhập .vmoptions trước và dọn dẹp chúng để thao tác với trình thu gom rác mà JDK 11 sử dụng. Nếu quá trình đó không thành công, thì IDE có thể không khởi động cho một số người dùng đã đặt các tuỳ chọn máy ảo tuỳ chỉnh trong tệp .vmoptions.

Để khắc phục lỗi này, bạn nên đánh dấu các lựa chọn tuỳ chỉnh trong .vmoptions là nội dung nhận xét (bằng ký tự "#"). Bạn có thể tìm thấy tệp .vmoptionsở các vị trí sau:

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudio4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudio4.2/studio64.vmoptions

Nếu Studio vẫn không khởi động sau khi thử giải pháp này, hãy xem bài viết Studio không khởi động sau khi nâng cấp ở bên dưới.

Ứng dụng sử dụng Trình kiểm tra cơ sở dữ liệu gặp sự cố trên trình mô phỏng Android 11

Những ứng dụng sử dụng Trình kiểm tra cơ sở dữ liệu có thể gặp sự cố khi chạy trên trình mô phỏng Android 11, kèm theo lỗi như sau xuất hiện trong logcat:

 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

Để khắc phục sự cố này, hãy nâng cấp trình mô phỏng Android 11 của bạn lên phiên bản 9 trở lên bằng cách chuyển đến Tools > SDK Manager (Công cụ > Trình quản lý SDK). Trong thẻ SDK Platforms (Nền tảng SDK), hãy đánh dấu vào hộp có nhãn Show Package Details (Hiện chi tiết gói) và chọn bản sửa đổi 9 trở lên của trình mô phỏng Android 11.

Studio không khởi động sau khi nâng cấp

Nếu Studio không khởi động sau khi nâng cấp, thì vấn đề có thể là do cấu hình Android Studio không hợp lệ được nhập từ phiên bản Android Studio trước hoặc trình bổ trợ không tương thích. Để khắc phục, hãy thử xoá (hoặc đổi tên, vì mục đích sao lưu) thư mục bên dưới, tuỳ thuộc vào phiên bản Android Studio và hệ điều hành, rồi khởi động lại Android Studio. Thao tác này sẽ đặt lại Android Studio về trạng thái mặc định và xoá tất cả trình bổ trợ của bên thứ ba.

Đối với Android Studio 4.1 trở lên:

  • Windows: %APPDATA%\Google\AndroidStudio<version>
    Ví dụ: C:\Users\your_user_name\AppData\Roaming\Google\AndroidStudio4.1

  • macOS: ~/Library/Application Support/Google/AndroidStudio<version>
    Ví dụ: ~/Library/Application Support/Google/AndroidStudio4.1

  • Linux: ~/.config/Google/AndroidStudio<version>~/.local/share/Google/AndroidStudio<version>
    Ví dụ: ~/.config/Google/AndroidStudio4.1~/.local/share/Google/AndroidStudio4.1

Đối với Android Studio 4.0 trở xuống:

  • Windows: %HOMEPATH%\.AndroidStudio<version>\config
    Ví dụ: C:\Users\your_user_name\.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio<version>
    Ví dụ: ~/Library/Preferences/AndroidStudio3.6

  • Linux: ~/.AndroidStudio<version>/config
    Ví dụ: ~/.AndroidStudio3.6/config

Hãy lưu ý rằng thư mục cấu hình cho các bản phát hành Canary và Beta của Android Studio là PreviewX.Y thay vì X.Y cho <version>. Ví dụ: các bản dựng Android Studio 4.1 Canary sử dụng AndroidStudioPreview4.1, thay vì thư mục AndroidStudio4.1 dùng cho các Bản phát hành tiềm năng và Bản phát hành ổn định.

Vấn đề biên dịch trong các dự án đa nền tảng Kotlin

Lỗi biên dịch có thể phát sinh trong mã MPP Kotlin do thiếu ký hiệu. Để giải quyết vấn đề này, hãy nâng cấp trình bổ trợ Kotlin lên phiên bản 1.4.

Lập sơ đồ phím xung đột trên Linux

Trên Linux, một số phím tắt xung đột với các phím tắt mặc định của Linux và các phím tắt của trình quản lý cửa sổ phổ biến, chẳng hạn như KDE và GNOME. Các phím tắt xung đột có thể không hoạt động như mong đợi trong Android Studio.

Bạn có thể xem thêm thông tin về vấn đề này (bao gồm cả các giải pháp có thể giải quyết) trong trình theo dõi lỗi của IntelliJ.

Văn bản nhỏ trên giao diện người dùng ChromeOS

Trên ChromeOS, văn bản có thể xuất hiện nhỏ hơn nhiều so với các bản phát hành trước. Để xử lý vấn đề này, hãy làm như sau:

  1. Mở cửa sổ Settings (Cài đặt) bằng cách nhấp vào File > Settings (Tệp > Cài đặt)
  2. Chuyển đến Appearance & Behavior > Appearance (Giao diện và hành vi > Giao diện).
  3. Chọn Use custom font (Sử dụng phông chữ tuỳ chỉnh).
  4. Tăng cỡ chữ.
  5. Trong cửa sổ Settings (Cài đặt), hãy chuyển đến Editor > Font (Trình chỉnh sửa > Phông chữ).
  6. Tăng cỡ chữ.
  7. Nhấp vào OK.

Chỉnh sửa mã

Phần này mô tả các vấn đề đã biết liên quan đến trình soạn thảo mã.

Nhập bằng bàn phím bị treo – các sự cố "iBus" trên Linux

Có một số tương tác đã biết giữa trình nền iBus trên Linux và Android Studio. Trong một số trường hợp, IDE sẽ ngừng phản hồi thông tin nhập bằng bàn phím hoặc bắt đầu nhập các ký tự ngẫu nhiên. Lỗi này được kích hoạt bởi một số đồng bộ hoá bị thiếu giữa iBus và XLib + AWT và đã được báo cáo ngược dòng lên JetBrainsiBus. Có 3 giải pháp hiện tại để giải quyết vấn đề này:

  • Giải pháp 1: Buộc iBus ở chế độ đồng bộ. Trước khi bắt đầu chạy Android Studio, hãy chạy dòng sau trên dòng lệnh:
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • Giải pháp 2: Vô hiệu hoá chế độ nhập iBus trong Android Studio. Để vô hiệu hoá chế độ nhập iBus chỉ cho Android Studio, hãy chạy dòng sau trên dòng lệnh:
    $ XMODIFIERS= ./bin/studio.sh
    Giải pháp này chỉ vô hiệu hoá phương thức nhập cho Android Studio chứ không vô hiệu hoá các ứng dụng khác mà bạn có thể đang chạy. Lưu ý rằng nếu bạn khởi động lại trình nền trong khi Android Studio đang chạy (ví dụ: bằng cách chạy ibus-daemon -rd), thì bạn sẽ vô hiệu hoá các phương thức nhập cho tất cả ứng dụng khác một cách hiệu quả và cũng có thể gây ra sự cố JVM của Android Studio bị lỗi phân đoạn.
  • Giải pháp 3: Kiểm tra kỹ các mối liên kết phím tắt để đảm bảo rằng Phím tắt nhập tiếp theo không được đặt thành Control+Space, vì đây cũng là phím tắt hoàn thành mã trong Android Studio. Ubuntu 14.04 (Đáng tin cậy) làm cho Super+Space trở thành phím tắt mặc định nhưng các chế độ cài đặt từ các phiên bản trước có thể vẫn tồn tại. Để kiểm tra các mối liên kết các phím tắt, hãy chạy ibus-setup trên dòng lệnh để mở cửa sổ IBus Preferences (Lựa chọn ưu tiên về IBus). Trong Keyboard Shortcuts (Phím tắt), hãy chọn Next input method (Phương thức nhập tiếp theo). Nếu bạn đặt phím tắt này thành Control+Space, hãy đổi thành Super+Space hoặc một phím tắt khác mà bạn chọn.

Cấu hình dự án

Phần này mô tả các vấn đề đã biết liên quan đến cấu hình dự án và đồng bộ hoá Gradle.

Đồng bộ hoá Gradle không thành công: Pipe bị hỏng

Vấn đề là trình nền Gradle đang cố sử dụng IPv4 thay vì IPv6.

  • Cách giải quyết 1: Trên Linux, hãy đặt mục sau vào ~/.profile hoặc ~/.bash_profile:
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • Cách giải quyết 2: trong tệp vmoptions của Android Studio, hãy thay đổi dòng -Djava.net.preferIPv4Addresses=true thành -Djava.net.preferIPv6Addresses=true Để biết thêm thông tin, hãy xem Hướng dẫn sử dụng mạng IPv6.

lỗi "ứng dụng ngang hàng chưa được xác thực" trong Trình quản lý SDK hoặc tính năng đồng bộ hoá Gradle

Nguyên nhân gốc rễ của những lỗi này là do thiếu chứng chỉ trong $JAVA_HOME/jre/lib/certificates/cacerts. Để xử lý các lỗi này, hãy tiến hành như sau:

  • Nếu bạn đang sử dụng proxy, hãy cố gắng kết nối trực tiếp. Nếu có thể kết nối trực tiếp, thì để kết nối qua proxy, có thể bạn cần phải sử dụng keytool để thêm chứng chỉ của máy chủ proxy vào tệp cacert.
  • Cài đặt lại JDK được hỗ trợ và chưa sửa đổi. Đã xảy ra vấn đề đã biết ảnh hưởng đến người dùng Ubuntu, dẫn đến /etc/ssl/certs/java/cacerts trống. Để giải quyết vấn đề này, hãy thực thi nội dung sau trên dòng lệnh:
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

Triển khai

Phần này mô tả các vấn đề đã biết liên quan đến việc triển khai ứng dụng cho một thiết bị đã kết nối.

[Chỉ Mac OS] Các bản cập nhật gia tăng không được áp dụng do có vấn đề với tệp Gradle đang xem trên các dự án được lưu trong /System/Volumes/Data

Vấn đề Gradle 18149 ảnh hưởng đến trình bổ trợ Android cho Gradle phiên bản 7.0 trở lên vì chúng yêu cầu Gradle phiên bản 7.0 trở lên. Kể từ Gradle 7.0, tính năng xem tệp sẽ bật theo mặc định. Nếu bạn đang làm việc trên Mac OS và dự án của bạn đã được lưu trong /System/Volumes/Data, thì việc xem tệp Gradle sẽ không theo dõi các thay đổi về tệp cho đúng. Điều này sẽ khiến cho Hệ thống xây dựng không thấy bất kỳ thay đổi nào đối với tệp và do đó, hệ thống sẽ không cập nhật (các) APK. Sau đó, mã triển khai gia tăng sẽ không hoạt động vì trạng thái APK cục bộ giống như trên thiết bị.

Để khắc phục vấn đề này, bạn nên chuyển thư mục của dự án sang thư mục người dùng, tức là trong /Users/username. Sau đó, Hệ thống xây dựng sẽ được thông báo rõ ràng về những thay đổi đối với tệp bằng cách xem tệp Gradle và các thay đổi dần sẽ được áp dụng thành công.

Trình mô phỏng Android HAXM trên macOS High Sierra

Trình mô phỏng Android trên macOS High Sierra (10.13) yêu cầu HAXM 6.2.1 trở lên để có thể tương thích và ổn định nhất với macOS. Tuy nhiên, macOS 10.13 có quy trình phức tạp hơn khi cài đặt các tiện ích nhân kernel như HAXM. Bạn cần cho phép tự cài đặt tiện ích nhân kernel theo cách thủ công như sau:

  1. Trước tiên, hãy thử cài đặt phiên bản HAXM mới nhất từ Trình quản lý SDK.
  2. Trong MacOS, hãy chuyển đến System Preferences > Security and Privacy (Tuỳ chọn hệ thống > Bảo mật và quyền riêng tư).
  3. Nếu bạn thấy cảnh báo cho biết Phần mềm hệ thống của nhà phát triển "Intel Corporation Apps" đã bị chặn tải, hãy nhấp vào Allow (Cho phép):

Để biết thêm thông tin và cách giải quyết, hãy xem trang web này của Apple vấn đề 62395878.

Áp dụng các thay đổi

Phần này mô tả các vấn đề đã biết liên quan đến Áp dụng thay đổi.

Không áp dụng tên ứng dụng mới

Nếu bạn đổi tên ứng dụng, sau đó cố gắng áp dụng thay đổi đó, thì tên cập nhật có thể không được phản ánh. Để giải quyết vấn đề này, hãy nhấp vào Run (Chạy) Biểu tượng chạy để triển khai lại ứng dụng và xem các thay đổi.

Sự cố lỗi Android Runtime

Nếu đang sử dụng một thiết bị chạy Android 8.0 hoặc 8.1, bạn có thể gặp phải thông báo "VERIFICATION_ERROR" khi cố gắng áp dụng một số loại thay đổi nhất định (đặc biệt nếu bạn đang sử dụng Kotlin). Thông báo này là do một vấn đề với Android Runtime đã được khắc phục trong Android 9.0 trở lên. Mặc dù vấn đề khiến tính năng Áp dụng các thay đổi bị lỗi, nhưng bạn vẫn có thể Chạy Biểu tượng chạy lại ứng dụng để xem lại các thay đổi. Tuy nhiên, bạn nên nâng cấp thiết bị lên Android 9.0 trở lên.

Gỡ lỗi và thử nghiệm

Phần này mô tả các vấn đề đã biết liên quan đến việc gỡ lỗi và thử nghiệm ứng dụng của bạn.

JUnit thử nghiệm các tài nguyên bị thiếu trong classpath khi chạy trên Android Studio

Nếu có các thư mục tài nguyên cụ thể trong các mô-đun Java của mình, thì bạn sẽ không tìm thấy các tài nguyên đó khi chạy kiểm thử qua IDE. Chạy các thử nghiệm bằng cách sử dụng Gradle từ dòng lệnh sẽ mang lại hiệu quả. Thực thi tác vụ Gradle check từ IDE cũng sẽ mang lại hiệu quả. Hãy xem vấn đề 64887 để biết thêm thông tin chi tiết.

Vấn đề này xảy ra vì kể từ IntelliJ 13, bạn chỉ được dùng một thư mục duy nhất làm classpath. Trình tạo của IntelliJ sao chép tất cả tài nguyên vào thư mục bản dựng đó, nhưng Gradle lại không sao chép những tài nguyên đó.

  • Giải pháp 1: Chạy tác vụ Gradle check từ IDE thay vì chạy thử nghiệm đơn vị.
  • Giải pháp 2: Cập nhật tập lệnh bản dựng của bạn để sao chép tài nguyên vào thư mục bản dựng theo cách thủ công. Hãy xem nhận xét #13 để biết thêm thông tin.

Việc chạy thử nghiệm JUnit có thể biên dịch mã hai lần

Khi tạo một dự án mới, bạn có thể tạo cấu hình mẫu JUnit bằng hai bước "Trước khi khởi chạy": Thực hiện và Nhận biết Gradle. Sau đó, cấu hình này sẽ được phổ biến cho tất cả các cấu hình chạy JUnit đã tạo.

  • Để khắc phục vấn đề này cho dự án hiện tại, hãy nhấp vào Run > Edit Configurations (Chạy > Chỉnh sửa cấu hình) và thay đổi cấu hình JUnit mặc định để chỉ bao gồm bước Nhận biết Gradle.
  • Để khắc phục vấn đề cho tất cả dự án trong tương lai, hãy nhấp vào File > Close Project (Tệp > Đóng dự án). Bạn sẽ thấy màn hình chào mừng. Sau đó, nhấp vào Configure > Project Defaults > Run Configurations (Định cấu hình > Mặc định của dự án > Chạy cấu hình) và thay đổi cấu hình JUnit để chỉ bao gồm bước Nhận biết Gradle.

Một số cấu hình chạy thử nghiệm không hoạt động

Không phải tất cả cấu hình chạy có sẵn khi nhấp chuột phải vào một phương thức kiểm thử đều hợp lệ. Cụ thể là các cấu hình sau không hợp lệ:

  • Các cấu hình chạy Gradle (có biểu trưng Gradle làm biểu tượng) không hoạt động.
  • Các cấu hình chạy JUnit (với biểu tượng không có Android màu xanh lục) không áp dụng cho các kiểm thử đo lường, mà không thể chạy trên JVM cục bộ.
Android Studio cũng ghi nhớ cấu hình chạy được tạo trong một ngữ cảnh cụ thể (ví dụ: nhấp chuột phải vào một lớp hoặc phương thức cụ thể) và sẽ không chạy trong một cấu hình khác trong tương lai. Để khắc phục vấn đề này, hãy nhấp vào Run > Edit Configurations (Chạy > Chỉnh sửa cấu hình) và xoá các cấu hình được tạo không chính xác.

Thêm điểm ngắt Java trong khi gỡ lỗi mã gốc

Mặc dù ứng dụng bị tạm dừng tại một điểm ngắt trong mã gốc của bạn, nhưng trình gỡ lỗi Tự độngKép có thể không nhận ra ngay các điểm ngắt Java mới đã được bạn đặt. Để tránh vấn đề này, hãy thêm các điểm ngắt Java trước khi bắt đầu phiên gỡ lỗi hoặc trong khi ứng dụng bị tạm dừng trên một điểm ngắt Java. Để biết thêm thông tin, hãy xem vấn đề 229949.

Rời khỏi trình gỡ lỗi gốc

Trong khi sử dụng trình gỡ lỗi Auto (Tự động) hoặc Dual (Kép) để gỡ lỗi Java và mã gốc, nếu bạn bước vào một hàm gốc từ mã Java của bạn (ví dụ: trình gỡ lỗi tạm dừng thực thi ở một dòng trong mã Java của bạn sẽ gọi một hàm gốc và bạn nhấp vào biểu tượng Step Into (Bước vào) ) và muốn quay lại mã Java, hãy nhấp vào biểu tượng Resume Program (Tiếp tục chương trình) (thay vì biểu tượng Step Out (Bước ra) hoặc Step Over (Bước qua) ). Quy trình ứng dụng của bạn sẽ vẫn bị tạm dừng, vì vậy, hãy nhấp vào biểu tượng Resume Program (Tiếp tục chương trình) trong thẻ your-module-java để tiếp tục chương trình. Để biết thêm thông tin, hãy xem vấn đề 224385.

Trình gỡ lỗi gốc bị treo trong khi tải thư viện

Trong lần đầu tiên sử dụng trình gỡ lỗi gốc sau khi nâng cấp lên Android Studio 4.2 trở lên, trình gỡ lỗi gốc có thể ngừng phản hồi trong khi tải các thư viện qua thiết bị Android. Đây là vấn đề cố định tiếp tục xảy ra ngay cả khi bạn dừng và khởi động lại trình gỡ lỗi. Để khắc phục vấn đề này, hãy xoá bộ nhớ đệm LLDB tại $USER/.lldb/module-cache/.

Trình gỡ lỗi gốc gặp sự cố "Quá trình gỡ lỗi đã hoàn tất với mã thoát 127"

Lỗi này xảy ra trên các nền tảng dựa trên Linux khi khởi động trình gỡ lỗi gốc. Nó cho biết rằng một trong những thư viện do trình gỡ lỗi gốc yêu cầu chưa được cài đặt trên hệ thống cục bộ. Tên của thư viện bị thiếu có thể đã được in trong tệp idea.log. Nếu chưa, bạn có thể sử dụng một điểm cuối để chuyển đến thư mục cài đặt Android Studio và thực thi dòng lệnh bin/lldb/bin/LLDBFrontend --version để tìm hiểu xem thư viện nào bị thiếu. Thường thì thư viện bị thiếu là ncurses5 vì một số bản phân phối Linux gần đây đã nâng cấp lên ncurses6.

Trình phân tích tài nguyên

Phần này mô tả các vấn đề đã biết với Trình phân tích tài nguyên.

Trình phân tích bộ nhớ gốc: Không có hoạt động phân tích khi khởi động ứng dụng

Trình phân tích bộ nhớ gốc hiện không hoạt động trong quá trình khởi động ứng dụng. Tuỳ chọn này sẽ có trong bản phát hành sắp tới.

Để khắc phục vấn đề này, bạn có thể sử dụng trình phân tích dòng lệnh độc lập Perfetto để ghi lại dữ liệu phân tích trong quá trình khởi động.

Lỗi hết thời gian chờ trong Trình phân tích CPU

Bạn có thể gặp lỗi "Recording failed to stop" ("Không thể dừng ghi") trong Trình phân tích CPU của Android Studio khi chọn cấu hình Sample Java Methods (Phương thức Java mẫu) hoặc Trace Java Methods (Phương thức theo dõi Java). Đây thường là các lỗi hết thời gian chờ, đặc biệt nếu bạn thấy thông báo lỗi sau đây trong tệp idea.log:

Wait for ART trace file timed out

Lỗi hết thời gian chờ thường ảnh hưởng nhiều hơn đến các phương thức được theo dõi so với các phương thức mẫu và nhiều hơn đến bản ghi dài so với bản ghi ngắn hơn. Để tạm thời khắc phục, bạn nên thử các bản ghi ngắn hơn để xem lỗi có biến mất không.

Nếu bạn gặp sự cố hết thời gian chờ trong Trình phân tích tài nguyên, vui lòng gửi lỗi bao gồm cả thông tin về nhà sản xuất/kiểu thiết bị của bạn và mọi mục liên quan từ idea.log và logcat.

Ngoại lệ của ADB khi gỡ lỗi hoặc phân tích

Khi sử dụng Platform Tools (Công cụ nền tảng) 29.0.3, tính năng gỡ lỗi gốc và Trình phân tích tài nguyên Android Studio có thể hoạt động không đúng cách và bạn có thể thấy thông báo "AdbCommandRejectedException" hoặc "Failed to connect port" ("Không kết nối được cổng") trong tệp idea.log khi bạn chọn Help > Show Log (Trợ giúp > Hiện nhật ký). Việc nâng cấp Công cụ nền tảng lên 29.0.4 trở lên sẽ giải quyết được cả hai vấn đề.

Để nâng cấp Công cụ nền tảng, hãy làm như sau:

  1. Mở Trình quản lý SDK trong Android Studio bằng cách nhấp vào phần Tools > SDK Manager (Công cụ > Trình quản lý SDK) hoặc nhấp vào SDK Manager (Trình quản lý SDK) trên thanh công cụ.
  2. Nhấp vào hộp đánh dấu bên cạnh Công cụ nền tảng Android SDK để công cụ hiển thị dấu kiểm. Biểu tượng tải xuống sẽ xuất hiện ở cột bên trái.
  3. Nhấp vào Áp dụng hoặc OK.

Trình bổ trợ ngăn cửa sổ Kết quả của bản dựng không hoạt động được

Việc sử dụng trình bổ trợ Trình đánh dấu đơn giản CMake giúp ngăn nội dung xuất hiện trong cửa sổ Build Output (Kết quả của bản dựng). Bản dựng này chạy và thẻ Build Output (Kết quả của bản dựng) xuất hiện, nhưng không có kết quả nào được in (vấn đề #204791544).

Thứ tự cài đặt ngăn cản phiên bản cũ khởi chạy

Phiên bản Android Studio cũ có thể sẽ không khởi chạy được nếu bạn cài đặt phiên bản mới trước tiên. Ví dụ: nếu bạn trước hết cài đặt phiên bản Canary của Android Studio rồi mới cố gắng cài đặt và khởi chạy phiên bản ổn định, thì phiên bản ổn định có thể sẽ không khởi chạy. Trong trường hợp đó, bạn phải xoá bộ nhớ đệm để khởi chạy phiên bản (cũ) ổn định. Trên macOS, để xoá bộ nhớ đệm, hãy xoá thư mục Library/ApplicationSupport/Google/AndroidStudioversion_number. Trên Windows, để xoá bộ nhớ đệm, hãy dùng tính năng Dọn dẹp ổ đĩa.

Trình ghi lại quá trình kiểm thử Espresso không hoạt động với Compose

Trình ghi lại quá trình kiểm thử Espresso không hoạt động với các dự án có chứa Compose. Để tạo bài kiểm thử giao diện người dùng cho các dự án có chứa Compose, hãy xem bài viết Kiểm thử bố cục Compose.

Phím tắt Logcat xung đột với các bố cục bàn phím không phải tiếng Anh

Nếu bạn đang dùng bố cục bàn phím không phải tiếng Anh, phím tắt mặc định cho Logcat có thể xung đột với bố cục này và khiến bạn không nhập được một số ký tự khi chỉnh sửa văn bản trong Android Studio. Để khắc phục vấn đề này, hãy xoá hoặc ánh xạ lại sơ đồ bàn phím Logcat xung đột. Để chỉnh sửa sơ đồ bàn phím Logcat trong Android Studio, hãy chuyển đến Android Studio > Settings > Keymap (Android Studio > Cài đặt > Sơ đồ bàn phím) rồi tìm Logcat trong danh sách sơ đồ bàn phím. Hãy xem vấn đề #263475910 để biết thêm thông tin.

Chúng tôi sẽ khắc phục vấn đề này bằng cách xoá phím tắt Logcat trong Bản vá 1 của Android Studio Electric Eel.

Các vấn đề đã biết với Trình bổ trợ Android cho Gradle

Phần này mô tả các vấn đề đã biết tồn tại trong phiên bản ổn định mới nhất của trình bổ trợ Gradle cho Android.

Trình tìm lỗi mã nguồn không kiểm tra toàn bộ phần phụ thuộc của thư viện có tính năng động

Khi chạy trình tìm lỗi mã nguồn với checkDependencies = true qua một mô-đun ứng dụng, phần phụ thuộc của thư viện có tính năng động sẽ không được kiểm tra trừ phi đó cũng là phần phụ thuộc của ứng dụng (vấn đề #191977888). Để khắc phục vấn đề này, bạn có thể chạy tác vụ tìm lỗi mã nguồn trên các thư viện đó.

Tệp ký được đặt tên với các ký tự trả lại vị trí đầu dòng

Tính năng ký JAR (sơ đồ phiên bản 1) không hỗ trợ tên tệp chứa ký tự trả lại vị trí đầu dòng (vấn đề #63885809).

Việc sửa đổi kết quả của biến thể tại thời điểm xây dựng có thể không hiệu quả

Việc sử dụng Variant API để thao tác với kết quả của biến thể sẽ bị lỗi với trình bổ trợ mới. API này vẫn hoạt động đối với những tác vụ đơn giản như thay đổi tên tệp APK trong thời gian xây dựng, theo minh hoạ dưới đây:

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

Tuy nhiên, các tác vụ phức tạp hơn liên quan đến việc truy cập vào các đối tượng outputFile không còn hoạt động nữa. Đó là do các tác vụ dành riêng cho biến thể không còn được tạo trong giai đoạn cấu hình. Điều này dẫn đến việc trình bổ trợ không biết tất cả các kết quả của trình bộ trợ, nhưng cũng có nghĩa là thời gian định cấu hình sẽ nhanh hơn.

manifestOutputFile không sử dụng được nữa

Phương thức processManifest.manifestOutputFile() không còn hoạt động nữa và bạn gặp lỗi sau đây khi gọi nó:

A problem occurred configuring project ':myapp'.
   Could not get unknown property 'manifestOutputFile' for task
   ':myapp:processDebugManifest' of type
   com.android.build.gradle.tasks.ProcessManifest.

Thay vì gọi manifestOutputFile() để lấy tệp kê khai cho từng biến thể, bạn có thể gọi processManifest.manifestOutputDirectory() để trả về đường dẫn của thư mục chứa tất cả các tệp kê khai đã tạo. Sau đó, bạn có thể xác định một tệp kê khai và áp dụng logic của mình cho tệp kê khai đó. Mẫu bên dưới tự động thay đổi mã phiên bản trong tệp kê khai:

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
            // Changes the version code in the stored text.
            manifestContent = manifestContent.replace('android:versionCode="1"',
                    String.format('android:versionCode="%s"', generatedCode))
            // Overwrites the manifest with the new text.
            file(manifestPath).write(manifestContent)
        }
    }
}

Vấn đề với khả năng hỗ trợ AGP 7.3.0 AIDL và Kotlin 1.7.x

Việc sử dụng AGP 7.3.0 với KAPT trong Kotlin 1.7.x khiến các nhóm tài nguyên AIDL cho các biến thể bản dựng cụ thể bị xoá. Bạn vẫn có thể sử dụng các nhóm tài nguyên AIDL khác, bao gồm cả các nhóm tài nguyên main/, loại bản dựng, phiên bản sản phẩm và tổ hợp các phiên bản sản phẩm. Nếu bạn cần sử dụng các nhóm tài nguyên AIDL dành riêng cho biến thể, hãy tiếp tục sử dụng Kotlin 1.6.21.

Khắc phục các vấn đề đã biết

Phần này mô tả các vấn đề đã biết và đã được khắc phục trong bản phát hành gần đây. Nếu gặp phải bất kỳ vấn đề nào trong số này, bạn nên cập nhật Android Studio lên phiên bản ổn định hoặc bản xem trước mới nhất.

Đã khắc phục trong Android Studio 2021.1.1

  • Thiếu kết quả tìm lỗi mã nguồn: Không có kết quả dạng văn bản tìm lỗi mã nguồn nào được in ra stdout khi tác vụ tìm lỗi mã nguồn là UP-TO-DATE (vấn đề #191897708). Đã khắc phục trong AGP 7.1.0-alpha05.
  • Vấn đề khi kiểm thử đơn vị bằng một dự án ứng dụng có sử dụng trình bổ trợ Hilt: Classpath kiểm thử đơn vị chứa các lớp ứng dụng không được hỗ trợ, nghĩa là Hilt không hỗ trợ các lớp ứng dụng xử lý thao tác chèn phần phụ thuộc khi chạy kiểm thử đơn vị (vấn đề #213534628). Đã khắc phục trong AGP 7.1.1.

Đã khắc phục trong Android Studio 2020.3.1

  • Trường hợp ngoại lệ tìm lỗi mã nguồn trong các dự án Kotlin: Các dự án Kotlin mà đặt checkDependencies = true có thể gặp ngoại lệ về con trỏ rỗng hoặc bị lỗi (vấn đề #158777858).

Đã khắc phục trong Android Studio 4.2

  • IDE bị treo trên macOS Big Sur: Android Studio 4.1 có thể bị treo khi bạn mở một hộp thoại.

Đã khắc phục trong Android Studio 4.1

  • Khởi động lại để áp dụng các chế độ cài đặt bộ nhớ từ phiên bản IDE trước: Sau khi cập nhật Android Studio, bạn cần khởi động lại Android Studio để áp dụng các chế độ cài đặt bộ nhớ đã di chuyển từ phiên bản IDE trước đó.
  • Lớp tệp kê khai có chuỗi quyền tuỳ chỉnh không còn được tạo theo mặc định: Nếu bạn muốn tạo lớp, hãy đặt android.generateManifestClass = true.

Đã khắc phục trong Android Studio 3.6

  • Lỗi cài đặt tệp APK trên LineageOS: Việc triển khai ứng dụng của bạn cho các thiết bị chạy một số phiên bản LineageOS hoặc CyanogenMod có thể không thành công và gửi ra ngoại lệ INSTALL_PARSE_FAILED_NOT_APK.

    Trên Android Studio 3.6 Beta 1 trở lên, IDE xử lý ngoại lệ này bằng cách thực hiện cài đặt toàn bộ ứng dụng khi bạn triển khai ứng dụng vào các thiết bị LineageOS hoặc CyanogenMod. Điều này có thể khiến thời gian triển khai lâu hơn.

Đã khắc phục trong Android Studio 3.5.2

  • Kiểu mã XML bị hỏng: Khi chỉnh sửa mã XML, IDE đã áp dụng một kiểu mã không chính xác khi bạn chọn Code > Reformat Code (Mã > Định dạng lại mã) trên thanh trình đơn.

Đã khắc phục trong Android Studio 3.3.1

  • Lỗi hết bộ nhớ khi quét các dự án dựa trên C++: Khi Gradle quét một dự án có mã C++ ở nhiều vị trí trên cùng một ổ đĩa, phần quét bao gồm tất cả các thư mục bên dưới thư mục chung đầu tiên. Việc quét một số lượng lớn thư mục và tệp có thể dẫn đến lỗi hết bộ nhớ.

    Để biết thêm thông tin về vấn đề này, hãy đọc lỗi liên quan đến vấn đề này.