android - CompileSdkVersion এবং targetSdkVersion মধ্যে পার্থক্য কি?
android-gradle android-build (6)
compileSdkVersion
compileSdkVersion
API এর সংস্করণ যা অ্যাপটি সংকলিত হয়। এর মানে আপনি এপিআই এর সংস্করণে অন্তর্ভুক্ত অ্যান্ড্রয়েড এপিআই বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন (পাশাপাশি সমস্ত আগের সংস্করণগুলি, অবশ্যই)। যদি আপনি API 16 বৈশিষ্ট্যগুলি চেষ্টা করে এবং ব্যবহার করেন তবে সংকলন compileSdkVersion
15 সেট করুন, আপনি একটি সংকলন ত্রুটি পাবেন। যদি আপনি 16 এ compileSdkVersion
সেট করেন তবে আপনি এখনও API এ ডিভাইসটি চালাতে পারবেন যতক্ষন না আপনার অ্যাপ্লিকেশানের নির্বাহ পথগুলি API 16 তে নির্দিষ্ট কোনও API টি চালু করার চেষ্টা করে না।
targetSdkVersion
targetSdkVersion
আপনার অ্যাপ্লিকেশনটি কিভাবে সংকলিত হয় বা কোন API গুলি ব্যবহার করতে পারে targetSdkVersion
সম্পর্কে কিছুই করার নেই। targetSdkVersion
আপনি নির্দিষ্ট সংস্করণ (সম্ভবত আপ এবং সহ) আপনার অ্যাপ পরীক্ষা করেছেন নির্দেশ করে অনুমিত অনুমিত হয়। এটি এমন একটি শংসাপত্রের মতই বা সাইন অফ যা আপনি Android OS কে OS বৈশিষ্ট্যগুলির ক্ষেত্রে আপনার অ্যাপ্লিকেশনটি কীভাবে পরিচালনা করতে হবে তা ইঙ্গিত করে।
উদাহরণস্বরূপ, ডকুমেন্টেশন হিসাবে বর্ণনা করে:
উদাহরণস্বরূপ, এই মানটি "11" বা তার উপরে স্থাপন করার জন্য Android 3.0 বা উচ্চতর চলাকালীন আপনার অ্যাপ্লিকেশানে একটি নতুন ডিফল্ট থিম (হলো) প্রয়োগ করার অনুমতি দেয় ...
রানটাইম এ Android OS, এই মানটির উপর ভিত্তি করে OS এর প্রসঙ্গে আপনার অ্যাপ্লিকেশনটি কীভাবে সজ্জিত করা হয় বা অন্যথায় কার্যকর করা যেতে পারে। কিছু অন্যান্য পরিচিত উদাহরণ রয়েছে যা এই মান দ্বারা প্রভাবিত হয় এবং সেই তালিকাটি কেবলমাত্র সময়ের সাথে বাড়তে পারে।
সমস্ত বাস্তব উদ্দেশ্যে, বেশিরভাগ অ্যাপ্লিকেশনগুলি targetSdkVersion
এর সর্বশেষ সংস্করণে targetSdkVersion
সেট করতে চায়। এটি আপনার অ্যাপটিকে সাম্প্রতিকতম Android ডিভাইসগুলিতে যতটা সম্ভব ভাল দেখায় তা নিশ্চিত করবে। আপনি যদি targetSdkVersion
নির্দিষ্ট না করেন তবে এটি targetSdkVersion
ডিফল্ট হয়।
আমি গ্র্যাডেলের সাথে বিল্ডিংয়ের জন্য documentation দেখেছি, তবে এখনও আমি নিশ্চিত নই যে compileSdkVersion
এবং targetSdkVersion
মধ্যে পার্থক্য কী।
এটি সব বলে:
compileSdkVersion
সম্পত্তি সংকলন টার্গেট নির্দিষ্ট করে।
আচ্ছা, "সংকলন লক্ষ্য" কী?
আমি এই ব্যাখ্যা করার দুটি সম্ভাব্য উপায় দেখুন:
-
compileSdkVersion
অ্যাপ্লিকেশনটি নির্মাণে ব্যবহৃত কম্পাইলারের সংস্করণ, যখন লক্ষ্যtargetSdkVersion
"API লেভেল যা অ্যাপ্লিকেশন লক্ষ্য করে" । (যদি এই ক্ষেত্রে হয়, আমি অনুমান করবcompileSdkVersion
চেয়ে বড় বা সমান হবে? - তারা একই জিনিস মানে। "সংকলন লক্ষ্য" == "API লেভেল যা অ্যাপ্লিকেশন লক্ষ্য করে"
- অন্যকিছু?
আমি দেখেছি এই প্রশ্নটি আগে জিজ্ঞাসা করা হয়েছে, কিন্তু একটি উত্তর শুধু ডক উদ্ধৃত করে, যা আমার কাছে অস্পষ্ট।
আমি আগের উত্তরগুলিতে compiledSdkVersion
সম্পর্কে অনেকগুলি পার্থক্য দেখতে পাচ্ছি, তাই আমি Android এর ওয়েবপৃষ্ঠা অনুসরণ করে এখানে কিছুটা স্পষ্ট করার চেষ্টা করব।
এ - অ্যান্ড্রয়েড কি বলে
ref মতে:
একটি প্ল্যাটফর্ম সংস্করণ এবং API লেভেল নির্বাচন করার সময় আপনি যখন আপনার অ্যাপ্লিকেশনটি বিকাশ করছেন, তখন আপনাকে প্ল্যাটফর্ম সংস্করণ নির্বাচন করতে হবে যার বিরুদ্ধে আপনি আবেদনটি সংকলন করবেন। সাধারণত, আপনার প্ল্যাটফর্মের সর্বনিম্ন সম্ভাব্য সংস্করণটির বিরুদ্ধে আপনার অ্যাপ্লিকেশনটি কম্পাইল করা উচিত যা আপনার অ্যাপ্লিকেশন সমর্থন করতে পারে।
সুতরাং, অ্যান্ড্রয়েড অনুসারে এটি সঠিক আদেশ হবে:
compiledSdkVersion = minSdkVersion <= targetSdkVersion
বি - অন্যদের কি বলে
কিছু মানুষ সর্বদা সর্বোচ্চ সংকলিত SkdVersion ব্যবহার করতে পছন্দ করে। এটি minCdkVersion এর চেয়ে নতুন API বৈশিষ্ট্যগুলি ব্যবহার করে কিনা তা পরীক্ষা করার জন্য কোড নির্দেশগুলিতে নির্ভর করবে, এইভাবে কোডটি তাদের ব্যবহার না করার জন্য বা ব্যবহারকারীর API সংস্করণটি রানটাইমতে পুরনো API সংস্করণগুলির জন্য ফাল্যাকবগুলির সাথে ব্যবহার করার জন্য নিয়মিতভাবে তাদের ব্যবহার করার জন্য পরিবর্তন করছে।
অব্যবহৃত ব্যবহার সম্পর্কে ইঙ্গিতও কোডে উপস্থিত হবে, আপনাকে জানাতে হবে যে নতুন API স্তরের মধ্যে কিছু বঞ্চিত করা হয়েছে, তাই আপনি যদি চান তবে প্রতিক্রিয়া জানাতে পারেন।
সুতরাং, অন্যের মতে এটি সঠিক আদেশ হবে:
minSdkVersion <= targetSdkVersion <= compiledSdkVersion (highest possible)
কি করো?
এটা আপনার এবং আপনার অ্যাপ্লিকেশন উপর নির্ভর করে।
আপনি রানটাইম ব্যবহারকারীর API স্তরের অনুযায়ী বিভিন্ন API বৈশিষ্ট্যগুলি অফার করার পরিকল্পনা করেন তবে বিকল্প বি ব্যবহার করুন। কোডিংয়ের সময় আপনি যে বৈশিষ্ট্যগুলি ব্যবহার করেন সেগুলি সম্পর্কে আপনার ইঙ্গিত পাবেন। মিনিট ডিভিশনের চেয়ে রানারটাইম এ ইউপিআই লেভেল যাচাই না করে নতুন এপিআই ফিচারগুলি ব্যবহার করবেন না তা নিশ্চিত করুন, অন্যথায় আপনার অ্যাপ ক্র্যাশ করবে। কোডিংয়ের সময় কি নতুন এবং কী পুরানো তা শিখতে এই পদ্ধতির সুবিধা রয়েছে।
যদি আপনি ইতিমধ্যেই নতুন বা পুরানো জানেন এবং আপনি এক-এক সময় অ্যাপ্লিকেশনটি ডেভেলপ করছেন যা নিশ্চিতভাবে আপডেট করা হবে না বা আপনি নিশ্চিত হন যে আপনি নতুন API বৈশিষ্ট্য শর্তসাপেক্ষে অফার করতে যাচ্ছেন না তবে বিকল্প A ব্যবহার করুন। আপনি বিরক্ত হবেন না অপ্রচলিত ইঙ্গিত সহ এবং আপনি যদি এটি করার জন্য প্রলুব্ধ হন তবে এমনকি আপনি নতুন API বৈশিষ্ট্যগুলি ব্যবহার করতে পারবেন না।
খেলার শেষ হয়ে গেছে .. এবং এর উপরে অনেকগুলি দুর্দান্ত উত্তর আছে - মূলত, যে compileSdkVersion
API এর সংস্করণ যা অ্যাপটি সংকলিত হয় তার সংস্করণে, যখন targetSdkVersion
অ্যাপটিকে পরীক্ষা করে এমন সংস্করণটি নির্দেশ করে।
আমি নিম্নলিখিত নোট দিয়ে সেই উত্তরগুলিকে সম্পূরক করতে চাই:
যে লক্ষ্য
targetSdkVersion
অনুমতি অনুরোধ করা হয় উপায় প্রভাবিত করে :- ডিভাইসটি Android 6.0 (API লেভেল 23) বা
targetSdkVersion
চলছে এবং অ্যাপ্লিকেশানেরtargetSdkVersion
23 বা তার বেশি হয়, অ্যাপ্লিকেশান রান-টাইম ব্যবহারকারীর কাছ থেকে অনুমতিগুলির অনুরোধ করে। - ডিভাইসটি Android 5.1 (API লেভেল ২২) বা
targetSdkVersion
চলছে, অথবা অ্যাপ্লিকেশানেরtargetSdkVersion
22targetSdkVersion
বা তার চেয়ে কম, তাহলে ব্যবহারকারী অ্যাপ্লিকেশানটি ইনস্টল করার সময় ব্যবহারকারীকে অনুমতি দেওয়ার অনুমতি দেয়।
- ডিভাইসটি Android 6.0 (API লেভেল 23) বা
যদি আপনার অ্যাপ্লিকেশনটির লক্ষ্য
targetSdkVersion
দ্বারা ঘোষিত সংস্করণটির চেয়েcompileSdkVersion
বেশি হয়, তবে আপনার অ্যাপ্লিকেশনটি আপনার প্রত্যাশা অনুযায়ী কাজ চালিয়ে যাওয়ার জন্য সিস্টেমটি উপযুক্ততা আচরণ সক্ষম করতে পারে। ( ref )প্রতিটি নতুন অ্যান্ড্রয়েড রিলিজের সাথে ...
-
targetSdkVersion
সর্বশেষ API স্তরের সাথে মিলিয়ে বৃদ্ধি করা উচিত, তারপরে সংশ্লিষ্ট প্ল্যাটফর্ম সংস্করণে আপনার অ্যাপ্লিকেশনটি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন -
compileSdkVersion
, নতুন প্ল্যাটফর্ম সংস্করণে এক্সক্লুসিভ বৈশিষ্ট্যগুলি যোগ না করা পর্যন্ত এটি পরিবর্তন করতে হবে না। - ফলস্বরূপ, যখন
targetSdkVersion
প্রায়ই (প্রাথমিকভাবে)compileSdkVersion
চেয়ে কম হয়, তবেtargetSdkVersion > compileSdkVersion
সাথে একটি ভাল-রক্ষণাবেক্ষণ /targetSdkVersion > compileSdkVersion
অ্যাপ্লিকেশন দেখতে অস্বাভাবিক নয়।
-
The CompileSdkVersion
আপনার অ্যাপ্লিকেশনটি সংকলনের জন্য কাজ করে এমন SDK প্ল্যাটফর্মের সংস্করণ, ইত্যাদি। ডেভেলপমেন্ট প্রক্রিয়া চলাকালীন (আপনাকে সর্বদা সর্বশেষটি ব্যবহার করতে হবে) এটি যে API সংস্করণটি ব্যবহার করছেন তার সাথে প্রেরিত
আপনি আপনার build.gradle
ফাইলে এটি দেখতে পাবেন:
targetSdkVersion:
অ্যাপ targetSdkVersion:
উন্নয়ন প্রক্রিয়ার পরে আপনার অ্যাপ জাহাজগুলি রয়েছে যা TARGET the SPECIFIED version of the Android platform
করার অনুমতি দেয়। আপনার অ্যাপ্লিকেশনটির কার্যকারিতা অনুসারে, এটি বর্তমানের চেয়ে কম API সংস্করণগুলিকে লক্ষ্য করতে পারে। উদাহরণস্বরূপ, বর্তমান সংস্করণটি 23 থাকলেও আপনি এপিআই 18 লক্ষ্য করতে পারেন।
এই সরকারী গুগল পৃষ্ঠায় একটি ভাল চেহারা নিন।
compileSdkVersion
নতুন স্থিতিশীল সংস্করণ হওয়া উচিত। targetSdkVersion
সম্পূর্ণরূপে পরীক্ষা করা উচিত এবং compileSdkVersion
কম বা সমান।