【问题标题】:Android Studio does not rearrange import in lexicographic orderAndroid Studio 不会按字典顺序重新排列导入
【发布时间】:2020-07-04 21:05:35
【问题描述】:

鉴于以下导入

import javax.inject.Inject
import kotlinx.android.synthetic.main.fragment.*

control + option + o

时Android Studio重新排列如下
import kotlinx.android.synthetic.main.fragment.*
import javax.inject.Inject

这不是按字典顺序排列的。我的 pre-commit 钩子运行 ktlint 然后因此失败。有没有办法解决这个问题?

【问题讨论】:

    标签: android android-studio intellij-idea import


    【解决方案1】:

    最新的 IntelliJ IDEA / Android Studio 可能无法符合 Android Kotlin style guide 中的完整规范。因此,目前在 IntelliJ IDEA / Android Studio 中没有没有直接的方式来安排导入的字典顺序。

    现在,您可能希望在项目根目录的 .editorconfig 文件中通过 disabling 'import ordering' 禁用 Klint 的此检查:

    [*.{kt,kts}]
    disabled_rules = import-ordering
    

    这将禁用您的项目中的检查。

    【讨论】:

      【解决方案2】:

      IntelliJ IDEA / Android Studio 不允许您按字母顺序对导入进行排序,无论是在 Java 还是在 Kotlin 中。
      然而,Java 有一个 Import layout 部分,它可以给你一些控制。但是仍然不可能有一个确切的顺序,如你所愿。

      这个不适用于 Kotlin 现在也可以在 Kotlin 中使用。可以看https://youtrack.jetbrains.com/issue/KT-10974

      【讨论】:

        【解决方案3】:

        您可以禁用该文件的导入排序。

        我有这个:

        import android.os.Parcelable
        import com.google.gson.annotations.SerializedName
        import java.io.Serializable
        import kotlinx.android.parcel.Parcelize
        

        Ktlint 以这种方式重新排序,但检查仍然失败:

        必须在第一行添加忽略:

        import android.os.Parcelable // ktlint-disable import-ordering
        import com.google.gson.annotations.SerializedName
        import java.io.Serializable
        import kotlinx.android.parcel.Parcelize
        

        【讨论】:

        • 我无法普遍禁用此问题,因此我也必须将此行添加到我的文件中...感谢您的回答。
        【解决方案4】:

        它的奇怪行为,但是如果你从 分别导入别名 中删除所有,你会得到 字典顺序

        之前: 后:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-03-30
          • 1970-01-01
          • 2015-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多