অ্যান্ড্রয়েড স্টুডিও: কেন AndroidSanLive.xml এবং build.gradle উভয়ই minSdkVersion এবং লক্ষ্যSdkVersion নির্দিষ্ট করা হয়?


103

আমি মাত্র অ্যান্ড্রয়েড স্টুডিও সম্পর্কে অদ্ভুত কিছু আবিষ্কার করেছি: এটির build.gradleফাইলে কিছু কনফিগারেশন বিকল্প রয়েছে যা ফাইলটিতে নির্দিষ্ট করে দেওয়া বিষয়গুলিকে ওভাররাইড করে AndroidManifest.xml

উদাহরণস্বরূপ, আমার মধ্যে নিম্নলিখিত লাইনগুলি ছিল build.gradle:

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 10
    }
...
}

যা এতে সম্পর্কিত ট্যাগকে ওভাররাইড করে ছিল AndroidManifest.xml:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="8"/>

আমি দুটি ভিন্ন ফাইলে একই সেটিংস ছড়িয়ে দিতে পছন্দ করি না, তাই আমি ভাবছি যে আমি এটিকে নিরাপদে সরিয়ে ফেলতে পারি build.gradleবা AndroidManifest.xmlকোথা থেকে এটি আরও বোধগম্য হয়।

উত্তর:


111

গ্রেডেল ম্যানিফেস্ট মানগুলিকে ওভাররাইড করে এবং আমি build.gradleম্যানিফেস্টের চেয়ে ফাইল আপডেট করতে পছন্দ করি । সম্ভবত এটি গ্র্যাডল ব্যবহারের সঠিক উপায়। গ্রেডল এমন পণ্যের স্বাদগুলিকে সমর্থন করে যা কোনও আইডিই এর মাধ্যমে নিয়ন্ত্রণ করা যায় এবং সেই পণ্যগুলির স্বাদগুলি আমাদের ম্যানিফেস্টে প্যাকেজের নাম, সংস্করণ কোড, সংস্করণের নাম, লক্ষ্য এসডিকে এবং অন্যান্য অনেকগুলি পরিবর্তন করতে পারে। তারপরে অ্যান্ড্রয়েড স্টুডিওতে এক ক্লিকে আপনি অনেকগুলি বৈশিষ্ট্য পরিবর্তন করতে পারেন এবং অন্য একটি apk তৈরি করতে পারেন।

আপনি ম্যানিফেস্টটি যেমন আছে তেমন ছেড়ে যেতে পারেন এবং সমস্ত কনফিগারেশন এ করতে পারেন build.gradle। আপনি নিরাপদে অপসারণ করতে পারেন

<uses-sdk></uses-sdk>

ম্যানিফেস্ট থেকে পাশাপাশি সংস্করণ কোডগুলি।


3
যে কারও জন্যই ভাবছেন, যদি আপনি এইভাবে নির্মিত একটি APK আনপ্যাক করার জন্য অ্যাপক্টোল ব্যবহার করেন, আপনি আসলে অ্যান্ড্রয়েড ম্যানিফেস্টে minSdkVersion দেখতে পাবেন না। আমি জানি না কোথায় যায়, তবে এটি সঠিক জিনিসটি করে (আমি গুগল প্লেতে আপলোড করে নিশ্চিত করেছি)!
ড্যান জে

6
স্ট্রেঞ্জ। দেখে মনে হচ্ছে গুগল মিনিসডিকে সিদ্ধান্ত নিয়েছে আমাদের অ্যাপটি কোন এপিআই কল করে। গুগল প্লেতে মিনএসডিকে = অ্যান্ড্রয়েড 1.6 এ বলা হয়েছে, তবে আমার অ্যাপ্লিকেশন / বিল্ড.gradle মিনিএসডিকে অ্যান্ড্রয়েড 2.2 হতে নির্দিষ্ট করে। এবং হ্যাঁ, পচনযুক্ত অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে কোনও মিনিএসডিকে তথ্য নেই। আমি মনে করি এটি একটি সমস্যা, কারণ এটি আমাদের "অ্যান্ড্রয়েড 1.6 ডিভাইসগুলি সমর্থন করতে" বাধ্য করে।
সানচো 21

1
এখানে সাইডবার: বিকাশকারী.অ্যান্ড্রয়েড / গাইড / টপিক্স / ম্যানিফেস্ট / sugges পরামর্শ দেয় যে প্লে এখনও কোনওভাবে ম্যানিফেস্টটি ব্যবহার করে। সম্ভবত এটি এপিডিকে তৈরির পূর্বে গ্রেডের মাধ্যমে পর্দার অন্তর্ভুক্ত করা হয়েছে?
jordanpg

4
এটি কীভাবে কাজ করে তা। গ্রেডেল সংকলনের সময় প্রকাশের জন্য নিখোঁজ তথ্য সন্নিবেশ করবে।
mar3kk

5
@ sancho21 এটি আলফা এবং বিটা পরীক্ষার সময় গুগল প্লে স্টোরের সাথে একটি পরিচিত বাগ। আপনি যখন অগ্রসর হবেন তখন এটি সমাধান করা উচিত। কোনও প্রামাণিক উত্স নয়, তবে
উত্তরগুলি

0

অ্যান্ড্রয়েড ডক্স থেকে:

দ্রষ্টব্য: যদি আপনার অ্যাপ্লিকেশন সংস্করণটিকে উপাদানটিতে সরাসরি সংজ্ঞায়িত করে, গ্রেডল বিল্ড ফাইলের সংস্করণ মানগুলি ম্যানিফেস্টে সেটিংসকে ওভাররাইড করে। অতিরিক্তভাবে, গ্রেডল বিল্ড ফাইলগুলিতে এই সেটিংগুলি সংজ্ঞায়িত করা আপনাকে আপনার অ্যাপ্লিকেশনের বিভিন্ন সংস্করণের জন্য বিভিন্ন মান নির্দিষ্ট করার অনুমতি দেয়। বৃহত্তর নমনীয়তার জন্য এবং ম্যানিফেস্টটি মার্জ হওয়ার পরে সম্ভাব্য ওভাররাইটিং এড়ানোর জন্য আপনাকে উপাদান থেকে এই বৈশিষ্ট্যগুলি সরিয়ে ফেলা উচিত এবং পরিবর্তে গ্রেডল বিল্ড ফাইলগুলিতে আপনার সংস্করণ সেটিংস সংজ্ঞায়িত করতে হবে।

https://developer.android.com/studio/publish/versioning.html#appversioning


আমি মনে করি যে অংশটি সম্পর্কে কথা ছিল versionCode । আপনি Specify API level requirementsবিভাগে পরবর্তী একটি উদ্ধৃত করা উচিত ছিল
দীর্ঘ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.