【问题标题】:Dependency issues in reference project参考项目中的依赖问题
【发布时间】:2015-08-06 01:39:21
【问题描述】:

我有一个问题,我的 android 应用程序中作为依赖项模块引用的项目的依赖项似乎没有包含在我的 android 应用程序的 .apk 文件中。

项目设置

  • Android 应用(Android Studio 和 gradle)
  • Java 桌面应用程序(IntelliJ/maven/gradle 项目)
  • Java 模型(Android 和桌面应用程序使用的类和功能)

“Java 模型”作为对 Android 应用程序和 Java 桌面应用程序的依赖项添加。

当我运行桌面应用程序时,JavaModel 的依赖关系通过 maven 解决,包含在应用程序中,一切运行顺利。

从 Android Studio 的角度来看,我已将 JavaModel 作为模块导入到 android 项目中,并使用 gradle 来解决依赖关系。我已经设置了以下 gradle 文件:

Android 应用“settings.gradle”

include ':app'
include ':JavaModel'
project(':JavaModel').projectDir=new File('../../JavaModel')

Android 应用“build.gradle”

dependencies {
    compile project(':JavaModel')
    // and more...
}

Java 模型“build.gradle”

dependencies {
    compile(
            'org.apache.httpcomponents:httpclient:4.4.1'
            // and more ...
    )
}

一切都编译得很好,没有任何错误,并且可以创建一个 .apk 并在我的测试设备上运行。但是,只要我访问应用程序中由“Java 模型”提供的功能(在此示例中,我使用来自 org.apache.httpcomponents:httpclient:4.4.1 依赖项的 HttpClient 类),我就会得到以下例外:

java.lang.ClassNotFoundException: 找不到类 "org.apache.http.impl.client.HttpClients"

请注意,这只是一个示例案例,并且所有其他依赖项也会出现此问题,这些依赖项仅在“JavaModel”中引用,而不是在 Android 应用程序本身中引用。

在我看来,“JavaModel”的依赖项在编译时工作得很好,因为一切都执行得很好,但是没有包含在 .apk 文件中,因此会导致这个异常。

问题是我如何(正确地)确保依赖项目的依赖项都包含在 .apk 文件中?

【问题讨论】:

    标签: android android-studio gradle dependencies


    【解决方案1】:

    Apache http客户端和android的冲突,如果要使用最近的,需要使用android端口https://hc.apache.org/httpcomponents-client-4.3.x/android-port.html

    关于“JavaModel”。如果 JavaModel 的依赖项是编译依赖项,那么一切都必须正常工作(假设依赖项没有类加载器之类的花哨代码)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      相关资源
      最近更新 更多