12/08/2018, 15:23

Một số vấn đề với Kotlin Android Studio

Ở đây ta nói về những vấn đề hiện tại và những hạn chế khi sử dụng Kotlin với Android Studio 3.0. Để biết thêm các vấn đề chung trong bản stable release của Studio Studio, hãy xem trang Known Issues. Để báo cáo một vấn đề, hãy vào đây xem cách báo cáo lỗi. Không thể build project với ...

Ở đây ta nói về những vấn đề hiện tại và những hạn chế khi sử dụng Kotlin với Android Studio 3.0. Để biết thêm các vấn đề chung trong bản stable release của Studio Studio, hãy xem trang Known Issues.

Để báo cáo một vấn đề, hãy vào đây xem cách báo cáo lỗi.

  • Không thể build project với Kotlin Error:Unable to find method 'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Ljava/util/List;'. Nếu bạn thấy lỗi này, có thể là ban đang có phiên bản plugin Kotlin trước đó không tương thích với Android Plugin for Gradle trong Android Studio 3.0. Giải pháp là xóa plugin Kotlin cũ.

    Mở file build.grade trong project-level của bạn, và xác định vị trí ext.kotlin_version. Nó sẽ là 1.1.2-4 (hoặc cao hơn). Nếu nó là một phiên bản cũ, bạn cần xoá Kotlin plugin cũ, vì vậy không làm cản trở phiên bản có trong Android Studio 3.0. Trên Windows, nên đặt tại C: Users username AndroidStudioversion config plugins Kotlin . Trên Mac: ~/Library/Application Support/AndroidStudioversion/Kotlin/.

  • Lỗi đồng bộ Gradle bằng Instant Apps SDK với Kotlin Error:null cannot be cast to non-null type com.android.build.gradle.BasePlugin Instant Apps SDK hiện không tương thích với plugin Kotlin.

  • Biên dịch lỗi Login Activity template với Kotlin Error:(89, 22) None of the following functions can be called with the arguments supplied: @NonNull public open fun make(@NonNull view: View, @NonNull text: CharSequence, duration: Int): Snackbar defined in android.support.design.widget.Snackbar @NonNull public open fun make(@NonNull view: View, @StringRes resId: Int, duration: Int): Snackbar defined in android.support.design.widget.Snackbar

    Login Activity template hiện không chuyển thành Kotlin thành công. Dòng 89 chứa lỗi vì đối tượng mEmailView được khởi tạo dưới dạng AutoCompleteTextView chứ không phải là một View. Nhưng điều này thì dễ sửa. Bạn chỉ cần nói Kotlin sử dụng giá trị không phải là null của View bằng cách thêm hai dấu chấm than: Snackbar.make(mEmailView!!, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)

  • Code không biên dịch sau khi convert Java file Trong một số trường hợp, sử dụng Code> Convert Java File đến Kotlin File kết quả trong mã Kotlin không biên dịch. Đây là một vấn đề được biết đến với plugin Kotlin.

  • Lint checks with Kotlin don't work from command line Lint kiểm tra tệp Kotlin chỉ hoạt động được từ Android Studio IDE. Hiện tại không chạy khi bạn chạy lint trực tiếp từ Gradle.

  • Code hoàn thành với Kotlin hiển thị resource riêng Trong Kotlin code hoàn thành, các resources riêng không được lọc ra theo cách của chúng từ mã Java hoàn thành. Ví dụ: nhập R.drawable. Liệt kê một loạt resources của các ứng dụng nội bộ làm gợi ý.

  • Live template và hoàn thành postfix không hoàn toàn có sẵn với Kotlin Khi viết bằng ngôn ngữ Java, bạn có thể sử dụng live template hoặc hoàn thành postfix, chẳng hạn như gõ variable.for và presing Tab để tạo ra một vòng lặp for với variable. Tuy nhiên, chúng không được hỗ trợ đầy đủ với Kotlin. Và do sự khác biệt về ngôn ngữ, có thể một số sẽ không bao giờ có.

  • Một số refactorings không có sẵn với Kotlin Không phải tất cả code refactorings làm việc với Kotlin, đặc biệt là các code cho Android. Ví dụ, code refactoring đến modularize Kotlin cude hiện tại không làm việc với Kotlin.

0