অ্যান্ড্রয়েড স্টুডিও 0.4 ডুপ্লিকেট ফাইলগুলি এমপিএইচ মেটা-আইএনএফ / লিসেনএসইটি. টেক্সটে অনুলিপি করেছে


115

আমি আমার স্টুডিও ০..7..7 থেকে ০.৪.০ আপডেট করার পরে, আমি আমার প্রকল্পটি সংকলন করতে পারি না। আমি স্ট্যাকওভারফ্লোতে একটি সমাধান পেয়েছি: নকল ফাইলগুলি অনুলিপি করা হয়েছে (অ্যান্ড্রয়েড স্টুডিও 0.4.0)

আমি আমার প্রকল্পটি 0.7 গ্রেডে আপডেট করেছি, তবে আমি জানি না যে আমাকে পরবর্তী স্ট্রিংগুলি কোথায় লাগাতে হবে:

android {

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

আমার লগকাট: লগ

Execution failed for task ':Prog:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
    File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar

PS উবুন্টু 13.04 এ বিকাশ করুন


2
ভিতরে androidবিভাগ
ইউজেন মার্টিনভ

ধন্যবাদ। আমি ব্লক প্যাকেজিংঅ্যাপশনগুলি () কে গ্রেড গ্রেফ কনফাইশন ফাইলে রেখেছি। প্রথমে আমি এই ব্লকটি লাইব্রেরি গ্রেড ফাইলগুলিতে .োকালাম। সমস্ত কাজের পুরোপুরি =)
a.black13

উত্তর:


155

শীর্ষে নির্ভরতা স্থাপন এবং শেষে প্যাকেজঅ্যাপশনগুলি আমার পক্ষে কাজ করেছে।

apply plugin: 'android'. 

এখানে অ্যাপ্লিকেশন ফোল্ডারে আমার সম্পূর্ণ build.gradle is

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/apache-mime4j-0.6.jar')
    compile files('libs/httpmime-4.0.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 10
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.txt'
    }


    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'
    }
}

সম্পাদনা: প্রায় সমস্ত ওএস লাইসেন্সে আপনার প্রকল্পে "লাইসেন্সের একটি অনুলিপি অন্তর্ভুক্ত করার" বাধ্যবাধকতা অন্তর্ভুক্ত থাকে। সুতরাং এর অর্থ হ'ল, আপনাকে প্রকল্পগুলিতে ব্যবহার করা সমস্ত ওএস লাইসেন্সের একটি অনুলিপি আপনাকে অন্তর্ভুক্ত করতে হবে। এগুলিকে গ্রেডে "বাদ দিয়ে" আপনি লাইসেন্সগুলি লঙ্ঘন করেছেন।

তাদের প্রকল্প থেকে বাদ দেওয়া সর্বোত্তম বিকল্প নাও হতে পারে। তথ্যের জন্য আপনাকে আরএস ধন্যবাদ।


2
@ অ্যান্ড্রি আমরা ফাইলগুলি বাদ দেওয়ার কারণটি হ'ল আমরা চাই না যে .txt (এবং অন্যান্য) ফাইলগুলি .apk এ অন্তর্ভুক্ত করা উচিত যা বিল্ড দ্বারা উত্পন্ন হবে।
বিনিয়াম

4
বাদ দেওয়া অ্যান্ড্রয়েড outside outside এর বাইরে স্বীকৃত নয়: /
আনড্রয়েড

4
বাদ দেওয়া অ্যান্ড্রয়েড inside inside এর ভিতরে থাকা উচিত, তবে কেবল এটিই কাজ করে।
পবন পাইতি

2
! এই সমাধানটি সমস্ত ওপেন সোর্স লাইসেন্স লঙ্ঘন করে! আপনি যেমন আপনার প্যাকেজে প্রতিটি লাইব্রেরির মূল লাইসেন্স পাঠ্যকে বাধ্য করতে বাধ্য হন
আরএস

