【问题标题】:Error while building Android project with using Geotools (solved)使用 Geotools 构建 Android 项目时出错(已解决)
【发布时间】:2022-12-18 02:51:41
【问题描述】:

我正在开发一个 android 项目,需要使用 Geotools 库。 添加库后构建项目是不正确的。

类路径 'com.android.tools.build:gradle:7.0.4'

将存储库添加到 Gradle:

repositories {
    maven { url "https://repo.osgeo.org/repository/release/" }  // <---
    mavenLocal()
    mavenCentral()
    google()
    gradlePluginPortal()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    maven { url "https://oss.sonatype.org/content/repositories/releases/" }
    maven { url "https://jitpack.io" }
}

向 Gradle 添加依赖项:

dependencies {
    implementation 'org.geotools:gt-main:28.0'  // <---
    testImplementation "junit:junit:$junitVersion"
}

我在构建过程中遇到错误:

> Task :android:mergeDebugJavaResource FAILED
Execution failed for task ':android:mergeDebugJavaResource'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
   > 2 files found with path 'plugin.xml' from inputs:
      - C:\gradle\caches\transforms-3\4ee35d2fa6e19aaa21a107f9d19d12b8\transformed\jetified-org.eclipse.emf.ecore.xmi-2.15.0.jar
      - C:\gradle\caches\transforms-3\c4ca9df1db430b1e56c1959084f034a1\transformed\jetified-org.eclipse.emf.ecore-2.15.0.jar
     Adding a packagingOptions block may help, please refer to
     https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html
     for more information

降级库版本没有帮助。 请协助组装,我已经坐了第三晚

更新我会自己回答: 将存储库更改为

https://repo.osgeo.org/repository/geotools-releases/

添加一个块也有帮助:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
        exclude 'plugin.xml'
        exclude 'about.ini'
        exclude 'about.mappings'
        exclude 'modeling32.png'
        exclude 'about.properties'
        exclude 'plugin.properties'
    }
}

可能对某人有用:)

【问题讨论】:

  • 附言想为文件 plugin.xml 添加 PackagingOptions,但不明白应该在哪个块中添加它,我不知道它是否有帮助
  • 我认为 GeoTools 不适用于 Android。
  • @IanTurton,我尝试通过 JUnit 连接到项目而不在 Gradle 中构建,并且库功能运行良好(也就是说,Gradle 通常会看到库本身,下载并使用它)。问题只出现在mergeDebugJavaResource/mergeJavaResource块中项目本身的组装过程中,目前尚不清楚如何解决
  • 附言除了出现的想法不是将存储库添加到一般项目,而是添加到核心(一个不与 android 交互但执行实用功能的内部模块,并且您需要对库执行必要的操作)

标签: java gradle geotools


【解决方案1】:

既然您在问题中回答了自己,我将在这里写一个干净的答案,以帮助避免让人们感到困惑。

我所需要的只是 app 模块的 build.gradle 中的这个块:

android {
  packagingOptions {
    exclude 'plugin.xml'
    exclude 'about.ini'
    exclude 'about.mappings'
    exclude 'modeling32.png'
    exclude 'about.properties'
    exclude 'plugin.properties'
  }
}

这将安全地跳过受影响的文件而不影响功能。请注意,此块与您在问题中的答案不同,由于某种原因,它也排除了 AndroidManifest.xml。不需要更改存储库。

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 2011-03-11
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多