【问题标题】:Android: Didn't find class "Picasso" on path: DexPathList (Failed resolution of: Picasso)Android:在路径上找不到类“毕加索”:DexPathList(解决失败:毕加索)
【发布时间】:2015-11-20 16:19:30
【问题描述】:

首先我知道这个错误已经是asked,但我的情况有点不同:

我正在分发 SDK(Android 库项目)。我的 SDK 需要其他东西(播放服务、支持 v4、gson jar 等)毕加索,所以我在我的 gradle.build 中有:

compile 'com.squareup.picasso:picasso:2.5.2'

现在,当我测试将生成的 aar 文件从这个库项目导入到我的示例应用程序时 - 一切正常。

问题是我的客户在将aar 文件导入他的应用项目时,试图在他的应用中启动与我的SDK 功能相关的Activity 得到上述错误:

Failed resolution of: Lcom/squareup/picasso/Picasso:
java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.Picasso" on path: DexPathList[[zip file "/data/app/com.package.name-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

注意:我确实需要这个Activity Picasso。我们都使用 Android Studio。

我的问题是问题出在哪里?在我的图书馆里?客户集成aar的方式?

  • 客户需要用我所有 SDK 的依赖项修改他的 build.gradle,因为我不是通过 maven 分发的
  • 并在他的manifest.xml 中包含我的Activities
  • 也许multidex 在这里有事?
  • 可能是play services 的版本?
  • 可能是support lib V4 VS 的版本。 appcompat V7?
  • 客户编译的内容和我编译的内容之间的依赖版本串通?
  • gradle.build 中的依赖顺序?

【问题讨论】:

  • AAR 文件只是添加了一些 Android 内容的 JAR,例如资源和 AndroidManifest.xml。他们,但是对它们的依赖关系或特别是关于 Gradle 的了解一无所知。因此,我想最好的方法是通过 Maven 存储库(其中包括 pom.xml 包含有关依赖项的信息)分发您的库。
  • @david.mihola 谢谢,这是众所周知的,我特别提到因为我不通过maven 分发它,SDK 的用户手动添加了依赖项。问题是这个错误的根本原因是什么?更具体地说,我需要知道问题是出在我的 SDK 内部还是问题出在用户集成 SDK 的方式上——所以我会知道告诉他:“看,你在集成过程中做错了什么”。谢谢,
  • 是的,抱歉,再次阅读我的评论听起来有点奇怪——我真的只是想确认单独分发 AAR 是行不通的,而 Maven 会更好。这有点令人费解,但是您是否考虑过 (1) 分发到本地 Maven 存储库和 (2) 压缩存储库中包含您的库的目录和 (3) 让您的客户将其解压缩到他们的本地存储库和 (4) 包括通过 Gradle 和mavenLocal 在他们的build.gradle 中的库?这样您就可以使用更新版本的库等更新它们。
  • @david.mihola 谢谢,我们很清楚maven 是最好的选择,但由于与客户的业务限制 - 我们不能这样做。所以基本上现在我们需要评估 2 个选项中的 1 个: 1. 我们的 SDK 中有错误 2. 用户在集成过程中执行错误(这很复杂,需要修改清单和构建等)。我们唯一的输入是问题中提到的日志跟踪。谢谢,

标签: android-gradle-plugin build.gradle picasso dex aar


【解决方案1】:

您必须禁用“即时运行”

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 2015-07-29
    • 1970-01-01
    • 2021-06-04
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    相关资源
    最近更新 更多