আমি কীভাবে সমাধান করব "এমপিএ মেটা-আইএনএফ / * এ অনুলিপি করা ফাইলগুলি নকল করুন"


91

আমি একটি বাণিজ্যিক অ্যান্ড্রয়েড অ্যাপ্লিকেশন এ কাজ করছি। আমি বিভিন্ন লাইসেন্স ধরণের লাইসেন্সপ্রাপ্ত কিছু লাইব্রেরিও ব্যবহার করছি যার মধ্যে কয়েকটি নীচে উল্লেখ করে:

যদি গ্রন্থাগারে অ্যাট্রিবিউশন নোট সহ একটি "বিজ্ঞপ্তি" ফাইল থাকে, আপনি বিতরণ করার সময় আপনাকে অবশ্যই এই বিজ্ঞপ্তিটি অন্তর্ভুক্ত করতে হবে

( উদাহরণস্বরূপ এগুলির মধ্যে একটি অ্যাপাচি লাইসেন্স ২.০ এর আওতায় লাইসেন্সযুক্ত )।

একাধিক গ্রন্থাগার রয়েছে। আমি যখন গ্রেড বা অ্যান্ড্রয়েড স্টুডিও দিয়ে বিল্ডটি করি তখন আমি নিম্নলিখিত বিল্ড ত্রুটিটি পাই:

* What went wrong:
Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/license.txt

ইন্টারনেট এবং স্ট্যাকওভারফ্লোতে আমি এখনও অবধি যে উত্তরগুলি পেয়েছি সেগুলি নীচে ফাইল যুক্ত করে প্যাকেজিং থেকে লাইসেন্স.txt (নোট.এসটিএসটি বা অন্যান্য ফাইল যা এর মধ্যে হস্তক্ষেপ করতে পারে) সরিয়ে দেওয়ার পরামর্শ দেয় build.gradle:

packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
}

উদাহরণস্বরূপ দেখুন: অ্যান্ড্রয়েড স্টুডিও 0.4 ডুপ্লিকেট ফাইলগুলি এমপিএটি অনুলিপি করেছে

এই লাইব্রেরির লাইসেন্স অনুসারে ( অ্যাপাচি লাইসেন্স ২.০ উদাহরণস্বরূপ) লাইসেন্স এবং নোটিশ ফাইল অন্তর্ভুক্ত করতে হবে ।

আমার প্রশ্ন: লাইসেন্সগুলির সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য আমি কীভাবে লাইসেন্সের সাথে সম্পর্কিত একাধিক ফাইলগুলি (যেমন লাইসেন্স . txt , নোটিস.টেক্সট ইত্যাদি) গ্রেড থেকে আমার প্রকল্পে যুক্ত করতে পারি ( প্রযুক্তিগত বিবরণ: লাইসেন্সের পাঠ্যগুলি সংযুক্ত করা হবে)?


4
কারিগরি পিওওভি থেকে আপনি কি জিনিসগুলি প্যাকেজ করতে পারবেন না যাতে প্রতিটি লাইব্রেরির সমস্ত "অন্তর্ভুক্ত" ফাইলগুলি তাদের নিজস্ব ডিরেক্টরিতে থাকে? কিছু অ্যাপ্লিকেশানের সাথে আমি যে বিকল্পটি দেখেছি তা হ'ল (ম্যানুয়ালি) সমস্ত সংশ্লিষ্ট লাইসেন্স / নোটিশ ফাইলগুলিকে একটি উত্সের সাথে সংযুক্ত করে এটি অন্তর্ভুক্ত / প্রদর্শন করা (যেখানে দুটি বা আরও বেশি লাইব্রেরি একই লাইসেন্স সংস্করণ ভাগ করে নেয়, আপনি তাদেরকে গ্রুপ করতে সক্ষম হবেন) , "গ্রন্থাগার এ এবং গ্রন্থাগার বি নিম্নলিখিত লাইসেন্সের সাথে অন্তর্ভুক্ত রয়েছে: ...")।
ট্রিপহাউন্ড

@ ট্রাইপহাউন্ড এটি বর্তমানে একটি কার্যকার্য হিসাবে আমি করি, বিকাশের প্রক্রিয়া চলাকালীন আমি এগুলি বাদ দিই এবং যখন প্রকাশের বিষয়টি আসে: সমস্ত 'বাদ' মন্তব্য করে এবং ম্যানুয়ালি লাইসেন্সগুলি সমাধান করি।
23:12

4
উত্তর "প্যাকেজিংঅ্যাপশনগুলি - বাদ দিন" অনুসন্ধানের জন্য একটি উর্ধ্বতন প্রাপ্য
আহমেদ আদেল ইসমাইল

উত্তর:


47

নাম ব্যবহার করে যদি আপনার কেবলমাত্র একটি লাইসেন্স থাকে তবে একটি সমাধান রয়েছে license.txt(পড়ুন: সমস্ত license.txtঅনুলিপি অভিন্ন):

packagingOptions {
   pickFirst  'META-INF/license.txt'
}

