custom - android toolbar教學




在OS獨立路徑'META-INF/LICENSE'中找到多個文件 (12)

使用時會發生這種情況

org.jetbrains.kotlinx:kotlinx協同程序核心:1.2.0

並在下一版本中修復

org.jetbrains.kotlinx:kotlinx協同程序核心:1.2.1

當我構建我的應用程序時,我得到了跟隨錯誤。

錯誤:任務':app:transformResourcesWithMergeJavaResForDebug'的執行失敗。 在OS獨立路徑'META-INF / LICENSE'中找到多個文件

這是我的build.gradle文件

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "cn.sz.cyrus.kotlintest"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        javaCompileOptions{
            annotationProcessorOptions{
                includeCompileClasspath = true
            }
        }
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
 /*       exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'*/
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
    testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
    compile 'com.github.GrenderG:Toasty:1.2.5'
    compile 'com.orhanobut:logger:1.15'

    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.umeng.analytics:analytics:latest.integration'
    compile 'ai.api:libai:1.4.8'
    compile 'ai.api:sdk:[email protected]'
// api.ai SDK dependencies
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'commons-io:commons-io:2.4'
    compile 'com.android.support:multidex:1.0.1'
}

當我將這些代碼添加到我的gradle文件中時。

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

這個錯誤將被解決,但另一個問題將會發生。 像這樣

java.lang.NoClassDefFoundError: com.squareup.leakcanary.internal.HeapAnalyzerService
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.java:145)
at cn.sz.cyrus.wemz.TestApplication.onCreate(TestApplication.kt:32)

誰有想法如何解決這個問題?


嘗試從默認配置中刪除multidex並檢查生成錯誤日誌。 如果該日誌與INotification類有關。 在android {}中使用它

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

這對我有幫助。


基本上當gradle將apk文件放在一起時,它會復制所有編譯依賴項中的內容,它足夠智能,可以看到來自兩個不同jar文件的重複文件。來自兩個不同的jar文件。 這可以是任何文件,如a.txt或META-INF / DEPENDENCIES。 最好使用以下內容排除這些文件,以防文件存在時僅用於提供信息。

android{
    packagingOptions {
       exclude 'META-INF/DEPENDENCIES'
    }
}

或者,如果以防萬一,該文件是類文件這樣的強製文件,它是在兩個相互關聯的jar依賴項之間複製的,最好以更兼容的版本的方式找到這些jar的替代品。


對於我下面的解決方案,你也可以得到幫助,我在應用程序的gradle文件中寫下了一行

  packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }

我將Studio從Java 7更新到Java 8,並且出現了這個問題。 然後我這樣解決了:

android {
    defaultConfig {
    }
    buildTypes {
    }
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
}

我已閱讀與在 Android Studio 收到此消息相關的所有答案:

在OS獨立路徑'META-INF / LICENSE'中找到多個文件

但在這種情況下排除類是不必要的,我們只需要排除 'META-INF/DEPENDENCIES' ,這可以在 /app/build.gradle 完成:

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

}

我有同樣的問題,我試過這個

錯誤:在OS獨立路徑'META-INF / proguard / androidx-annotations.pro'中找到多個文件

解決方案: 要解決此問題,您需要做的就是將其添加到應用程序“build.gradle”中的android {}部分

packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
}

我有同樣的問題,我試過這個

錯誤: 找到多個與OS無關的路徑'META-INF / library_release.kotlin_module'的文件

解:

android {
    packagingOptions {
    exclude 'META-INF/library_release.kotlin_module'
    }
}

https://github.com/WindSekirun/NaraeImagePicker/issues/7

為我工作....


我遇到了同樣的錯誤,我發現它來自 不同的模塊包含來自不同包的相同類

例如,一個使用了androidx包,另一個使用了pre-androidx

我通過使用Android Studio的內置功能將pre-androidx模塊遷移到androidx來解決它: “重構 - >遷移到Androidx ...” 而不排除任何內容。

根據您的情況,您可以檢查模塊之間是否存在任何依賴性不匹配。


我遇到了這個問題,首先是一些本地庫(.so文件),然後是java / kotlin文件。 原來我從源代碼中包含了一個庫,並通過傳遞依賴引用了神器。 檢查依賴關係樹以查看是否存在任何冗餘條目。 使用 ./gradlew :app:dependencies 獲取依賴關係樹。 如果主模塊名稱不同,請將“app”替換為您的模塊名稱。


有類似的消息

錯誤:任務':app:transformResourcesWithMergeJavaResForDebug'的執行失敗。 使用OS獨立路徑'constant-values.html'找到多個文件

要解決它,我必須在Android Studio中啟用包視圖( 1 ),然後瀏覽樹到庫,找到重複項( 2

然後,ctrl + alt + f12(或RMB菜單)( 3 ) - 找到導致問題的庫。 製作導致問題的libs中的文件列表,並將它們寫入 android 部分內的app的build.gradle文件中。 其他選項是處理包含重複文件的庫

packagingOptions {
    exclude 'allclasses-frame.html'
    exclude 'allclasses-noframe.html'
    <..>


這裡的解決方案對我沒有幫助,但 這個鏈接 確實如此。

如果你有一個庫添加一些android .so文件 - libassmidi.solibgnustl_shared.so - 你必須告訴 gradle 在打包時只選一個,否則你會得到衝突。

android {
  packagingOptions {
    pickFirst 'lib/armeabi-v7a/libassmidi.so'
    pickFirst 'lib/x86/libassmidi.so'
  }
}

在使用React Native應用程序作為Android項目中的庫時,我遇到了這個問題。 希望能幫助到你







build.gradle