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

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Trang này theo dõi các vấn đề đã biết liên quan đến Android Studio Chipmunk | 2021.2.1 và trình bổ trợ Android cho Gradle 7.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 để 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.

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 đã ký/APK) và tìm cách định cấu hình cho hoạt động ký ứng dụng cho gói ứng dụng hoặc 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 lỗi 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 do 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 tuỳ 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 giao diện người dùng nhỏ trên Chrome OS

Trên Chrome OS, 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 kích thước phông 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 kích thước phông 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" từ 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 kết nối trực tiếp hoạt động, thì để kết nối qua proxy, bạn có thể 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ợ, 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 đúng cách các thay đổi về tệp. Đ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ị.

Để giải quyết 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 gia tăng 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 (Tùy 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 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 Áp dụng thay đổi không thành công, 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 bạn có các thư mục tài nguyên cụ thể trong các mô-đun Java của mình, thì sẽ không tìm thấy các tài nguyên đó khi chạy thử nghiệm từ 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, yêu cầu bạn chỉ có 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 sẽ không sao chép các 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 các tài nguyên theo cách thủ công vào thư mục bản dự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 đề 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 đó, hãy 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 đều có sẵn khi nhấp chuột phải vào một phương thức thử nghiệm đề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 (có 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 không thể chạy trên VM 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 mà 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 Tự động hoặcKé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 trên dòng trong mã Java của bạn sẽ gọi một hàm gốc và bạn nhấp vàoStep Into (Bước vào) ) và muốn quay lại mã Java, hãy nhấp vào Resume Program (Tiếp tục chương trình) (thay vì Step Out (Rời khỏi) 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àoResume 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 từ 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 thiết bị đầu 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 những thư viện bị thiếu. Thông thường, 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 "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 Phương thức Java mẫu hoặc 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 là 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 đến các phương thức được theo dõi nhiều hơn các phương thức mẫu và bản ghi dài nhiều hơn so với bản ghi ngắn hơn. Để khắc phục tạm thời, 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ờ với Trình phân tích tài nguyên, vui lòng gửi lỗi bao gồm 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 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 "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 thị 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ổ 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 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 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 được. 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.

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 thư viện tính năng động sẽ không được kiểm tra trừ khi đó cũng là phần phụ thuộc ứ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ý tên có 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).

AGP 7.2.x không chính thức hỗ trợ API cấp 33

AGP 7.2.x không chính thức hỗ trợ API cấp 33 và sẽ hiển thị cảnh báo nếu bạn nhắm mục tiêu API đó. Để loại bỏ cảnh báo này, bạn có thể cấp phép cho SDK chưa thử nghiệm một cách rõ ràng bằng cách thêm phần sau vào tệp gradle.properties:

android.suppressUnsupportedCompileSdk=33

AGP 7.3.x đi kèm với Android Studio Dolphin hỗ trợ API cấp độ 33. Vì vậy, bạn nên nâng cấp lên khi nó đã ổn định.

Thay đổi API

Trình bổ trợ Android cho Gradle 3.0.0 trở lên giới thiệu những thay đổi về API nhằm xoá một số chức năng và có thể làm hỏng các bản dựng hiện có của bạn. Các phiên bản sau của trình bổ trợ có thể giới thiệu các API công khai mới thay thế cho các chức năng bị hỏng.

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 để thực hiện những tác vụ đơn giản như thay đổi tên APK trong thời gian xây dựng, như 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)
        }
    }
}

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 được đặt checkDependencies = true có thể gặp phải trường hợp ngoại lệ hoặc lỗi con trỏ (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 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à tạo 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.