অন্যথায়, Google নির্ভরতা লাইসেন্সগুলি পরিচালনা করতে একটি গ্রেডল প্লাগইনও প্রকাশ করেছে। এখানে দেখুন । আমি এটি চেষ্টা করি নি, তবে দেখে মনে হচ্ছে এটি প্রতিটি নির্ভরতা একত্রিত করতে সক্ষম এবং এমনকি এই সমস্ত লাইসেন্স প্রদর্শন করে এমন একটি ক্রিয়াকলাপ তৈরি করতে সক্ষম।


4
আমার এই মুহুর্তে 2 টি লাইসেন্স রয়েছে, একটি অ্যাপাচি 2.0 থেকে অন্যটি জিপিএল 3.0। আমার বর্তমান কাজটি হ'ল বিকাশের পর্যায়ে থাকাকালীন সেগুলি বাদ দেওয়া এবং যখন আমরা প্রকাশ করি তখন ম্যানুয়ালি এগুলি অন্তর্ভুক্ত করা। সমস্ত লাইসেন্স.txt সংযুক্ত করা হবে। বিজ্ঞপ্তি.এসটিএস্টের জন্য একই যাইহোক লাইসেন্সটি অভিন্ন হলে আমি পিক ফার্স্ট সহ আপনার পদ্ধতির পছন্দ করি!
ফুলাবেন

4
আপনি যদি কখনও লাইসেন্সের সাথে স্বয়ংক্রিয়ভাবে কোনও উপায় খুঁজে পান তবে আমি সব কান!
মার্ক প্লানো-লেসে

আমি এখন এটিই তদন্ত করছি। প্রথমে আমার (এবং কীভাবে) দ্বন্দ্ব তৈরি করার গ্রেড টাস্কটি করছে (এবং তার জন্য আমি এই প্রশ্নটি জিজ্ঞাসা করেছি: stackoverflow.com/questions/34287701/… ) এবং তারপরে এটি প্রতিস্থাপন করব
ফুল্লাইন

@ আপনি কীভাবে সমস্ত নোট.টেক্সট ম্যানুয়ালি অন্তর্ভুক্ত করবেন তা কেবল একটি নোটিশ-টেক্সটে এগুলি অনুলিপি করুন? jarফাইলটিতে এটি কোনটি সংশোধন করতে পারে না
চীনানিহচান

আপনি উল্লেখ করেছেন যে বিষয়টি লাইব্রেরিগুলিতে ব্যবহৃত হচ্ছে ... আমার ক্ষেত্রে, আমি যে লাইব্রেরিগুলি ব্যবহার করছি তা তৈরি করার জন্য আমি দায়বদ্ধ..আমি যখন এগুলি তৈরি করছি তখন আমি কী ভুল করতে পারি? ধন্যবাদ
এরিক

32

সংশ্লিষ্ট বিল্ড.gradle ফাইলের মধ্যে নিম্নলিখিত যুক্ত করুন

packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/MANIFEST.MF'
    }

4
এটি এমন লাইসেন্সগুলিকে বাদ দেয় যা তাদের বেশিরভাগের জন্য স্পষ্টভাবে তাদের শর্তগুলির পরিপন্থী।
মার্ক প্লানো-লেসেই


4

আমি আমার আবেদনের সাথে একই সমস্যার মুখোমুখি হয়েছি। আপনাকে নিশ্চিত করতে হবে যে আপনি দুবার কোনও লাইব্রেরি যোগ করেন নি। আপনি যদি ফায়ারবেস ডকুমেন্টেশন https://firebase.google.com/docs/android/setup অনুসরণ করেন

তারপরে আপনার অ্যান্ড্রয়েড স্টুডিওতে ফাইল-> প্রকল্প কাঠামো-> মেঘ-> ফায়ারবেসের ভিতরে ফায়ারবেস লাইব্রেরি যুক্ত করা উচিত নয়

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে ফায়ারবেস ব্যবহার করতে আপনাকে উভয়ের মধ্যে একটি মাত্র করতে হবে।

শেষে আপনার অ্যাপ্লিকেশনটি পরিষ্কার করুন এবং পুনরায় চালু করুন।


4
আপনি যদি জ্যাকসন-ডেটাবাইন্ড ব্যবহার করেন তবে একবার এটি যুক্ত করার পরে আপনি সমস্যাটি পান।
অবিশ্বাস্য জানুয়ারি


0

আমি মনে করি আপনার কেবল বিল্ড.gradle এ এই বিকল্পগুলি অন্তর্ভুক্ত করা দরকার:

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
    }
}

-2

অবশ্যই এটি কাজ করবে

packagingOptions {
 exclude 'META-INF/LICENSE.txt'
 exclude 'META-INF/NOTICE.txt'   }

4
না, এটি করবে না: এটি লাইসেন্সগুলি বাদ দেয়। লাইসেন্সের শর্তাবলী অনুযায়ী এটি অবৈধ।
মার্ক প্লানো-লেসেই

কোনও প্রকল্পের তাত্ক্ষণিক সংকলনের জন্য এটির কোনও টিএমপি সমাধান নেই
মাহেন্দ্রন ক্যান্ডি

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