কেন আমি এখনও একটি API স্তর 34 সতর্কতা দেখছি?
ফ্লাটার ডেভেলপমেন্টে, নতুন বৈশিষ্ট্য এবং নিরাপত্তা আপগ্রেডের সাথে অ্যাপের সামঞ্জস্য নিশ্চিত করার জন্য সাম্প্রতিকতম অ্যান্ড্রয়েড এপিআই স্তরকে লক্ষ্য করা গুরুত্বপূর্ণ। সম্প্রতি, TargetSdkVersion এ API লেভেল 34 (Android 14) এ পরিবর্তন করার পর, ডেভেলপাররা রিপোর্ট করেছেন যে প্লে কনসোল এখনও সতর্ক করে যে অ্যাপটিকে অবশ্যই Android 14 বা তার উচ্চতর টার্গেট করতে হবে, সফল বিল্ড হওয়া সত্ত্বেও।
এই বৈষম্য বিভ্রান্তির কারণ হতে পারে, বিশেষ করে যখন আগের অ্যাপ বান্ডেলগুলি এখনও কনসোলে চলছে। পূর্ববর্তী সংস্করণগুলি বর্তমান আপলোডকে কীভাবে প্রভাবিত করে তা বোঝা এবং এই সতর্কতা মোকাবেলা করা আপনার ফ্লটার অ্যাপকে কার্যকরভাবে প্রকাশ করার জন্য গুরুত্বপূর্ণ।
আদেশ | বর্ণনা |
---|---|
compileSdkVersion | অ্যাপটি কম্পাইল করতে ব্যবহৃত API স্তর নির্ধারণ করে। এই ক্ষেত্রে, এটি 34 সেট করা হয়েছে, যা Android 14 কে লক্ষ্য করে। |
targetSdkVersion | Android API স্তরের সংজ্ঞায়িত করে যেখানে অ্যাপটি চলবে। 34-এ আপডেট করা Android 14-এর সাথে সামঞ্জস্যপূর্ণতা নিশ্চিত করে। |
google.auth.default() | Google APIগুলি অ্যাক্সেস করার জন্য ডিফল্ট শংসাপত্রগুলি পুনরুদ্ধার করে, যা সাধারণত ক্লাউড পরিষেবাগুলির সাথে ব্যবহার করা হয়৷ |
build('androidpublisher', 'v3') | Google Play Developer API সূচনা করে যাতে অ্যাপ প্যাকেজ এবং রিলিজগুলি প্রোগ্রাম্যাটিকভাবে পরিচালিত হতে পারে। |
service.edits().insert() | Google Play Console-এ একটি নতুন সম্পাদনা সেশন খোলে, যা অ্যাপ মেটাডেটা বা বান্ডেলগুলিতে পরিবর্তন করার জন্য প্রয়োজন। |
bundles = service.edits().bundles().list() | একটি নির্দিষ্ট অ্যাপ সংস্করণের সাথে সংযুক্ত সমস্ত অ্যাপ বান্ডিল তালিকাভুক্ত করে। এটি স্ক্রিপ্টটিকে পুরানো সংস্করণগুলি এখনও সক্রিয় কিনা তা নির্ধারণ করতে দেয়৷ |
service.edits().bundles().delete() | Google Play Console থেকে একটি সক্রিয় প্যাকেজ সরিয়ে দেয়। পুরানো বা বিরোধপূর্ণ বিল্ডগুলিকে নির্মূল করার জন্য এটি কার্যকর। |
service.edits().commit() | অ্যাপের কনফিগারেশন এবং বান্ডেলের সমস্ত পরিবর্তন সহ সম্পাদনা সেশনের সময় করা পরিবর্তনগুলি কমিট করে৷ |
ফ্লটারে API লেভেল টার্গেটিং এর সমাধান বোঝা
অ্যাপটি সঠিকভাবে API লেভেল 34 কে লক্ষ্য করে তা নিশ্চিত করতে প্রথম স্ক্রিপ্টটি ফ্লটার প্রজেক্টের অ্যান্ড্রয়েড সেটআপ পরিবর্তন করে। গুরুত্বপূর্ণ কমান্ডগুলি হল compileSdkVersion এবং targetSdkVersion, যা সংকলন এবং স্থাপনার সময় ব্যবহৃত Android SDK সংস্করণগুলি নির্দিষ্ট করে৷ compileSdkVersion-কে 34-এ সেট করা নিশ্চিত করে যে প্রোগ্রামটি Android 14 ব্যবহার করে তৈরি করা হয়েছে, যেখানে targetSdkVersion অ্যাপটি চালানোর জন্য উদ্দিষ্ট Android সংস্করণ নির্দিষ্ট করে। এই পরিবর্তনগুলি সাম্প্রতিকতম Google Play Store জমা দেওয়ার মানগুলি পূরণ করতে প্রকল্প সেটিংস আপডেট করে, অসমর্থিত API স্তর সম্পর্কিত সতর্কতা সরিয়ে দেয়৷
দ্বিতীয় স্ক্রিপ্টটি Python-এর মাধ্যমে Google Play Console API-এর সাথে যোগাযোগ করে। এটি সমস্যা সৃষ্টি করতে পারে এমন পুরানো সফ্টওয়্যার বান্ডেলগুলি সনাক্তকরণ এবং অপসারণ করার প্রক্রিয়াটিকে স্বয়ংক্রিয় করে। google.auth.default() প্লে স্টোর API অ্যাক্সেস করার জন্য ডিফল্ট শংসাপত্র প্রদান করে, যেখানে build('androidpublisher', 'v3') Google Play বিকাশকারী API শুরু করে। স্ক্রিপ্টটি তারপর সক্রিয় অ্যাপ বান্ডেল পেতে service.edits().bundles().list() ব্যবহার করে এবং যদি একটি পুরানো সংস্করণ আবিষ্কৃত হয়, তাহলে service.edits().bundles().delete() মুছে দেয়। অবশেষে, service.edits(.commit() কমান্ডটি সমস্ত পরিবর্তন সংরক্ষণ করে এবং প্রয়োগ করে, গ্যারান্টি দেয় যে অ্যাপটি যেকোন পুরানো বান্ডিল থেকে পরিষ্কার যা ত্রুটি বার্তার কারণ হতে পারে।
সমাধান: ফ্লটার অ্যাপের জন্য সঠিক টার্গেট SDK লেভেল আপডেট নিশ্চিত করুন।
ফ্লটার (ডার্ট) অ্যান্ড্রয়েড ম্যানিফেস্ট আপডেট
android {
compileSdkVersion 34
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 21
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
}
ব্যাকএন্ড স্ক্রিপ্ট: বান্ডেল সংস্করণ যাচাই করা এবং পুরানো বান্ডেল নিষ্ক্রিয় করা
সক্রিয় অ্যাপ বান্ডেল পরিচালনার জন্য Google Play Console API (Python)
import google.auth
from googleapiclient.discovery import build
credentials, project = google.auth.default()
service = build('androidpublisher', 'v3', credentials=credentials)
package_name = 'com.example.myapp'
edit_id = service.edits().insert(body={}, packageName=package_name).execute()['id']
bundles = service.edits().bundles().list(packageName=package_name, editId=edit_id).execute()
for bundle in bundles['bundles']:
if bundle['versionCode'] == 1: # First build still active
service.edits().bundles().delete(packageName=package_name, editId=edit_id,
bundleId=bundle['id']).execute()
service.edits().commit(packageName=package_name, editId=edit_id).execute()
ফ্লটার অ্যাপ আপডেটে বিরোধপূর্ণ বান্ডিলগুলি সমাধান করা।
Flutter অ্যাপের targetSdkVersion আপডেট করার সময় একটি সাধারণ সমস্যা হল পুরানো অ্যাপ বান্ডেলের উপস্থিতি যা এখনও Google Play Console-এ সক্রিয় হিসাবে দেখানো হয়। এমনকি যদি এই বান্ডেলগুলি পুরানো হয়ে থাকে, তবে তারা সাম্প্রতিকতম বিল্ডটিকে সঠিকভাবে স্বীকৃত হওয়া থেকে আটকাতে পারে, যার ফলে "অ্যাপকে অবশ্যই Android 14 (API স্তর 34) বা উচ্চতর লক্ষ্য করতে হবে।" targetSdkVersionকে 34-এ পরিবর্তন করার সময়, ডেভেলপারদের অবশ্যই নিশ্চিত করতে হবে যে পূর্ববর্তী সংস্করণগুলি আপডেট প্রক্রিয়াকে ব্যাহত না করে। অ্যাপ সংস্করণ পরিচালনা করা, বিশেষ করে অপ্রচলিত বান্ডিলগুলি বাদ দেওয়া, এই সমস্যাটি সমাধান করতে সাহায্য করতে পারে।
build.gradle ফাইলে টার্গেট এপিআই লেভেল যথাযথভাবে সংজ্ঞায়িত করার পাশাপাশি, সক্রিয় সংস্করণগুলি নিয়মিতভাবে Google Play কনসোলে পর্যালোচনা করা উচিত। ডেভেলপারদের গুগল প্লে ডেভেলপার API-এর মতো টুল ব্যবহার করা উচিত অথবা পুরানো প্যাকেজ ম্যানুয়ালি অক্ষম করা উচিত। এটি নিশ্চিত করে যে Play Store সাম্প্রতিকতম বিল্ড কনফিগারেশনকে সঠিকভাবে প্রতিফলিত করে। যেহেতু Google Play অ্যাপগুলিকে আপডেটের জন্য কঠোর সংস্করণের মানদণ্ড অনুসরণ করতে হবে, তাই Play Console-এর মধ্যে কোড এবং বান্ডেল উভয়ই নিয়ন্ত্রণ করা একটি মসৃণ রূপান্তরের গ্যারান্টি দেয় এবং অমীমাংসিত API স্তরের সতর্কতাগুলির সম্মুখীন হওয়ার সম্ভাবনা হ্রাস করে৷
ফ্লটার সহ Android 14 API লেভেল 34 টার্গেট করা সম্পর্কে সাধারণ প্রশ্ন।
- targetSdkVersion আপডেট করা সত্ত্বেও কেন API স্তরের সতর্কতা বজায় থাকে?
- Play Console-এ এখনও আগের অ্যাপ বান্ডিল সক্রিয় হিসাবে মনোনীত থাকলে এটি ঘটতে পারে, যার ফলে বিরোধ দেখা দেয়।
- Google Play Console-এ আমি কীভাবে পুরানো বান্ডিলগুলি অক্ষম করতে পারি?
- পুরানো সংস্করণগুলি নিষ্ক্রিয় করতে Google Play বিকাশকারী API ব্যবহার করুন বা Play Console ইন্টারফেস ব্যবহার করে ম্যানুয়ালি করুন৷
- ফ্লটারে targetSdkVersion এর কাজ কী?
- এটি নতুন Android বৈশিষ্ট্যগুলির সাথে সামঞ্জস্যতা নিশ্চিত করে আপনার প্রোগ্রামটি কোন API স্তরে কাজ করবে তা নির্ধারণ করে।
- compileSdkVersion এবং targetSdkVersion-এর মধ্যে পার্থক্য কী?
- compileSdkVersion সংকলনের সময় ব্যবহৃত SDK সংস্করণ নির্দিষ্ট করে, যেখানে targetSdkVersion আপনার প্রোগ্রামটি রানটাইমে লক্ষ্য করবে এমন সংস্করণ নির্দিষ্ট করে।
- Play Console-এ আমি বর্তমানে সক্রিয় বান্ডেলগুলি কীভাবে দেখতে পারি?
- আপনি সেগুলিকে service.edits().bundles().list() দিয়ে তালিকাভুক্ত করতে পারেন অথবা Play Console-এ সরাসরি দেখতে পারেন।
API টার্গেটিং সমস্যা সমাধানের জন্য মূল উপায়।
আপনার ফ্লাটার অ্যাপটি উপযুক্ত API স্তরকে লক্ষ্য করে তা নিশ্চিত করা প্লে স্টোর সম্মতির জন্য গুরুত্বপূর্ণ। TargetSdkVersion 34-এ আপডেট করার পরে Play Console-এ সক্রিয় অ্যাপ বান্ডেলগুলির একটি বিস্তৃত মূল্যায়ন করা উচিত। পুরানো, বিরোধপূর্ণ সংস্করণগুলি সর্বশেষ বিল্ডটিকে সঠিকভাবে স্বীকৃত হতে বাধা দিতে পারে। Google Play Developer API-এর মতো প্রযুক্তি ব্যবহার করে, বিকাশকারীরা অপ্রচলিত বান্ডেলগুলি নিষ্ক্রিয় করতে পারে, একটি সাধারণ সমস্যা সমাধান করতে পারে এবং সতর্কতা ছাড়াই দ্রুত অ্যাপ বিতরণের নিশ্চয়তা দিতে পারে৷