এই গাইড সংস্করণ 5.0 এ স্থানান্তরিত করার জন্য প্রয়োজনীয় পরিবর্তনগুলি বর্ণনা করে।
Gradle এবং Android Gradle প্লাগইন আপডেট
Gradle এবং Android Gradle প্লাগইন সংস্করণ আপগ্রেড করুন
প্রথমে, আপনার গ্রেডল এবং অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ আপগ্রেড করুন। এই আপগ্রেডে নির্দিষ্ট SDK নির্ভরতার সাথে আরও ভাল সামঞ্জস্য রয়েছে (কোটলিন 1.9 সহ), পাশাপাশি কিছু জটিল বাগ সংশোধন করা হয়েছে।
এই SDK প্রধান রিলিজের জন্য আপনার Android অ্যাপ্লিকেশন প্রকল্পের জন্য নিম্নলিখিত সংস্করণ নির্ভরতা প্রয়োজন:
- একটি Gradle সংস্করণ কমপক্ষে v7.5.0 কিন্তু v7.6.0 এর চেয়ে বেশি নয়।
- একটি Android Gradle Plugin (AGP) সংস্করণ v7.4.x পরিসরে।
আপনি প্লাগইনগুলির একটি উচ্চ সংস্করণ লক্ষ্য করতে পারেন; যাইহোক, আপনি অবচয় সতর্কতার মধ্যে চালাতে পারেন, অথবা কিছু নতুন বৈশিষ্ট্য কাজ নাও করতে পারে।
Gradle সংস্করণটি পরিবর্তন করতে, আপনার প্রকল্পের /gradle/wrapper/gradle-wrapper.properties
ফাইলে লাইনটি পরিবর্তন করুন
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ পরিবর্তন করতে, build.gradle
ফাইলটি পরিবর্তন করুন যাতে buildscript
ব্লক রয়েছে। যেমন:
buildscript {
repositories {
google()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
জাভা 7 থেকে জাভা 8 লাইব্রেরি সমর্থন মাইগ্রেশন
ধাপ 1 - Java 8 লাইব্রেরি সমর্থন সক্ষম করুন
যেহেতু SDK min API লেভেল 23 এবং প্রয়োজনীয় AGP ভার্সন 7.4+, কনফিগারেশন উল্লিখিত সোর্স ডকুমেন্টেশন থেকে কিছুটা আলাদা।
buildscript {
repositories {
google()
mavenCentral()
jcenter()
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw")
}
}
dependencies {
classpath 'com.android.tools:r8:8.0.46'
classpath 'com.android.tools.build:gradle:7.4.1'
}
}
android {
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
}
ধাপ 2 - প্রোগার্ড বা ডেক্সগার্ড থেকে R8 এ মাইগ্রেট করুন
AGP v7.4+ বাইনারির জন্য ডিফল্ট সঙ্কুচিত, অস্পষ্টতা এবং অপ্টিমাইজেশান টুল হিসাবে R8 ব্যবহার করে, তাই এই সময়ে কোন বিশেষ পদক্ষেপের প্রয়োজন নেই।
যদি প্রকল্পটি AGP 4.0+ থেকে স্থানান্তরিত হয়, AGP ফাইল অপসারণ সম্পর্কে নিম্নলিখিত সতর্কতা জারি করতে পারে:
-
build.gradle
ফাইলেuseProguard true
ব্যবহার - android.enableR8=
gradle.properties
ফাইলেandroid.enableR8=false
ব্যবহার
এই লাইনগুলি সরানো সাধারণত সেই সমস্যাগুলি সমাধান করে।
কোটলিন 1.6 থেকে 1.9 মাইগ্রেশন
ধাপ 1 - Kotlin Gradle Plugin 1.9.0-এ মাইগ্রেট করুন
আপনার অ্যাপ্লিকেশন টপ লেভেল মডিউল build.gradle ফাইলে Kotlin Gradle Plugin সংস্করণ আপডেট করুন। বিল্ডস্ক্রিপ্ট ব্লক থেকে org.jetbrains.kotlin:kotlin-gradle-plugin
যোগ করা নিশ্চিত করুন যদি এটি অনুপস্থিত থাকে।
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
}
}
আপনি যদি Kotlin Gradle Plugin 1.6.X বা 1.7.X থেকে আসছেন তাহলে আপনাকে অবশ্যই Kotlin-synthetics থেকে আপনার আবেদন স্থানান্তর করতে হবে। আরও তথ্যের জন্য অফিসিয়াল মাইগ্রেশন গাইড পড়ুন।
ধাপ 2 - kotlin-stdlib 1.9.0 এ আপগ্রেড করুন
আপনার অ্যাপ্লিকেশন build.gradle ফাইলে kotlin-stblib
1.9.0 এ আপগ্রেড করুন।
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
}
kotlin-stdlib-jdk7
বা kotlin-stdlib-jdk8
এর যেকোনো রেফারেন্স মুছে ফেলার বিষয়টি নিশ্চিত করুন। উভয় নির্ভরতা কোটলিন 1.8.0 থেকে শুরু করে kotlin-stdlib
এ একীভূত করা হয়েছে।
স্ট্যাটাস লিসনার অবচয়
StatusListener
ইন্টারফেসটি এখন DriverStatusListener
এর অনুকূলে (v6-এ সরানো হবে) অবহেলিত।
প্রধানত 3টি পরিবর্তন রয়েছে:
-
StatusListener
থেকেDriverStatusListener
এimplements
ইন্টারফেস পরিবর্তন করুন। -
updateStatus
একটিNullable
cause
প্যারামিটার যোগ করুন। -
setStatusListener
এর পরিবর্তেDriverContextBuilder.setDriverStatusListener
কে কল করুন।
DriverStatusListener
StatusListener
এর মতো একই কাঠামো শেয়ার করে। তাদের মধ্যে প্রধান পার্থক্য হল DriverStatusListener.updateStatus()
cause
নামে একটি অতিরিক্ত প্যারামিটার নেয়। এটি ব্যবহারকারীদের ত্রুটির স্থিতি স্তর সহ একটি আপডেটের কারণ সম্পর্কে অন্তর্দৃষ্টি প্রদান করে৷
সাধারণত, ব্যর্থ অবস্থান আপডেটের জন্য ফ্লিট ইঞ্জিন দ্বারা প্রত্যাবর্তিত ত্রুটি কোডটি পুনরুদ্ধার করতে আপনি cause
ব্যবহার করবেন।
নিম্নলিখিত নমুনা বর্ণনা করে কিভাবে StatusListener
বাস্তবায়ন করতে হয়:
class MyStatusListener implements StatusListener {
/** Called when background status is updated during actions such as location reporting. */
@Override
public void updateStatus(
StatusLevel statusLevel, StatusCode statusCode, String statusMsg) {
// Implementation
}
}
// Inject StatusListener into DriverContext.
DriverContextBuilder.setStatusListener(new MyStatusListener());
নিম্নলিখিত একটি নমুনা DriverStatusListener
বাস্তবায়ন দেখায়:
class MyStatusListener implements DriverStatusListener {
/** Called when background status is updated during actions such as location reporting. */
@Override
public void updateStatus(
StatusLevel statusLevel, StatusCode statusCode, String statusMsg, @Nullable Throwable cause) {
// Existing implementation
if (cause != null && cause instanceof StatusRuntimeException) {
if (Status.NOT_FOUND.getCode().equals(cause.getStatus().getCode())) {
// NOT_FOUND gRPC exception thrown by Fleet Engine.
}
}
}
}
DriverContextBuilder.setStatusListener(new MyStatusListener());
একটি কার্যকরী ইন্টারফেস হিসাবে DriverStatusListener
প্রয়োগ করুন
DriverStatusListener
জাভা কার্যকরী ইন্টারফেস সমর্থন করে ঠিক তার পূর্বসূরীর মত। এখানে এটির একটি উদাহরণ:
DriverContextBuilder.setDriverStatusListener((statusLevel, statusCode, statusMsg, cause) -> {
if (cause != null && cause instanceof StatusRuntimeException) {
if (Status.NOT_FOUND.getCode().equals(cause.getStatus().getCode())) {
// NOT_FOUND gRPC exception thrown by Fleet Engine.
}
}
});