Android Studio不会按字典顺序重新排列导入

j91ykkif  于 2022-11-30  发布在  Android
关注(0)|答案(7)|浏览(260)

给定以下导入

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

Android Studio重新排列为以下当按下控制+选项+ o

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

我的pre-commit挂钩运行ktlint然后失败,因为这一点。有什么办法来解决这个问题吗?

2jcobegt

2jcobegt1#

最新的IntelliJ IDEA / Android Studio可能无法符合Android Kotlin样式指南中的全部规范。因此,目前,在IntelliJ IDEA / Android Studio中,没有直接的方式按照字典顺序排列导入。
现在,您可能希望通过在项目根目录下的***.editorconfig***文件中禁用“导入排序”来禁用对Klint的此检查:

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

这将禁用项目中的签入。

jvlzgdj9

jvlzgdj92#

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

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

kmpatx3s

kmpatx3s3#

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

之后:

n53p2ov0

n53p2ov04#

您可以停用该档案的汇入顺序。
我有这个:

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
368yc8dk

368yc8dk5#

如果你在IntelliJ/Android Studio中,通常只需点击代码-〉优化导入就足以修复它
如果我没记错的话那只是个掉毛错误

qacovj5a

qacovj5a6#

我知道这是旧的,我确实设法通过添加// ktlint-disable import-ordering来修复这个问题,但最终我找到了一个更好的解决方案。如果你安装了命令行ktlint,你可以在你的android源代码文件夹上运行ktlint --android -F terminal命令,它会自动修复这个问题。--android部分非常重要,使用ktlint -F命令,而不使用android部分,会解决一些ktlint的问题,但不是他的问题。

ercv8c1e

ercv8c1e7#

您可以在您的android studio终端上运行此命令。这将自动重新格式化所有ktlint问题。Cmd -

./gradlew ktlintFormat

相关问题