Kotlin 코드 Java로 디컴파일하기
Kotlin은 자바로 만들었습니다.
Android Studio에서 제공하는 바이트 코드 디 컴파일을 사용하여 간단하게 컴파일 할 수 있습니다.
Kotlin 디 컴파일
안드로이드 스튜디오에서 Kotlin 플러그인을 설치, 실시간으로 Kotlin Bytecode 확인이 가능합니다.
메뉴 위치는 안드로이드 스튜디오 Tools
> Kotlin
> Show Kotlin Bytecode
를 눌러 주면 Kotlin Bytecode
화면을 볼 수 있습니다.
당신과 똑같은 순간 Kotlin Bytecode
확인. 여기에서 자바 코드를 확인하는 바이트 코드를 확인하세요
Decompile
Java CPU 에서 컴파일 결과를 확인하십시오!
디 컴파일
Kotlin Bytecode는 실시간으로 컴파일 된 결과를 보여 주며,
when (item.itemId) {
R.id.navigation_home -> {
message.setText(R.string.title_home)
return@OnNavigationItemSelectedListener true
}
// ...
}
바이트 코드입니다. 바이트 코드에 대한 표기법 문
INVOKEINTERFACE android/view/MenuItem.getItemId ()I
TABLESWITCH
2131230822: L2
2131230823: L3
2131230824: L4
2131230825: L5
default: L3
L4
LINENUMBER 13 L4
ALOAD 0
GETFIELD com/example/taehwankwon/myapplication/MainActivity$mOnNavigationItemSelectedListener$1.this$0 : Lcom/example/taehwankwon/myapplication/MainActivity;
GETSTATIC com/example/taehwankwon/myapplication/R$id.message : I
INVOKEVIRTUAL com/example/taehwankwon/myapplication/MainActivity._$_findCachedViewById (I)Landroid/view/View;
CHECKCAST android/widget/TextView
LDC 2131623991
INVOKEVIRTUAL android/widget/TextView.setText (I)V
L6
LINENUMBER 14 L6
ICONST_1
IRETURN
L2
왜 스위치 디 컴파일을 해보면 바로 확인할 수 있습니다.
switch(item.getItemId()) {
case 2131230822:
((TextView)MainActivity.this._$_findCachedViewById(id.message)).setText(2131623990);
return true;
case 2131230823:
default:
return false;
// ...
}
'Kotlin' 카테고리의 다른 글
고차함수 (Higher-order-function) ,1급시민[객체,함수] (First-Class Citizen) (0) | 2019.08.29 |
---|---|
Reflection (0) | 2019.06.08 |
Collection에 대하여 -3 collection에 적용할수 있는 함수들 (4) | 2019.03.09 |
Collection에 대하여 -2 collection에 적용할수 있는 함수들 (2) | 2019.03.09 |
Collection에대하여 -1 (4) | 2019.03.09 |
댓글