đą āĻĒুāϰāύো āĻāĻŦং āύāϤুāύ API-āĻāϰ āĻŽāϧ্āϝে āĻāĻŽ্āĻĒ্āϝাāĻিāĻŦিāϞিāĻি āĻŦāĻাā§ āϰাāĻাāϰ āϏāĻšāĻ āĻāĻĒাā§ (āĻŦাংāϞাā§)
đą āĻĒুāϰāύো āĻāĻŦং āύāϤুāύ API-āĻāϰ āĻŽāϧ্āϝে āĻāĻŽ্āĻĒ্āϝাāĻিāĻŦিāϞিāĻি āĻŦāĻাā§ āϰাāĻাāϰ āϏāĻšāĻ āĻāĻĒাā§ (āĻŦাংāϞাā§)
āĻāĻāĻা Android āĻ
্āϝাāĻĒ āĻĄেāĻেāϞāĻĒ āĻāϰাāϰ āϏāĻŽā§ āĻĒ্āϰাā§āĻ āĻāĻŽাāĻĻেāϰ āĻāĻŽāύ āϏāĻŽāϏ্āϝাā§ āĻĒā§āϤে āĻšā§—
đ āĻĒুāϰāύো (Legacy) API āϏাāĻĒোāϰ্āĻ āϰাāĻāĻŦো āύাāĻি āύāϤুāύ API āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻŦো?
āĻাāϰāĻŖ, āύāϤুāύ API āĻ āύেāĻ āĻāύ্āύāϤ āĻĢিāĻাāϰ āĻĻিāϞেāĻ, āĻĒুāϰāύো Android āĻাāϰ্āϏāύāĻুāϞোāϤে āϤা āϏাāĻĒোāϰ্āĻ āύাāĻ āĻāϰāϤে āĻĒাāϰে। āĻĢāϞে "App Crash" āĻšāϤে āĻĒাāϰে āĻŦা āĻিāĻু āĻĢিāĻাāϰ āĻাāĻ āύাāĻ āĻāϰāϤে āĻĒাāϰে। đĩđĢ
āϤাāĻ, āĻĒুāϰāύো āĻ āύāϤুāύ API-āĻāϰ āĻŽāϧ্āϝে āĻŦ্āϝাāϞেāύ্āϏ āϰাāĻা āĻুāĻŦ āĻĻāϰāĻাāϰ ✅
đ¯ āĻেāύ āĻĒুāϰāύো API-āĻāϰ āϏাāĻĨে āĻāĻŽ্āĻĒ্āϝাāĻিāĻŦিāϞিāĻি āϰাāĻা āĻĻāϰāĻাāϰ?
1️⃣ āϏāĻŦ āϧāϰāύেāϰ āĻāĻāĻাāϰ āϝেāύ āĻ
্āϝাāĻĒ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϤে āĻĒাāϰে đ
2️⃣ āύāϤুāύ āĻĢিāĻাāϰ āϏাāĻĒোāϰ্āĻ āĻāϰেāĻ āĻĒুāϰāύো āĻĢোāύে āϏāĻŽāϏ্āϝা āύা āĻšā§ đ
3️⃣ Google Play Store-āĻāϰ āύীāϤি āĻ
āύুāϏāϰāĻŖ āĻāϰা ✅
đ āĻāĻŽ্āĻĒ্āϝাāĻিāĻŦিāϞিāĻি āĻŦāĻাā§ āϰাāĻাāϰ āĻিāĻĒāϏ
1️⃣ Build.VERSION.SDK_INT āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ
đ āĻāĻি āĻĻিā§ে āĻāĻĒāύি āĻেāĻ āĻāϰāϤে āĻĒাāϰāĻŦেāύ āĻŦ্āϝāĻŦāĻšাāϰāĻাāϰীāϰ āĻĢোāύে āĻোāύ Android āĻাāϰ্āϏāύ āĻāĻে āĻāĻŦং āϏেāĻ āĻ āύুāϝাā§ী āĻোāĻĄ āĻাāϞাāϤে āĻĒাāϰāĻŦেāύ।
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// āύāϤুāύ API āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ (Android 10 āĻŦা āϤাāϰ āĻāĻĒāϰে)
darkModeEnable();
} else {
// āĻĒুāϰāύো API āϏাāĻĒোāϰ্āĻ āĻāϰুāύ (Android 9 āĻŦা āϤাāϰ āύিāĻে)
legacyModeEnable();
}
đ āĻāĻি āĻেāύ āĻĻāϰāĻাāϰ?
✅ āύāϤুāύ API āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϞেāĻ āĻĒুāϰāύো āĻĢোāύে āĻ
āĻোāĻŽেāĻিāĻ āĻŦিāĻāϞ্āĻĒ āĻāĻĒাā§ āĻাāϞু āĻšāĻŦে đ
2️⃣ try-catch āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ (āĻĒুāϰāύো API āĻ্āϰ্āϝাāĻļ āĻ েāĻাāύোāϰ āĻāύ্āϝ)
đ āĻিāĻু āύāϤুāύ API āĻĒুāϰāύো āĻাāϰ্āϏāύে āύেāĻ। āϤাāĻ try-catch āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āĻ্āϰ্āϝাāĻļ āĻā§াāϤে āĻĒাāϰেāύ।
try {
someNewApiMethod(); // āύāϤুāύ API
} catch (NoSuchMethodError | NoClassDefFoundError e) {
// āĻŦিāĻāϞ্āĻĒ āĻāĻĒাā§ (fallback)
useOldMethod();
}
đ āĻāĻি āĻেāύ āĻĻāϰāĻাāϰ?
✅ āύāϤুāύ āĻĢিāĻাāϰ āϏাāĻĒোāϰ্āĻ āĻāϰāϞেāĻ āĻ্āϰ্āϝাāĻļ āĻšāĻŦে āύা!
3️⃣ Support Library & AndroidX āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰুāύ
đ Google āĻ āύেāĻ āύāϤুāύ āĻĢিāĻাāϰ Support Library āĻ AndroidX āĻāϰ āĻŽাāϧ্āϝāĻŽে āĻĒুāϰāύো āĻাāϰ্āϏāύেāĻ āĻাāϞাāύোāϰ āϏুāϝোāĻ āĻĻিā§েāĻে।
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.core:core-ktx:1.6.0'
}
đ āĻāĻি āĻেāύ āĻĻāϰāĻাāϰ?
✅ āύāϤুāύ āĻĢিāĻাāϰ āĻĒুāϰāύো āĻĢোāύেāĻ āĻাāĻ āĻāϰāĻŦে!
4️⃣ Deprecated API āĻš্āϝাāύ্āĻĄেāϞ āĻāϰুāύ
đ Google āĻ āύেāĻ API Deprecated (āĻ āĻŦ্āϝāĻŦāĻšৃāϤ) āĻāϰে āĻĢেāϞে, āϤাāĻ āĻŦিāĻāϞ্āĻĒ āĻুঁāĻāϤে āĻšāĻŦে।
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
htmlTextView.setText(Html.fromHtml(htmlData, Html.FROM_HTML_MODE_LEGACY));
} else {
htmlTextView.setText(Html.fromHtml(htmlData));
}
đ āĻāĻি āĻেāύ āĻĻāϰāĻাāϰ?
✅ āĻĒুāϰāύো āĻ āύāϤুāύ API āĻĻুāĻিāĻ āϏাāĻĒোāϰ্āĻ āĻāϰāĻŦে!
5️⃣ ProGuard āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে āĻ āĻĒ্āϰā§োāĻāύীā§ āĻোāĻĄ āϰিāĻŽুāĻ āĻāϰুāύ
đ āĻ āύেāĻ āϏāĻŽā§ āĻĒুāϰāύো API-āĻāϰ āĻāύ্āϝ āĻিāĻু āĻোāĻĄ āϰাāĻāϤে āĻšā§, āϝা āύāϤুāύ āĻাāϰ্āϏāύে āĻĻāϰāĻাāϰ āύেāĻ।
-assumenosideeffects class android.util.Log { *; }
đ āĻāĻি āĻেāύ āĻĻāϰāĻাāϰ?
✅ āĻ
āĻĒ্āϰā§োāĻāύীā§ āĻোāĻĄ āĻোāĻ āĻāϰāĻŦে, āĻ
্āϝাāĻĒ āĻĒাāϰāĻĢāϰāĻŽ্āϝাāύ্āϏ āĻŦাā§াāĻŦে! đ
✅ āĻļেāώ āĻāĻĨা
āĻĒুāϰāύো āĻ āύāϤুāύ API-āĻāϰ āĻŽāϧ্āϝে āĻāĻŽ্āĻĒ্āϝাāĻিāĻŦিāϞিāĻি āĻŦāĻাā§ āϰাāĻা āĻŽাāύে āĻšāϞো—
đĄ āύāϤুāύ āĻĢিāĻাāϰ āϏাāĻĒোāϰ্āĻ āĻāϰেāĻ āĻĒুāϰāύো āĻĄিāĻাāĻāϏ āĻŦ্āϝāĻŦāĻšাāϰāĻাāϰীāĻĻেāϰ āĻŦাāĻĻ āύা āĻĻেāĻā§া!
đ āĻীāĻাāĻŦে āĻāϰāĻŦেāύ?
✔ Build.VERSION.SDK_INT āĻেāĻ āĻāϰে āĻĒুāϰāύো āĻ āύāϤুāύ API āĻāϞাāĻĻা āĻাāĻŦে āĻাāϞাāύো
✔ try-catch āĻĻিā§ে āĻ্āϰ্āϝাāĻļ āĻ েāĻাāύো
✔ AndroidX āĻ Support Library āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰা
✔ Deprecated API āĻুāϞো āĻŦিāĻāϞ্āĻĒāĻাāĻŦে āĻŽ্āϝাāύেāĻ āĻāϰা
✔ ProGuard āĻĻিā§ে āĻ
āĻĒ্āϰā§োāĻāύীā§ āĻোāĻĄ āĻŽুāĻে āĻĢেāϞা
āĻāĻাāĻŦে āĻāϰāϞে āĻāĻĒāύাāϰ āĻ ্āϝাāĻĒ āϏāĻŦ āĻĢোāύেāĻ āĻ িāĻāĻŽāϤো āĻāϞāĻŦে! đđ
Comments
Post a Comment