我有一个问题,在我的Android应用程序中,作为依赖模块引用的项目的依赖项似乎没有包含在我的Android应用程序的.apk文件中。
项目设置
" 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文件中?
答案 0 :(得分:2)
Apache http客户端与android一个冲突,如果你想使用最近的一个,你需要使用android端口https://hc.apache.org/httpcomponents-client-4.3.x/android-port.html
关于“JavaModel”。如果JavaModel的依赖项是编译依赖项,那么它们都必须正常工作(假设依赖项没有像类加载器这样的花哨代码)