উত্তর:
এই উত্তরটি অ্যান্ড্রয়েডের অফিশিয়াল ডকুমেন্টেশনের উপর (বিশেষভাবে উদ্ধৃত অংশগুলি) খুব বেশি নির্ভর করে ।
ইউনিটি প্রকল্পের জন্য মাল্টিডেক্স সহায়তা কীভাবে সেটআপ করবেন
মাল্টিডেক্স কী:
অ্যান্ড্রয়েড অ্যাপ্লিকেশন (APK) ফাইলগুলিতে ডালভিক এক্সিকিউটেবল (ডিএক্স) ফাইল আকারে এক্সিকিউটেবল বাইটকোড ফাইল থাকে যা আপনার অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত সংকলিত কোড ধারণ করে। ডালভিক এক্সিকিউটেবল স্পেসিফিকেশন আপনার নিজের কোডে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক পদ্ধতি, গ্রন্থাগার পদ্ধতি এবং পদ্ধতি সহ একক ডিএক্স ফাইলের মধ্যে উল্লেখ করা যায় এমন মোট পদ্ধতির সংখ্যা সীমাবদ্ধ করে। এই সীমাটি পেরিয়ে যাওয়ার জন্য আপনাকে একাধিক ডেক্স ফাইল তৈরি করতে আপনার অ্যাপ বিল্ড প্রক্রিয়াটি কনফিগার করতে হবে, এটি মাল্টি ডেক্স কনফিগারেশন হিসাবে পরিচিত।
যখন আমরা মাল্টিডেক্স ব্যবহার করি:
যখন আমরা একক ডিএক্স ফাইলের মধ্যে methods৫,৫36।-তে রেফারেন্স করা যায় এমন মোট পদ্ধতির সংখ্যা অতিক্রম করি- আপনার নিজের কোডে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক পদ্ধতি, গ্রন্থাগার পদ্ধতি এবং পদ্ধতি সহ।
64K সীমা এড়িয়ে চলুন
আপনার অ্যাপ্লিকেশনটি K৪ কে বা আরও পদ্ধতির রেফারেন্সগুলি সক্ষম করার জন্য কনফিগার করার আগে আপনার অ্যাপ কোড বা অন্তর্ভুক্ত লাইব্রেরি দ্বারা সংজ্ঞায়িত পদ্ধতি সহ আপনার অ্যাপ কোড দ্বারা ডাকা রেফারেন্সের মোট সংখ্যা হ্রাস করার পদক্ষেপ নেওয়া উচিত। নিম্নলিখিত কৌশলগুলি আপনাকে ডেক্স রেফারেন্স সীমাটি আঘাত এড়াতে সহায়তা করতে পারে:
আপনার অ্যাপ্লিকেশনটির প্রত্যক্ষ এবং ট্রানজিটিভ নির্ভরতা পর্যালোচনা করুন - আপনার অ্যাপটিতে অন্তর্ভুক্ত থাকা কোনও বৃহত গ্রন্থাগার নির্ভরতা এমনভাবে ব্যবহার করা হবে যাতে অ্যাপটিতে কোড যুক্ত হওয়ার পরিমাণের পরিমাণ ছাড়িয়ে যায়। একটি সাধারণ অ্যান্টি-প্যাটার্ন হ'ল খুব বড় লাইব্রেরি অন্তর্ভুক্ত করা হয় কারণ কয়েকটি ইউটিলিটি পদ্ধতি কার্যকর ছিল। আপনার অ্যাপের কোড নির্ভরতা হ্রাস করা আপনাকে প্রায়শই ডেক্স রেফারেন্স সীমা এড়াতে সহায়তা করতে পারে।
প্রোগুয়ার্ড সহ অব্যবহৃত কোড সরান - আপনার রিলিজ বিল্ডগুলির জন্য প্রোগুয়ার্ড চালাতে কোড সঙ্কোচন সক্ষম করুন । সঙ্কুচিত সক্ষম করা নিশ্চিত করে যে আপনি আপনার APK সহ অব্যবহৃত কোড শিপিং করছেন না।
এই আনুষ্ঠানিক টিপসগুলি বাদ দিয়ে, আপনার ইউনিটি প্রকল্প তৈরি করার সময়, এই পদক্ষেপগুলি অনুসরণ করা আপনাকে আরও সহায়তা করবে:
আপনার অ্যান্ড্রয়েড প্রকল্পটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করুন।
মাল্টি ডেক্স কনফিগারেশন ব্যবহার করতে আপনার অ্যাপ্লিকেশন প্রকল্প সেট আপ করতে আপনার নিম্নলিখিত পরিবর্তনগুলি করা দরকার।
যদি আপনার minSdkVersion 21 বা ততোধিকতে সেট করা থাকে তবে আপনাকে যা করতে হবে তা এখানে আপনার মডিউল-স্তরের বিল্ড.gradle ফাইলটিতে সেট
multiDexEnabled
করাtrue
আছে:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
তবে, যদি আপনার
minSdkVersion
20 বা তার চেয়ে কম সেট করা থাকে তবে আপনাকে অবশ্যই নিম্নলিখিত হিসাবে মাল্টিডেক্স সমর্থন লাইব্রেরিটি ব্যবহার করতে হবে:3.1। মাল্টিডেক্স সক্ষম করতে মডিউল-স্তরের বিল্ড.gradle ফাইলটি সংশোধন করুন এবং মাল্টিডেক্স লাইব্রেরিটিকে নির্ভরতা হিসাবে যুক্ত করুন, এখানে দেখানো হয়েছে:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2। আপনি অ্যাপ্লিকেশন শ্রেণিকে ওভাররাইড করে কিনা তার উপর নির্ভর করে নিম্নলিখিতগুলির একটি সম্পাদন করুন:
- আপনি যদি
Application
ক্লাসটি ওভাররাইড না করেandroid:name
থাকেন তবে<application>
নিম্নলিখিত হিসাবে ট্যাগে সেট করতে আপনার ম্যানিফেস্ট ফাইলটি সম্পাদনা করুন :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
- আপনি
Application
যদি ক্লাসটিকে ওভাররাইড করে থাকেন তবে নীচে মাল্টিডেক্সএক্সপ্লিকেশন (সম্ভব হলে) প্রসারিত করতে এটি পরিবর্তন করুন:
public class MyApplication extends MultiDexApplication { ... }
- অথবা আপনি যদি অ্যাপ্লিকেশন শ্রেণিকে ওভাররাইড করে থাকেন তবে বেস শ্রেণীর পরিবর্তন করা সম্ভব না হয় তবে আপনি পরিবর্তে সংযুক্তিবেসকন্টেক্সট () পদ্ধতিটি ওভাররাইড করতে পারেন এবং মাল্টিডেক্স সক্ষম করতে মাল্টিডেক্স.ইন.স্টল (এটি) কল করতে পারেন:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
অন্য প্লাগইনগুলি ম্যানিফেস্ট হিসাবে ত্রুটিটি পরীক্ষা করুন এবং প্রকল্পটি পরিষ্কার করুন nd এবং আবার সিসিসি।
আপনার প্রকল্পে যদি কোনও নির্ভরতার সমস্যা থাকে তবে অ্যান্ড্রয়েড টার্মিনালে এই কমান্ডটি চালান
% Gradle clean App."App name"
নির্ভরতাগুলির অধীনে আপনার অ্যাপ্লিকেশন গ্রেডলে এই নির্ভরতা অনুলিপি করুন:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
আপনার প্রধান প্রকল্পগুলি গ্রেডলে সাইন ইনকনফিগ যুক্ত করুন।
অথবা স্বাক্ষর করে সাইনিং মোডটি ডিবাগ মোডে সেট করুন, ফাইলটিতে যান -> প্রকল্পের কাঠামো -> মডিউলগুলির অধীনে আপনার প্রকল্পে ক্লিক করুন এবং বিল্ড প্রকারের অধীনে ডিবাগ নির্বাচন করুন -> সাইন ইন কনফিগারেশন> ডিবাগ নির্বাচন করুন
এখন আপনার গ্রেডল সিঙ্ক করুন এবং প্রকল্পটি তৈরি করুন।
আমি আপনাকে এই লিঙ্কটি দিয়ে যাওয়ার পরামর্শ দিচ্ছি যা আপনাকে unityক্যের মাধ্যমে সরাসরি মাল্টিডেক্স সক্ষম গেমস তৈরি করতে সহায়তা করবে।
https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809
দ্রষ্টব্য: এটি কেবলমাত্র unityক্যতে মাল্টিডেক্স সক্ষম করবে (এবং মাল্টিডেক্স সমস্যাগুলি সমাধান করা উচিত)। এটি গ্রেড সম্পর্কিত সমস্যাগুলি ঠিক করবে না।