Android Studio پشتیبانی کامل از Kotlin ارائه میدهد و به شما امکان میدهد فایلهای Kotlin را به پروژه موجودتان اضافه کنید و کد زبان Java را به Kotlin تبدیل کنید. سپس میتوانید از همه ابزارهای موجود Android Studio با کد Kotlin خود استفاده کنید، ازجمله تکمیل خودکار، بررسی lint، بازسازی، اشکالزدایی، و غیره.
اگر پروژه جدیدی را شروع میکنید و میخواهید از Kotlin استفاده کنید، به ایجاد پروژه مراجعه کنید.
برای نمونهها، نمونههای کد Kotlin ما را بررسی کنید.
افزودن Kotlin به پروژه موجود
برای افزودن Kotlin به پروژه، مراحل زیر را انجام دهید:
روی File (فایل) > New (جدید) کلیک کنید و یکی از الگوهای مختلف Android را انتخاب کنید، برای مثال Fragment (تکه) خالی جدید، همانطور که در شکل ۱ نشان داده شده است. اگر فهرست الگوها را در این منو نمیبینید، ابتدا پنجره پروژه را باز کنید و واحد برنامه خود را انتخاب کنید.
شکل ۱. از الگوهای دردسترس، مثل fragment یا activity انتخاب کنید. در دستیاری که ظاهر میشود، Kotlin را برای زبان منبع انتخاب کنید. شکل ۲ گفتگوی فعالیت جدید Android را برای زمانی که میخواهید فعالیت جدیدی ایجاد کنید نشان میدهد.
شکل ۲. کادر گفتگوی فعالیت جدید Android که در آن میتوانید Kotlin را بهعنوان زبان منبع انتخاب کنید. درطول دستیار ادامه دهید.
یا میتوانید روی فایل > جدید > فایل/کلاس Kotlin کلیک کنید تا یک فایل Kotlin پایه ایجاد کنید. اگر این گزینه را نمیبینید، پنجره پروژه را باز کنید و دایرکتوری java را انتخاب کنید. پنجره فایل/کلاس جدید Kotlin به شما امکان میدهد نام فایل را تعریف کنید و چندین گزینه برای نوع فایل ارائه میدهد: فایل، کلاس، واسط، کلاس شمارشی، یا شیء. انتخاب شما تعیین میکند که داربست پایه در فایل جدید Kotlin برایتان ایجاد شود. اگر کلاس را انتخاب کنید، «استودیو Android» فایل منبع Kotlin جدیدی با نام دادهشده و تعریف کلاس منطبق ایجاد میکند. اگر واسط را انتخاب کنید، واسطی در فایل تعریف میشود، و غیره.
اگر این اولینبار است که کلاس یا فایل Kotlin جدیدی را مستقیماً (بدون استفاده از الگوهای Android) به پروژه خود اضافه میکنید، Android Studio هشداری مبنی بر پیکربندی نشدن Kotlin در پروژه نمایش میدهد، همانطور که در شکل ۳ نشان داده شده است. با کلیک کردن روی پیکربندی در گوشه بالا سمت چپ ویرایشگر یا در هشدار گزارش رویداد که در گوشه پایین سمت چپ ظاهر میشود، Kotlin را پیکربندی کنید.
وقتی از شما خواسته شد، گزینه پیکربندی Kotlin برای همه واحدهای دارای فایلهای Kotlin را انتخاب کنید، همانطور که در شکل ۴ نشان داده شده است:
پساز کلیک کردن روی تأیید، Android Studio زبان Kotlin را به مسیر کلاس پروژه شما اضافه میکند و افزایه Kotlin Android را روی هر ماژولی که حاوی فایلهای Kotlin است اعمال میکند.
فایلهای build.gradle شما باید شبیه مثالهای زیر باشد:
شیک
// Project build.gradle file. buildscript { ext.kotlin_version = '1.4.10' ... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
کاتلین
// Project build.gradle.kts file. buildscript { extra["kotlin_version"] = "1.4.10" ... dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") } }
شیک
// Inside each module using kotlin plugins { ... id 'kotlin-android' } ... dependencies { implementation 'androidx.core:core-ktx:1.3.2' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" }
کاتلین
// Inside each module using kotlin plugins { ... kotlin("android") } ... val kotlin_version: String by rootProject.extra dependencies { implementation("androidx.core:core-ktx:1.3.2") implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version") }
سازمان منبع
بهطور پیشفرض، فایلهای جدید Kotlin در src/main/java/ ذخیره میشوند که
دیدن فایلهای Kotlin و Java را در یک مکان آسان میکند. اگر ترجیح میدهید فایلهای Kotlin را از فایلهای Java جدا کنید، میتوانید فایلهای Kotlin را در
src/main/kotlin/ قرار دهید. اگر این کار را انجام دهید، باید این
دایرکتوری را نیز در پیکربندی sourceSets
خود بگنجانید، همانطور که در زیر نشان داده شده است:
شیک
android { sourceSets { main.java.srcDirs += 'src/main/kotlin' } }
کاتلین
android { sourceSets { getByName("main") { java.srcDir("src/main/kotlin") } } }
تبدیل کد جاوا موجود به کد Kotlin
برای تبدیل کد جاوا به Kotlin، فایل جاوا را در «استودیو Android» باز کنید و کد > تبدیل فایل جاوا به فایل Kotlin را انتخاب کنید. یا فایل Kotlin جدیدی (File > New > Kotlin File/Class) ایجاد کنید و سپس کد جاوا را در آن فایل جایگذاری کنید. سپس Android Studio پیاموارهای نمایش میدهد و پیشنهاد میکند کدتان را به Kotlin تبدیل کنید، همانطور که در شکل ۵ نشان داده شده است. برای تبدیل کردن، روی بله کلیک کنید. میتوانید بهصورت اختیاری این کادر گفتگو دفعه بعد نشان داده نشود را علامت بزنید، که باعث میشود تبدیلهای آینده بهصورت خودکار انجام شود.
تبدیل کد و قابلیت تهی بودن
فرایند تبدیل Android Studio کد Kotlin معادل عملکردی تولید میکند که کامپایل و اجرا میشود. بااینحال، احتمالاً باید بهینهسازیهای بیشتری روی کد تبدیلشده انجام دهید. برای مثال، ممکن است بخواهید نحوه مدیریت انواع تهی توسط کد تبدیلشده را اصلاح کنید.
در Android، معمولاً مقداردهی اولیه اشیای View و دیگر
عناصر تا زمانی که قطعه یا فعالیتی که به آن متصل هستند به
وضعیت چرخه حیات مناسب برسد بهتأخیر میافتد. برای مثال، ممکن است در یکی از تکههایتان به
دکمهای ارجاع دهید، همانطور که در گزیده زیر نشان داده شده است:
public class JavaFragment extends Fragment {
// Null until onCreateView.
private Button button;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_content, container,false);
// Get a reference to the button in the view, only after the root view is inflated.
button = root.findViewById(R.id.button);
return root;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Not null at this point of time when onViewCreated runs
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
}
}
اگرچه متغیر دکمه تهیپذیر است، اما برای همه اهداف عملی، وقتی در این مثال استفاده میشود نباید تهی باشد. بااینحال، ازآنجاییکه مقدار آن در نقطه ساخت اختصاص داده نشده است، کد Kotlin تولیدشده Button را بهعنوان نوع تهیشونده درنظر میگیرد و از عملگر ادعای غیرتهی برای باز کردن دکمه هنگام افزودن شنونده کلیک استفاده میکند، همانطور که در زیر نشان داده شده است:
class JavaFragment : Fragment() {
// Null until onCreateView.
private var button: Button? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
...
// Get a reference to the button in the view, only after the root view is inflated.
button = root.findViewById(R.id.button)
...
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Not null at the point of time when onViewCreated fires
// but force unwrapped nonetheless
button!!.setOnClickListener { }
}
}
این تبدیل نسبتبه استفاده از lateinit برای این مورد کمتر ایدهآل است، زیرا مجبورید مرجع دکمه را با یک ادعای غیرتهی یا عملگر فراخوانی ایمن در هر جایی که به آن دسترسی پیدا میکنید، باز کنید.
در موارد دیگر، که null یک تخصیص متغیر معتبر براساس مورد استفاده برنامه شما است، استفاده از عملگر فراخوانی ایمن (?.) با عملگر elvis خاتمهدهنده (?:) ممکن است روش مناسبتری برای باز کردن ایمن شیء تهیپذیر یا تبدیل آن به مقدار پیشفرض غیرتهی معقول باشد. Android Studio
اطلاعات کافی برای انجام این تعیین درطول
فرایند تبدیل ندارد. اگرچه بهطور پیشفرض به ادعای غیرتهی تبدیل میشود، باید
پیگیری کنید و کد تبدیلشده را درصورت نیاز اصلاح کنید.
اطلاعات بیشتر
برای کسب اطلاعات بیشتر درباره استفاده از کد Kotlin و Java در پروژهتان، به فراخوانی کد Java از Kotlin مراجعه کنید.
برای کسب اطلاعات بیشتر درباره استفاده از Kotlin در سناریوهای سازمانی، به استفاده از Kotlin برای تیمهای بزرگ مراجعه کنید.
برای کسب اطلاعات درباره دادهپوشهای اصطلاحی Kotlin برای APIهای موجود Android، به Android KTX مراجعه کنید.