Ityক্য পদ্ধতি গণনা K৪ কে এর সীমা অতিক্রম করে


20

আমি সবেমাত্র ইউনিটির k৪ কে পদ্ধতির সাথে সম্পর্কিত একটি সমস্যা পেয়েছি তাই আমি আমার প্রকল্পটি তৈরি করতে অক্ষম unable এটি 64k পদ্ধতি গণনার সীমা অতিক্রম করে পদ্ধতি সীমাবদ্ধতা দেখায়। তাহলে কি এখানে কেউ এই সমস্যাটি সমাধান করতে আমাকে সহায়তা করতে পারেন?

উত্তর:


22

এই উত্তরটি অ্যান্ড্রয়েডের অফিশিয়াল ডকুমেন্টেশনের উপর (বিশেষভাবে উদ্ধৃত অংশগুলি) খুব বেশি নির্ভর করে ।


ইউনিটি প্রকল্পের জন্য মাল্টিডেক্স সহায়তা কীভাবে সেটআপ করবেন

মাল্টিডেক্স কী:

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

যখন আমরা মাল্টিডেক্স ব্যবহার করি:

যখন আমরা একক ডিএক্স ফাইলের মধ্যে methods৫,৫36।-তে রেফারেন্স করা যায় এমন মোট পদ্ধতির সংখ্যা অতিক্রম করি- আপনার নিজের কোডে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক পদ্ধতি, গ্রন্থাগার পদ্ধতি এবং পদ্ধতি সহ।

64K সীমা এড়িয়ে চলুন

আপনার অ্যাপ্লিকেশনটি K৪ কে বা আরও পদ্ধতির রেফারেন্সগুলি সক্ষম করার জন্য কনফিগার করার আগে আপনার অ্যাপ কোড বা অন্তর্ভুক্ত লাইব্রেরি দ্বারা সংজ্ঞায়িত পদ্ধতি সহ আপনার অ্যাপ কোড দ্বারা ডাকা রেফারেন্সের মোট সংখ্যা হ্রাস করার পদক্ষেপ নেওয়া উচিত। নিম্নলিখিত কৌশলগুলি আপনাকে ডেক্স রেফারেন্স সীমাটি আঘাত এড়াতে সহায়তা করতে পারে:

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

প্রোগুয়ার্ড সহ অব্যবহৃত কোড সরান - আপনার রিলিজ বিল্ডগুলির জন্য প্রোগুয়ার্ড চালাতে কোড সঙ্কোচন সক্ষম করুন । সঙ্কুচিত সক্ষম করা নিশ্চিত করে যে আপনি আপনার APK সহ অব্যবহৃত কোড শিপিং করছেন না।

এই আনুষ্ঠানিক টিপসগুলি বাদ দিয়ে, আপনার ইউনিটি প্রকল্প তৈরি করার সময়, এই পদক্ষেপগুলি অনুসরণ করা আপনাকে আরও সহায়তা করবে:

  1. আপনার ইউনিটি সম্পাদক থেকে একটি Android প্রকল্প তৈরি করুন। সেট 1

  2. আপনার অ্যান্ড্রয়েড প্রকল্পটি অ্যান্ড্রয়েড স্টুডিওতে আমদানি করুন। ধাপ ২

  3. মাল্টি ডেক্স কনফিগারেশন ব্যবহার করতে আপনার অ্যাপ্লিকেশন প্রকল্প সেট আপ করতে আপনার নিম্নলিখিত পরিবর্তনগুলি করা দরকার।

    যদি আপনার minSdkVersion 21 বা ততোধিকতে সেট করা থাকে তবে আপনাকে যা করতে হবে তা এখানে আপনার মডিউল-স্তরের বিল্ড.gradle ফাইলটিতে সেট multiDexEnabledকরা trueআছে:

    android {
    defaultConfig {
            ...
            minSdkVersion 21 
            targetSdkVersion 26
            multiDexEnabled true
        }
        ...
    }
    

    তবে, যদি আপনার minSdkVersion20 বা তার চেয়ে কম সেট করা থাকে তবে আপনাকে অবশ্যই নিম্নলিখিত হিসাবে মাল্টিডেক্স সমর্থন লাইব্রেরিটি ব্যবহার করতে হবে:

    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);
      }
    }
    
  4. অন্য প্লাগইনগুলি ম্যানিফেস্ট হিসাবে ত্রুটিটি পরীক্ষা করুন এবং প্রকল্পটি পরিষ্কার করুন nd এবং আবার সিসিসি।

  5. আপনার প্রকল্পে যদি কোনও নির্ভরতার সমস্যা থাকে তবে অ্যান্ড্রয়েড টার্মিনালে এই কমান্ডটি চালান

    % Gradle clean App."App name"
  6. নির্ভরতাগুলির অধীনে আপনার অ্যাপ্লিকেশন গ্রেডলে এই নির্ভরতা অনুলিপি করুন:

    compile fileTree(include: ['*.jar'], dir: 'bin')
    compile fileTree(include: ['*.jar'], dir: 'libs')
    
  7. আপনার প্রধান প্রকল্পগুলি গ্রেডলে সাইন ইনকনফিগ যুক্ত করুন।

    পদক্ষেপ 8

    অথবা স্বাক্ষর করে সাইনিং মোডটি ডিবাগ মোডে সেট করুন, ফাইলটিতে যান -> প্রকল্পের কাঠামো -> মডিউলগুলির অধীনে আপনার প্রকল্পে ক্লিক করুন এবং বিল্ড প্রকারের অধীনে ডিবাগ নির্বাচন করুন -> সাইন ইন কনফিগারেশন> ডিবাগ নির্বাচন করুন

    এখানে চিত্র বর্ণনা লিখুন

  8. এখন আপনার গ্রেডল সিঙ্ক করুন এবং প্রকল্পটি তৈরি করুন।