2
ওহে. কোন। আপনার প্রকল্পে "লাইসেন্সের একটি অনুলিপি অন্তর্ভুক্ত করার" বাধ্যবাধকতা প্রায় সমস্ত ওএস লাইসেন্সের অন্তর্ভুক্ত। সুতরাং এর অর্থ হ'ল, আপনাকে প্রকল্পগুলিতে ব্যবহার করা সমস্ত ওএস লাইসেন্সের একটি অনুলিপি আপনাকে অন্তর্ভুক্ত করতে হবে। এগুলিকে গ্রেডে "বাদ দিয়ে" আপনি লাইসেন্সগুলি লঙ্ঘন করেছেন।
আরএস

47

মনোযোগ!! সম্ভাব্য ওপেনসোর্স লাইসেন্স লঙ্ঘন।

উপরের প্রস্তাবিত হিসাবে লাইসেন্স.txt ফাইলগুলি বাদ দিয়ে আপনি কিছু ওপেনসোর্স লাইসেন্স লঙ্ঘন করতে পারেন কারণ এটি আপনার উত্সে যুক্ত হতে সম্মত হওয়া ওপেনসোর্স লাইসেন্সগুলির একটি সাধারণ বিষয়। আপনার ওপেনসোর্স লাইসেন্সগুলি আরও ভাল করে পরীক্ষা করুন।

আপডেট: আরও ভাল সমাধান না হওয়া পর্যন্ত ব্যবহার করুন

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

এটির মতো আপনি কমপক্ষে লাইসেন্সের একটি বাধ্যবাধকতা পূরণ করুন


23

শুধু যোগ কর

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

build.gradle এ


আমাদের এভাবে ওপেনসোর্স লাইসেন্স লঙ্ঘন করা হচ্ছে
আরএস

16

আপনি নিম্নলিখিত কোডটি এতে যুক্ত করে এটি ঠিক করতে পারেন project/app/build.gradle:

android {
    // Fixed build error : Duplicate files copied in APK META-INF/xxx
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }
}

ওহে. এই সমস্যাটি 1.5 বছর আগে ঠিক করা হয়েছিল উত্তরের জন্য ধন্যবাদ
a.black13

:-) আমি আজই এই সমস্যার মুখোমুখি হয়ে এই থ্রেডটি পেয়েছি। এবং আমি তারিখটি লক্ষ্য করি না।
আলফ্রেডহং

আপনি তারিখটি লক্ষ্য করেন নি এবং অন্য সমস্ত উত্তর উপেক্ষা করেছেন।
অবিশ্বাস্য জানুয়ারী

11

বিল্ড.gradle এর নীচে গ্রেডেলের নতুন সংস্করণ অনুসারে আমি একই সমস্যার মুখোমুখি ছিলাম আমার জন্য টেক্সট বিন্যাসে কাজ:

আমার লিবস ফোল্ডারে দুটি জ্যাকসন জার রয়েছে।

android {
         compileSdkVersion 21
         buildToolsVersion "21.1.2"

         defaultConfig {
            applicationId "com.omtlab.myapplication"
            minSdkVersion 14
            targetSdkVersion 21
            versionCode 1
            versionName "1.0"
         }
         buildTypes {
             release {
                 minifyEnabled false
                 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
         }
         packagingOptions {
            exclude 'libs/jackson-core-asl-1.9.13.jar'
            exclude 'libs/jackson-mapper-asl-1.9.13.jar'
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
         }
}

dependencies {
    //compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/jackson-core-asl-1.9.13.jar')
    compile files('libs/jackson-mapper-asl-1.9.13.jar')
}

ধন্যবাদ! আমি আজ ~ 5 ঘন্টা এটির বিরুদ্ধে মাথা ঘুরাচ্ছি। :) এটি packagingOptions { exclude 'libs/jackson...' }এটি স্থির করে দিয়েছে।
সিজেব্রু

