উত্তর:
সংস্থানসমূহ সহ, এখানে বর্ণিত হিসাবে বিভিন্ন ভাষা, ওএস সংস্করণ, স্ক্রিন ওরিয়েন্টেশন ইত্যাদি বিকল্প সরবরাহ করার জন্য অন্তর্নির্মিত সমর্থন রয়েছে । সম্পদের সাথে এর কোনওটিই উপলভ্য নয়। এছাড়াও, API এর অনেকগুলি অংশ সংস্থান সনাক্তকারীদের ব্যবহারকে সমর্থন করে। শেষ অবধি, সংস্থাগুলির সংস্থাগুলির নামগুলি স্থির ক্ষেত্রের নামগুলিতে রূপান্তরিত হয় যা সংকলনের সময় পরীক্ষা করা হয়, সুতরাং কোড এবং সংস্থানগুলির মধ্যে মেলে না এমন সুযোগের সুযোগ কম। এর কোনওটিই সম্পদে প্রযোজ্য নয়।
সুতরাং কেন একটি এ্যাসেটস ফোল্ডার সব আছে? আপনি রান সময় যে সম্পদটি ব্যবহার করতে চান তা গণনা করতে চাইলে এটি বেশ সহজ। সংস্থানগুলির সাথে, আপনাকে সমস্ত সংস্থানীয় আইডিগুলির একটি তালিকা ঘোষণা করতে হবে যা ব্যবহার করা যেতে পারে এবং তালিকায় একটি সূচক গণনা করতে হবে। (এটি এক ধরণের উদ্ভট এবং ত্রুটির জন্য সুযোগের পরিচয় দেয় যদি উন্নয়নের চক্রের সংস্থাগুলির সেট পরিবর্তিত হয়।) (সম্পাদনা: আপনি নাম ব্যবহার করে একটি সংস্থান আইডি পুনরুদ্ধার করতে পারেন getIdentifier
, তবে এটি সংকলন-সময় যাচাইয়ের সুবিধা হারাতে পারে)) সম্পদগুলি পারে এছাড়াও একটি ফোল্ডার শ্রেণিবিন্যাসে সংগঠিত করা হবে, যা সংস্থানগুলি দ্বারা সমর্থিত নয়। এটি ডেটা পরিচালনার একটি আলাদা উপায়। যদিও সম্পদের বেশিরভাগ ক্ষেত্রেই কভার থাকে তবে সম্পদের মাঝে মাঝে ব্যবহার হয় have
অন্য একটি পার্থক্য: একটি গ্রন্থাগার প্রকল্পে সংজ্ঞায়িত সংস্থানগুলি অ্যাপ্লিকেশন প্রকল্পগুলিতে স্বয়ংক্রিয়ভাবে আমদানি করা হয় যা লাইব্রেরির উপর নির্ভর করে। সম্পদের জন্য, এটি ঘটে না; সম্পদ ফাইলগুলি অবশ্যই অ্যাপ্লিকেশন প্রকল্পের সম্পদ ডিরেক্টরিতে উপস্থিত থাকতে হবে। [সম্পাদনা: অ্যান্ড্রয়েডের নতুন গ্র্যাডল-ভিত্তিক বিল্ড সিস্টেমের সাথে (অ্যান্ড্রয়েড স্টুডিওতে ব্যবহৃত), এটি আর সত্য নয়। লাইব্রেরি প্রকল্পগুলির জন্য সম্পদ ডিরেক্টরিগুলি .aar ফাইলগুলিতে প্যাকেজ করা হয়, সুতরাং গ্রন্থাগার প্রকল্পগুলিতে সংজ্ঞায়িত সম্পদগুলি অ্যাপ্লিকেশন প্রকল্পগুলিতে মিশ্রিত করা হয় (সুতরাং /assets
যদি তারা রেফারেন্সযুক্ত লাইব্রেরিতে থাকে তবে অ্যাপ্লিকেশন ডিরেক্টরিতে উপস্থিত থাকতে হবে না ]])
সম্পাদনা করুন: আপনি যদি নিজের অ্যাপ্লিকেশনটির সাথে একটি কাস্টম ফন্ট প্যাকেজ করতে চান তবে আর একটি পার্থক্য দেখা দেয়। ফাইল সিস্টেমে বা আপনার অ্যাপের ডিরেক্টরিতে থাকা ফন্ট ফাইল থেকে একটি তৈরি করার জন্য এপিআই কল রয়েছে । তবে ডিরেক্টরিতে সঞ্চিত ফন্ট ফাইল (বা ডিরেক্টরিটি ব্যবহারের অনুমতি দেয় এমন একটি থেকে) তৈরি করার জন্য কোনও এপিআই নেই । [ দ্রষ্টব্য: অ্যান্ড্রয়েড ও (আলফা পূর্বরূপে এখন উপলভ্য) এর সাহায্যে আপনি কাস্টম ফন্টগুলি সংস্থান হিসাবে অন্তর্ভুক্ত করতে সক্ষম হবেন। দীর্ঘ-ওভারডু বৈশিষ্ট্যটির এখানে বর্ণনাটি দেখুন । তবে যতক্ষণ না আপনার ন্যূনতম এপিআই স্তরটি 25 বা তার কম হবে, আপনাকে সংস্থান হিসাবে কাস্টম ফন্টগুলির প্যাকেজিং সম্পদ হিসাবে আটকে থাকতে হবে]]Typeface
assets/
Typeface
res/
InputStream
res/
raw/
ডিরেক্টরিতে ফাইলগুলি লেখা কি সম্ভব ?
/res
এবং '/ সম্পদ' ডিরেক্টরিগুলির সমস্ত কিছুই কেবল পঠনযোগ্য, যেহেতু সেগুলি .apk ফাইলে প্যাকেজড রয়েছে।
দু'জনেরই বেশ মিল রয়েছে। দুজনের মধ্যে আসল প্রধান পার্থক্য হ'ল res
ডিরেক্টরিতে প্রতিটি ফাইলকে একটি প্রাক-সংকলন দেওয়া হয় ID
যা সহজেই অ্যাক্সেস করা যায় R.id.[res id]
। এটি দ্রুত এবং সহজেই চিত্রগুলি, শব্দগুলি, আইকনগুলিতে অ্যাক্সেস করতে দরকারী ...
assets
ডিরেক্টরি আরো একটি ফাইল সিস্টেম মত হয় এবং আপনি সেখানে চাই যেকোনো ফাইল করা আরো স্বাধীনতা প্রদান করে। তারপরে আপনি জাভা মাধ্যমে যে কোনও ফাইল সিস্টেমে কোনও ফাইল অ্যাক্সেস করার সময় সেই সিস্টেমের প্রতিটি ফাইল অ্যাক্সেস করতে পারবেন। এই ডিরেক্টরি গেমের বিবরণ, অভিধান, ইত্যাদি ইত্যাদির জন্য ভাল। আশা করি এইটি কাজ করবে.
Assets
ফোল্ডারে রাখতে হবে না, অ্যান্ড্রয়েড সিস্টেমে এখন fonts
ডিরেক্টরি রয়েছে এবং আমরা আমাদের কাস্টম ফন্টগুলি ফাইলটি সেখানে রাখতে পারি বা আমাদের কাছে অ্যান্ড্রয়েড স্টুডিওগুলি এটি ডাউনলোড করতে পারে।
আমি জানি এটি পুরানো, তবে কেবল এটি পরিষ্কার করার জন্য, অফিসিয়াল অ্যান্ড্রয়েড ডকুমেন্টেশনের প্রত্যেকটির একটি ব্যাখ্যা রয়েছে:
http://developer.android.com/tools/projects/index.html থেকে
assets/
এটি খালি। আপনি এটি কাঁচা সম্পদ ফাইলগুলি সঞ্চয় করতে ব্যবহার করতে পারেন। আপনি এখানে যে ফাইলগুলি সংরক্ষণ করেন সেগুলি একটি .apk ফাইলটিকে যেমন রয়েছে তেমনভাবে সংকলন করা হয়েছে এবং মূল ফাইলের নামটি সংরক্ষণ করা হয়েছে। আপনি ইউআরআই ব্যবহার করে একটি সাধারণ ফাইল সিস্টেমের মতো এই ডিরেক্টরিতে নেভিগেট করতে পারেন এবং অ্যাসেটম্যানেজার ব্যবহার করে ফাইলগুলি বাইটের স্ট্রিম হিসাবে পড়তে পারেন। উদাহরণস্বরূপ, এটি টেক্সচার এবং গেম ডেটার জন্য একটি ভাল অবস্থান।
res/raw/
নির্বিচারে কাঁচা সম্পদ ফাইলের জন্য। সম্পদ / ডিরেক্টরি পরিবর্তে সম্পদ ফাইলগুলি এখানে সংরক্ষণ করা কেবলমাত্র আপনি সেগুলিতে অ্যাক্সেস করার ক্ষেত্রেই পৃথক। এই ফাইলগুলি অপ্ট দ্বারা প্রক্রিয়াজাত করা হয় এবং আর শ্রেণিতে কোনও সংস্থান সনাক্তকারী ব্যবহার করে অ্যাপ্লিকেশন থেকে অবশ্যই তা রেফারেন্স করা উচিত। উদাহরণস্বরূপ, এমপি 3 বা ওগ ফাইলের মতো এটি মিডিয়ার পক্ষে ভাল জায়গা।
নিম্নলিখিত কয়েকটি মূল বিষয়:
উপসংহার
আপনার যদি জাভা কোডের কোথাও উল্লেখ করার প্রয়োজন হয় তবে আপনি আপনার ফাইলগুলিকে "রেজো" ডিরেক্টরিতে রেখে দিতে পারেন।
এবং রেজোল্ড ফোল্ডারের সমস্ত ফাইল আর ফাইলে ইনডেক্স করা হবে, যা এগুলি লোড করা আরও দ্রুত (এবং আরও সহজ!) করে তোলে।
টেড হপ এইটির উত্তরটি বেশ সুন্দরভাবে দিয়েছিল। আমি আমার ওপেনগেল টেক্সচার এবং শেডার ফাইলগুলির জন্য রেজ / কাঁচা ব্যবহার করছি। আমি তাদেরকে একটি শ্রেণিবদ্ধ সংস্থা সরবরাহ করার জন্য একটি সম্পত্তির ডিরেক্টরিতে স্থানান্তরিত করার কথা ভাবছিলাম।
এই থ্রেড আমাকে না বোঝায়। প্রথমত, কারণ আমি একটি অনন্য সংস্থান আইডি ব্যবহার করতে পছন্দ করি। দ্বিতীয় কারণ ফাইলটিতে পড়ার জন্য ইনপুটস্ট্রিম / ওপেনরো রিসোর্স বা বিটম্যাপফ্যাক্টরিটি ব্যবহার করা খুব সহজ। তৃতীয় কারণ এটি পোর্টেবল লাইব্রেরিতে ব্যবহার করতে সক্ষম হওয়া খুব দরকারী।
সম্পদগুলি আপনার অ্যাপ্লিকেশনটিতে পাঠ্য, এক্সএমএল, ফন্ট, সঙ্গীত এবং ভিডিওর মতো স্বেচ্ছাসেবী ফাইল অন্তর্ভুক্ত করার একটি উপায় সরবরাহ করে। আপনি যদি এই ফাইলগুলিকে "রিসোর্স" হিসাবে অন্তর্ভুক্ত করার চেষ্টা করেন তবে অ্যান্ড্রয়েড এগুলি তার সংস্থান সিস্টেমে প্রসেস করবে এবং আপনি কাঁচা ডেটা পেতে সক্ষম হবেন না। যদি আপনি কোনও ছাপছাড়া ডেটা অ্যাক্সেস করতে চান, সম্পদগুলি এটি করার এক উপায়।
res/raw
রাখেন তবে আপনি কাঁচা ডেটা ব্যবহার করে তা পেতে পারেন openRawResource(resourceName)
।
res
রিসোর্সের জন্য দাঁড়ায়, তারপরে কীassets
দাঁড়ায় ??