Kotline мультиплатформенный мобильный: имя записи ‘META-INF /androidx.vectordrawable_vectordrawable.version’ столкнулся

#android-studio #kotlin #gradle #kotlin-multiplatform

#android-studio #котлин #gradle #kotlin-мультиплатформенный

Вопрос:

Я новичок в kotlin multiplatform mobile и пробую его. Я получаю эту проблему при создании подписанного apk внутри Android studio 4.0.1 с помощью Build > Generate Signed Bundled / Apk …. Существует ошибка сборки, которая выдает это сообщение

 Entry name 'META-INF/androidx.vectordrawable_vectordrawable.version' collided
  

Я попробовал эти шаги:

  1. Файл > Аннулировать кэш / перезапустить
  2. Сборка> Чистый проект
  3. Сборка > Перестроить проект

Также пытался удалить apk из папки приложения и повторить процесс. Все еще есть эта проблема.

Это результат сборки:

 Executing tasks: [:androidApp:assembleDebug, :androidApp:assembleRelease] in project C:UserslocalpcAndroidStudioProjectsMyApplication


> Configure project :shared
Kotlin Multiplatform Projects are an Alpha feature.

Some Kotlin/Native targets cannot be built on this mingw_x64 machine and are disabled:
    * In project ':shared':
        * targets 'iosArm64', 'iosX64' (can be built with a macos_x64 host)
To hide this message, add 'kotlin.native.ignoreDisabledTargets=true' to the Gradle properties.


> Task :androidApp:preBuild UP-TO-DATE
> Task :androidApp:preDebugBuild UP-TO-DATE
> Task :shared:preBuild UP-TO-DATE
> Task :shared:preDebugBuild UP-TO-DATE
> Task :shared:compileDebugAidl NO-SOURCE
> Task :androidApp:compileDebugAidl NO-SOURCE
> Task :shared:packageDebugRenderscript NO-SOURCE
> Task :androidApp:compileDebugRenderscript NO-SOURCE
> Task :androidApp:generateDebugBuildConfig UP-TO-DATE
> Task :androidApp:generateDebugResValues UP-TO-DATE
> Task :androidApp:generateDebugResources UP-TO-DATE
> Task :shared:compileDebugRenderscript NO-SOURCE
> Task :shared:generateDebugResValues UP-TO-DATE
> Task :shared:generateDebugResources UP-TO-DATE
> Task :shared:packageDebugResources UP-TO-DATE
> Task :androidApp:mergeDebugResources UP-TO-DATE
> Task :androidApp:createDebugCompatibleScreenManifests UP-TO-DATE
> Task :androidApp:extractDeepLinksDebug UP-TO-DATE
> Task :shared:extractDeepLinksDebug UP-TO-DATE
> Task :shared:processDebugManifest UP-TO-DATE
> Task :androidApp:processDebugManifest UP-TO-DATE
> Task :shared:compileDebugLibraryResources UP-TO-DATE
> Task :shared:parseDebugLocalResources UP-TO-DATE
> Task :shared:generateDebugRFile UP-TO-DATE
> Task :androidApp:processDebugResources UP-TO-DATE
> Task :shared:generateDebugBuildConfig UP-TO-DATE
> Task :shared:compileDebugKotlinAndroid UP-TO-DATE
> Task :shared:javaPreCompileDebug UP-TO-DATE
> Task :shared:compileDebugJavaWithJavac UP-TO-DATE
> Task :shared:bundleLibCompileToJarDebug UP-TO-DATE
> Task :androidApp:compileDebugKotlin UP-TO-DATE
> Task :androidApp:javaPreCompileDebug UP-TO-DATE
> Task :androidApp:compileDebugJavaWithJavac UP-TO-DATE
> Task :androidApp:compileDebugSources UP-TO-DATE
> Task :androidApp:mergeDebugShaders UP-TO-DATE
> Task :androidApp:compileDebugShaders NO-SOURCE
> Task :androidApp:generateDebugAssets UP-TO-DATE
> Task :shared:mergeDebugShaders UP-TO-DATE
> Task :shared:compileDebugShaders NO-SOURCE
> Task :shared:generateDebugAssets UP-TO-DATE
> Task :shared:packageDebugAssets UP-TO-DATE
> Task :androidApp:mergeDebugAssets UP-TO-DATE
> Task :androidApp:processDebugJavaRes NO-SOURCE
> Task :shared:processDebugJavaRes NO-SOURCE
> Task :shared:bundleLibResDebug UP-TO-DATE
> Task :androidApp:mergeDebugJavaResource UP-TO-DATE
> Task :androidApp:checkDebugDuplicateClasses UP-TO-DATE
> Task :androidApp:mergeExtDexDebug UP-TO-DATE
> Task :shared:bundleLibRuntimeToJarDebug UP-TO-DATE
> Task :androidApp:dexBuilderDebug UP-TO-DATE
> Task :androidApp:mergeLibDexDebug UP-TO-DATE
> Task :androidApp:mergeProjectDexDebug UP-TO-DATE
> Task :androidApp:mergeDebugJniLibFolders UP-TO-DATE
> Task :shared:mergeDebugJniLibFolders UP-TO-DATE
> Task :shared:mergeDebugNativeLibs UP-TO-DATE
> Task :shared:stripDebugDebugSymbols NO-SOURCE
> Task :shared:copyDebugJniLibsProjectOnly UP-TO-DATE
> Task :androidApp:mergeDebugNativeLibs UP-TO-DATE
> Task :androidApp:stripDebugDebugSymbols NO-SOURCE
> Task :androidApp:validateSigningDebug UP-TO-DATE
> Task :androidApp:packageDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':androidApp:packageDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Entry name 'META-INF/androidx.vectordrawable_vectordrawable.version' collided

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s
41 actionable tasks: 1 executed, 40 up-to-date
  

Когда я создаю без подписи, он завершается успешно, но не выполняется при выполнении подписанной сборки apk. Не уверен, что не так. Ценю вашу помощь.

Ответ №1:

Я не знаю, где именно это противоречит. Но исключение этого списка, похоже, устраняет проблему, и я могу завершить сборку подписанного apk. Обновлю больше, если смогу разобраться в этом подробнее:

Добавьте это в свой build.gradle.kts (используя kotlin dsl).

 android {
    compileSdkVersion(29)
    defaultConfig {
        applicationId = "com.example.myapplication.androidApp"
        minSdkVersion(24)
        targetSdkVersion(29)
        versionCode = 1
        versionName = "1.0"
    }
    buildTypes {
        getByName("release") {
            isMinifyEnabled = false
        }
    }

    ////// ADD THIS PART //////////
    packagingOptions {
        exclude("META-INF/androidx.vectordrawable_vectordrawable.version")
        exclude("META-INF/androidx.loader_loader.version")
        exclude("META-INF/androidx.lifecycle_lifecycle-livedata.version")
        exclude("META-INF/androidx.lifecycle_lifecycle-livedata.version")
        exclude("kotlin/annotation/annotation.kotlin_builtins")
        exclude("META-INF/androidx.lifecycle_lifecycle-runtime.version")
    }
}