8

যোগ করার পদ্ধতি:

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

আমার পক্ষে কাজ করেছে, বিনিয়াম_ ইথিওপিয়া সমাধান সম্ভবত সবচেয়ে ব্যর্থ-নিরাপদ


8

এই কোডটি সন্নিবেশ করার সময়

android{

packagingOptions{
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
 }
}

নিশ্চিত করুন তাহলে এরর এটা দেখানো হয়

> ডুপ্লিকেট ফাইলগুলি এমপিএইচ মাইটা -আইএনএফ / লিসেনএসইটি. টেক্সটে অনুলিপি করা হয়েছে

তারপর যোগ

 android{

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

}

তাহলে এরর এটা দেখানো হয়

> এমপিএইচ মেটা-ইনফ / লিসেন্সে অনুলিপি করা ফাইলগুলি

তারপর যোগ

 android{

packagingOptions{
    exclude 'META-INF/LICENSE'
 }

}

তাহলে এরর এটা দেখানো হয়

> এমপিএইচ মেটা-আইএনএফ / লাইসেন্স. txt এ অনুলিপি করা ফাইলগুলি অনুলিপি করা হয়েছে

তারপর যোগ

 android{

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

}

সংক্ষিপ্ত পাঠ্যে CASE এবং দস্তাবেজ ফর্ম্যাট (.txt) এত গুরুত্বপূর্ণ।

(এই ত্রুটিটি অ্যান্ড্রয়েড স্টুডিও ১.১.০ এও রয়েছে)


6

এটি আপনাকে সমস্যার সমাধান করতে সহায়তা করবে

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

মূলত যথাযথ উত্তরের মতো হলে কেন এটি এতগুলি ডাউনভোটস?
Necronet

4
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'
}

বিল্ড.gradle ফাইল এবং syn প্রকল্পে যুক্ত করুন


3

আমি কেবল 2 যোগ করেছি:

android{

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

}

এটি কি এখনও অ্যাপ্লিকেশন প্রযোজনায় অন্তর্ভুক্ত করা হবে?
RoCk RoCk

2

আমার অনুরূপ ত্রুটি ছিল এবং এটি packingOptions()এবং excludeফাংশন ছাড়াই সমাধান করেছি । আমি দুটি নির্ভরশীলতা যুক্ত করছি তবে একটি ছিল প্রথমটির উপ-গ্রুপ। এটি ত্রুটির কারণ হয়েছিল, একবার আমি তাদের মধ্যে একটি সরিয়ে ফেললাম আমি একটি পরিষ্কার বিল্ড পেয়েছি। আমি আপনার নির্ভরতা ব্লকের মধ্যে অনুরূপ ত্রুটিটি পরীক্ষা করার পরামর্শ দিচ্ছি।


হাই, আমি এই সমস্যাটি বহুদিন আগে প্যাকিংঅপশন () যুক্ত করে সমাধান করেছি। উত্তরের জন্য ধন্যবাদ) +1
a.black13

এই সমস্যাটি AS এর নতুন উপলব্ধ সংস্করণে ঠিক করা হয়েছে
a.black13

2

ব্যবহার করার সময় java-jwtএবং jackson-coreএকসাথে নিম্নলিখিত ব্যবহার করুন:

exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")

2

এটি খুব ভাল অভ্যাস হতে পারে, তবে আপনি যদি একাধিক বৃহত গ্রন্থাগারকে অন্তর্ভুক্ত করেন তবে আপনি নিজেকে শত শত ধরণের দ্বন্দ্বের মধ্যে দিয়ে কাজ করতে পারেন।

এই জাতীয় ক্ষেত্রে নীচে তালিকাভুক্ত করা একটি অতি-সহজ সমাধান:

android { 
    ....
    packagingOptions {
        // Allow the compilation process to choose the dependencies for us.
        pickFirst "**"
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.