1
আপনার প্রকল্পটি কতটা বড় যে এই ত্রুটির দিকে পরিচালিত করেছে?
ইভোরর

1
প্রকৃতপক্ষে, আমি গুগল অ্যাডমব মধ্যস্থতাটি ব্যবহার করছি তাই এর জন্য 6-7 বিজ্ঞাপন এসডিকে যুক্ত করতে ব্যবহৃত হয় যাতে আমার চূড়ান্ত প্রকল্পগুলির পদ্ধতি গণনা প্রায় 76k।
রাকেশ

0

আমি আপনাকে এই লিঙ্কটি দিয়ে যাওয়ার পরামর্শ দিচ্ছি যা আপনাকে unityক্যের মাধ্যমে সরাসরি মাল্টিডেক্স সক্ষম গেমস তৈরি করতে সহায়তা করবে।

https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809

দ্রষ্টব্য: এটি কেবলমাত্র unityক্যতে মাল্টিডেক্স সক্ষম করবে (এবং মাল্টিডেক্স সমস্যাগুলি সমাধান করা উচিত)। এটি গ্রেড সম্পর্কিত সমস্যাগুলি ঠিক করবে না।


3
এটি বর্তমানে একটি লিঙ্ক-কেবল উত্তর: লিঙ্কটি প্রশ্নের উত্তর দিলেও উত্তর দেয় না। আপনি লিঙ্কযুক্ত সামগ্রীর মূলটি এখানে অন্তর্ভুক্ত করতে চাইতে পারেন (প্রতি লিঙ্কটি খারাপ নয়, কেবলমাত্র লিংকটি খারাপ যা কেবল খারাপ)।
ভায়ল্যানকোর্ট

আমি আপনার সাথে একমত কিন্তু লিখিত পদক্ষেপগুলি অনেক বেশি। এজন্য আমাকে একটি নিবন্ধ তৈরি করতে হবে এবং লিঙ্কটি ভাগ করতে হয়েছিল। আমি সেভাবে পছন্দ করব যাতে আমার একাধিক তৈরি না করে সত্যের একটি উত্স থাকে।
অভিষেক পাটিদার

বুঝতে পারলেও স্ট্যাক এক্সচেঞ্জের সাইটগুলি কীভাবে এটি কাজ করে না: লিঙ্ক-কেবল উত্তরগুলি মুছে ফেলা হয় ¤ আপনি যদি চান তবে আমি এই উত্তরটি প্রশ্নের মন্তব্যে রূপান্তর করতে পারি: আপনি ভবিষ্যতের ব্যবহারকারীদের জন্য আপনার রেফারেন্সটি দৃশ্যমান রাখবেন, এবং আমরা জিতলাম একটি উত্তর আছে শুধুমাত্র উত্তর। (Linkএকটি উত্তরের মূল সমস্যাটি হ'ল আপনি যদি নিজের সাইটটি নীচে নামেন (বা আপনার আইএসপি আপনার সমস্ত ডেটা দিয়ে দেউলিয়া হয়ে যায়), এই উত্তরটি পুরোপুরি মূল্যহীন হবে; এ কারণেই প্রশ্নের উত্তর দেওয়া উচিত))
ভাইল্যানকোর্ট

ধারণা তৈরী কর. আমি আমার উত্তর সম্পূর্ণ নির্দেশাবলীতে রূপান্তর করব।
অভিষেক পাতিদার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.