简体   繁体   中英

Renaming "java" directory to "kotlin" in Android Studio

My android project is written 100% in Kotlin and I wanted to rename the java directory to kotlin to be consistent. I added

sourceSets{
    main.java.srcDirs += 'src/main/kotlin'
}

to gradle and renamed the directory. All compiles and works fine.

The only issue is that when I am in the project tab, in "Android" view the directory is still named "java" (if I switch to the project view in the dropdown, I do see "kotlin" tho).

What am I missing?

My android project is written 100% in Kotlin and I wanted to rename the java directory to kotlin to be consistent. I added

sourceSets{
    main.java.srcDirs += 'src/main/kotlin'
}

to gradle and renamed the directory. All compiles and works fine.

The only issue is that when I am in the project tab, in "Android" view the directory is still named "java" (if I switch to the project view in the dropdown, I do see "kotlin" tho).

What am I missing?

Update (2)

If you are using

Android Studio Arctic Fox version 2020.3.1 Beta 2

and

Gradle Plugin version 7.0.0-beta02

you are good to go and can just put put your code in src/main/kotlin . Android Studio shows it as kotlin in the file tree. No need for adding the directory to the sourceSet as shown below.

Android Studio 北极狐文件树


Update (1)

Kotlin is finally coming to AndroidSourceSet. If you use the latest Android Gradle Plugin version 7.0 alpha , you can use:

android.sourceSets.all {
    kotlin.srcDir("src/$name/kotlin")
}

This works fine in Android Studio 3.6.2 and should be the most versatile solution until AndroidSourceSet starts supporting Kotlin directly. Just add the following snippet at the end of your app/build.gradle[.kts] :

android.sourceSets.all {
    java.srcDir("src/$name/kotlin")
}

Android Studio 3.6 has the same behavior. This is how I fixed it, in app/build.gradle:

// Register kotlin files
android.sourceSets {
     androidTest.java.srcDirs += "src/androidTest/kotlin"
     debug.java.srcDirs += "src/debug/kotlin"
     main.java.srcDirs += "src/main/kotlin"
     test.java.srcDirs += "src/test/kotlin"
}

I think this feature Android Studio. By default, the folder with the source code it is marked as "java". Even if you are in the "src/main" folder contains "kotlin" and "java".

On Linux

In your modules gradle file ex: app.gradle

sourceSets{ 
    main.java.srcDirs += 'src/main/kotlin/' 
}

Update:

After refactor renaming java to kotlin , syntax highlighting got broken, cannot CTRL + B to resources in source files.

So I opened an issue in the issue tracker even mentioned the android view issue after renaming.

So for now I will keep the source directory name as it is.


Actually you just have to rename the java directory to kotlin , by right clicking on the java directory in Project view and select

Refactor > Rename

and type the new directory name as kotlin

No need to add any code to gradle file.

(Works on android studio 3.5, Linux Mint)

After refactoring on Android view , If it is a Android app module or android library module your source directories (java/kotlin) would not show up, but in regular library module s it will show up as java . In Project view all things look as expected.

even if it is supported in android studio , kotlin is still a plugin and v3.4 has the same behavior.

the solution:

sourceSets{ main.java.srcDirs += 'src\\main\\kotlin\\' }

in settings.gradle or local.properties works for me (windows)

Simpler Solution Go into Windows Explorer find your src directory Inside you will find

androidTest/java
main/java
test/java

Rename those java directories to

androidTest/kotlin
main/kotlin
test/kotlin

Testing

Optionally remove the.idea directory

Re-load project from disk

Sync project with Gradle files

Rebuild Project and run Project

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM