参考项目

时间:2015-05-24 12:49:52

标签: android android-studio gradle dependencies

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

项目设置

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

" Java模型"被添加为Android App和Java Desktop应用程序的依赖项。

当我运行桌面应用程序时,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模型" 提供的功能(在此示例中,我使用的是HttpClient类{ {1}}依赖),我得到以下异常:

  

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

请注意这只是一个示例,并且所有其他依赖项也会出现问题,这些依赖项仅在" JavaModel"中引用,但在Android应用程序本身中没有

在我看来,就像" JavaModel"的依赖关系一样。在编译时工作得很好,因为一切都执行得很好,但是然后没有包含在.apk文件中,因此导致这个例子。

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

1 个答案:

答案 0 :(得分:2)

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

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