安卓工作室3.0依赖问题

5

出现错误:

错误:无法解析依赖关系“: app@debugUnitTest / compileClasspath”的“com.googlecode.mp4parser:isoparser:1.1.22”。 打开文件
显示详细信息

对于依赖项:

compile 'com.googlecode.mp4parser:isoparser:1.1.22'

但对于依赖:

compile 'com.googlecode.mp4parser:isoparser:1.1.20'

Gradle同步成功。

尝试使用的仓库:

repositories {
    mavenCentral()
}

详细错误:

无法解决依赖项“:app@StagingUnitTest/compileClasspath”的问题:无法解决 com.googlecode.mp4parser:isoparser:1.1.22。

无法解决 com.googlecode.mp4parser:isoparser:1.1.22。 所需版本: 项目 :app

无法解决 com.googlecode.mp4parser:isoparser:1.1.22。 无法获取资源 'https://repo1.maven.org/maven2/com/googlecode/mp4parser/isoparser/1.1.22/isoparser-1.1.22.pom'。 org.apache.http.ssl.SSLInitializationException: 字节0左右存在格式不正确的输入 字节0左右存在格式不正确的输入 字节0左右存在格式不正确的输入


如果您能批准答案,我将不胜感激... - Niraj Sanghani
问题出在gradle上,https://github.com/sannies/mp4parser/issues/95,导入jar包工作正常,但我想知道确切的问题所在。 - Tulsiram Rathod
6个回答

4

我刚花了1.5小时研究这个问题。我的根本原因错误是:

Could not resolve all dependencies for configuration ':classpath'.
Could not resolve io.fabric.tools:gradle:1.+.
 Required by:
     project :
  > Could not resolve io.fabric.tools:gradle:1.+.
     > Failed to list versions for io.fabric.tools:gradle.
        > Unable to load Maven meta-data from https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml.
           > org.apache.http.ssl.SSLInitializationException: malformed input around byte 12

idea.log文件中,我发现了以下日志追踪:
2018-02-15 18:32:32,220 [entQueue-0]  ERROR - net.ssl.ConfirmingTrustManager - Cannot get system trust store 
java.security.KeyStoreException: problem accessing trust storejava.io.UTFDataFormatException: malformed input around byte 12
    at sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:74)

    at javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:250)

    at com.intellij.util.net.ssl.ConfirmingTrustManager.getSystemDefault(ConfirmingTrustManager.java:82)

    at com.intellij.util.net.ssl.ConfirmingTrustManager.createForStorage(ConfirmingTrustManager.java:75)

    at com.intellij.util.net.ssl.CertificateManager.<init>(CertificateManager.java:130)

事实证明,问题并不是在Gradle上,而是在Android Studio内部的JRE运行时上。当我对Android Studio JRE中的cacerts文件运行keytool时,也遇到了相同的"字节12周围的畸形输入"错误。
> keytool.exe -list -keystore /c/Program\ Files/Android/Android\ Studio/jre/jre/lib/security/cacerts
keytool error: java.io.UTFDataFormatException: malformed input around byte 12

我替换了我的安卓开发工具安装目录下的cacerts文件,使用了我电脑中Java安装目录下的文件,这样就恢复正常了。我猜测在升级到3.0版本时,该文件可能已经损坏,这似乎是那些遇到此问题的人的共同点。
希望这能帮助仍在遇到此问题的人。

我在 Mac OS(10.12.8)上遇到了困难。感谢您解决这个问题! - Ted Collins

4

请确保您的根级gradle.build文件类似于以下内容。 您需要在项目和所有项目中都有repo:

buildscript {
    repositories {
        mavenCentral()
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenCentral()
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

我已经解决了依赖关系:

这里输入图片描述


你尝试过在依赖中使用 compile 'com.googlecode.mp4parser:isoparser:1.1.22' 吗?因为我仍然遇到问题。 - Tulsiram Rathod
哇,看这个链接:https://mvnrepository.com/artifact/com.googlecode.mp4parser/isoparser,最新版本是1.1.22,不存在1.2.22版本,同时请查看我的图片。你不能找到不存在的东西,现在可以了吧?哇! - Niraj Sanghani
是的,我正在使用我在问题中发布的相同代码。 - Tulsiram Rathod
修改gradle-wrapper属性文件。 - Niraj Sanghani
所有工作已经完成,仍然遇到问题,现在我已经导入了jar模块。 - Tulsiram Rathod
显示剩余4条评论

1
经过大量的研究和分析,重新安装Android Studio 3.0解决了问题。

重新安装Android Studio 3.0可以解决我在这个线程中发现的问题。我相信可以通过替换AS的证书颁发机构存储来修复此问题,而无需进行完全重新安装。 - Clayton Sims

0

我检查了一下,isoparser 工件也可以在 jcenter 存储库中找到。

因此,请将 jcenter 添加到您的存储库链接中。

repositories {
    mavenCentral()
    jcenter()
    google()        // <- required, when artifact is in google repo
}

0

还需要添加这些仓库:

jcenter()
google()

如果你在代理后面,可能会出现https连接问题,所以你可以强制使用http,方法是添加:

maven { url "http://jcenter.bintray.com/" }
maven { url "http://repo.maven.apache.org/maven2" }
maven { url "http://maven.google.com" }

更新:昨天我遇到了类似的包错误,尝试了一切但最终唯一的解决方案是删除用户配置文件夹(而不是项目中的)或Linux用户主目录中的整个.gradle文件夹。之后会开始一个长时间的同步,但最终一切都会恢复正常。 看起来这个问题是由于AS升级到新版本时gradle缓存损坏引起的。这在我的Windows和Fedora系统中都发生过。HTTP错误消息只是让所有人走了错误的解决方案。


0
请确保在“设置”->“构建、执行、部署”->“Gradle”中禁用“离线工作”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接