Kotlin 소스 파일이 있지만 Java로 변환하고 싶습니다.
Kotlin을 Java 소스로 변환하려면 어떻게해야합니까?
Kotlin 소스 파일이 있지만 Java로 변환하고 싶습니다.
Kotlin을 Java 소스로 변환하려면 어떻게해야합니까?
답변:
@Vadzim이 말했듯이 IntelliJ 또는 Android Studio에서 kotlin에서 Java 코드를 얻으려면 다음을 수행해야합니다.
Menu > Tools > Kotlin > Show Kotlin Bytecode
Decompile
버튼을 클릭하십시오최신 정보:
Kotlin 플러그인의 최신 버전 (1.2 이상)을 사용하면 직접 할 수도 있습니다 Menu > Tools > Kotlin -> Decompile Kotlin to Java
.
Kotlin을 바이트 코드로 컴파일 한 다음 Java 디스어셈블러를 사용할 수 있습니다.
디 컴파일은 IntelliJ Idea 내에서 또는 FernFlower https://github.com/fesh0r/fernflower (감사합니다 @Jire)를 사용하여 수행 할 수 있습니다
몇 달 전에 확인한 자동화 도구가 없었습니다 (AFAIK 한 개에 대한 계획도 없음)
Kotlin
소스 파일을 소스 파일 로 변환하려면Java
(Android Studio의 경우) :
보도 Cmd- Shift- A맥, 누르거나 Ctrl- Shift- AWindows 시스템에.
찾고있는 동작을 입력하고 메뉴에서 Kotlin Bytecode
선택하십시오 Show Kotlin Bytecode
.
Decompile
상단의 버튼을 누릅니다 Kotlin Bytecode
.Kotlin을 바이트 코드로 컴파일 한 다음 Java로 디 컴파일합니다. Kotlin 컴파일러로 컴파일하고 cfr로 디 컴파일 합니다.
내 프로젝트는 여기 .
이것은 이것을 컴파일 할 수있게합니다 :
package functionsiiiandiiilambdas.functions.p01tailiiirecursive
tailrec fun findFixPoint(x: Double = 1.0): Double =
if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))
이에:
package functionsiiiandiiilambdas.functions.p01tailiiirecursive;
public final class ExampleKt {
public static final double findFixPoint(double x) {
while (x != Math.cos(x)) {
x = Math.cos(x);
}
return x;
}
public static /* bridge */ /* synthetic */ double findFixPoint$default(
double d, int n, Object object) {
if ((n & 1) != 0) {
d = 1.0;
}
return ExampleKt.findFixPoint(d);
}
}
@ louis-cad가 언급했듯이 "Kotlin source-> Java의 바이트 코드-> Java source"는 지금까지 유일한 솔루션입니다.
그러나 Android 용 Jadx 디 컴파일러를 사용하는 방법을 언급하고 싶습니다 .
그것은 클로저를 위한 코드를 생성하는 것을 볼 수있게 해주 며 , 결과적으로 코드는 IntelliJ IDEA 디 컴파일러의 코드보다 "깨끗하다".
일반적으로 Kotlin 클래스의 Java 소스 코드를 볼 필요가있을 때 :
./gradlew assembleDebug
jadx-gui ./app/build/outputs/apk/debug/app-debug.apk
이 GUI에서 기본 IDE 기능은 다음과 같습니다. 클래스 검색, 클릭하여 이동 선언. 기타
또한 모든 소스 코드를 저장 한 다음 IntelliJ IDEA와 같은 다른 도구를 사용하여 볼 수 있습니다.
brew install jadx
Java 및 Kotlin은 JVM (Java Virtual Machine)에서 실행됩니다.
Kotlin 파일을 Java 파일로 변환하려면 Kotlin 코드를 JVM 바이트 코드로 컴파일 한 다음 바이트 코드를 Java 코드로 디 컴파일하는 두 단계가 필요합니다.
Kotlin 소스 파일을 Java 소스 파일로 변환하는 단계 :