سلام خدمت همه ی عزیزان کدایت ، با بخشی دیگری از آموزش های کدایت در خدمت شما عزیزان هستیم .امروز قصد داریم تبدیل کد های کاتلین به جاوا را برای شما عزیزان را آموزش دهیم.
تبدیل کد های کاتلین به جاوا به چه صورتی میباشد ؟
ببینید همان طور که در مبحث کاتلین خدمت شما عزیزان توضیح دادیم . زبان جاوا و کاتلین سازگاری زیادی با هم دارند. و ما میتوانیم در بخش های از کد های جاوا و یا در بخش دیگر از کد های کاتلین استفاده کنیم . شاید یکی از سوالاتی که برای شما عزیزان در این راه پیش آمده این هست که تبدیل کد های kotlin به جاوا یا برعکس تبدیل کد های جاوا به کاتلین چگونه انجام می گیرد .
در واقع زبان برنامه نویسی جاوا و کاتلین به دلیل شباهت های بسیاری که با همدیگر دارند. همچنین این قابلیت را نیز دارند که با یکدیگر همکاری کنند .در واقع ما زمانی که میخواهیم یک پروژه اندروید بسازیم . میتوانیم کد های جاوا و کاتلین را با یکدیگر ترکیب کنیم . ببینید همانطور که شاید بدانید نحو زبان برنامه نویسی جاوا و کاتلین در بیشتر مواقع متفاوت هستش . ولی چیزی که مهم هست اینکه که روند کامپایل این دو زبان کاملا یکسان هست . یعنی هر دو این زبان ها در یک بایت کدی که در JVM قابل اجرا هستش کامپایل میشود .
نحوه تبدیل کردن کد های کاتلین به جاوا توسط اندروید استودیو به این صورت هست که اندروید استودیو اون بایت کد های کاتلین را که کامپایل شده هست را استخراج میکند . و از همین روش استفاده میکند و برای تولید کد های جاوای معادل آن این بایت کد ها رو دیکامپایل میکند . ما در این آموزش قصد داریم برای شما توضیح بدهیم که این تبدیل چگونه انجام میگیرد .
اولین قدم : باز کردن یک پروژه کاتلین
اولین کاری که باید انجام دهیم به عنوان نمونه یک پروژه کاتلین بازکنید و کد های که درون پروژه به زبان کاتلین نوشته شده است تا تبدیل کد های کاتلین به جاوا انجام دهید . من به عنوان نمونه یک اکتیویتی درست کردم و کد های کاتلین من به صورت زیر میباشد .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import android.os.Bundle import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity class MainActivity2 : AppCompatActivity() { lateinit var btn_pause: ImageView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main2) btn_pause = findViewById(R.id.Id_pause) } } |
و اما تبدیل کد های kotlin به java رو چگونه انجام دهیم .
قدم دوم : منوی ابزار بخش Tools
الان نوبت آن رسیده که وارد بخش منو ابزار شوید و قسمت Tools و همچنین به مسیر Kotlin > Show Kotlin Bytecode بروید مانند تصویر زیر :
قدم سوم : Decompile بایت کد ها
کار بعدی که باید انجام دهیم تا تبدیل کد های kotlin به جاوا انجام گیرد این هست که مانند تصویر زیر عمل کنیم تا کد های kotlin ما Decompile شود . و به کد های جاوا تبدیل شود .
بعد از کار های بالا کد جاوا ای که بدست میاید مانند کد های زیر میباشد .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import android.os.Bundle; import android.view.View; import android.widget.ImageView; import androidx.appcompat.app.AppCompatActivity; import kotlin.Metadata; import kotlin.jvm.internal.Intrinsics; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @Metadata( mv = {1, 1, 18}, bv = {1, 0, 3}, k = 1, d1 = {"\u0000 \n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0012\u0010\t\u001a\u00020\n2\b\u0010\u000b\u001a\u0004\u0018\u00010\fH\u0014R\u001a\u0010\u0003\u001a\u00020\u0004X\u0086.¢\u0006\u000e\n\u0000\u001a\u0004\b\u0005\u0010\u0006\"\u0004\b\u0007\u0010\b¨\u0006\r"}, d2 = {"Lcom/example/musicplayer/MainActivity2;", "Landroidx/appcompat/app/AppCompatActivity;", "()V", "btn_pause", "Landroid/widget/ImageView;", "getBtn_pause", "()Landroid/widget/ImageView;", "setBtn_pause", "(Landroid/widget/ImageView;)V", "onCreate", "", "savedInstanceState", "Landroid/os/Bundle;", "musicPlayer.app"} ) public final class MainActivity2 extends AppCompatActivity { public ImageView btn_pause; @NotNull public final ImageView getBtn_pause() { ImageView var10000 = this.btn_pause; if (var10000 == null) { Intrinsics.throwUninitializedPropertyAccessException("btn_pause"); } return var10000; } public final void setBtn_pause(@NotNull ImageView var1) { Intrinsics.checkParameterIsNotNull(var1, "<set-?>"); this.btn_pause = var1; } protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(1300051); View var10001 = this.findViewById(1000083); Intrinsics.checkExpressionValueIsNotNull(var10001, "findViewById(R.id.Id_pause)"); this.btn_pause = (ImageView)var10001; } } |
آموزش تصویری Decompile کد های کاتلین به صورت زیر میباشد .
سلام آیا میشه کد های کاتلین رو به بیسیک فور اندروید تبدیل کرد؟! چطوری؟!