参考项目中的依赖问题
Dependency issues in reference project
我有一个问题,在我的 android 应用程序中被引用为依赖模块 的项目的依赖项似乎没有包含在 .apk 文件中我的 android 申请。
项目设置
- Android 应用程序(Android 工作室 & gradle)
- Java 桌面应用程序(IntelliJ/maven/gradle 项目)
- Java 模型(classes 和 android 和桌面应用程序使用的功能)
"Java model" 作为依赖项添加到 Android 应用程序和 Java 桌面应用程序。
当我 运行 桌面应用程序时,Java 模型的依赖项通过 maven 解析,包含到应用程序中,一切 运行 都很顺利。
从 Android Studio 的角度来看,我已将 Java 模型作为模块导入到 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 和 运行s。但是,一旦我访问应用程序中由 "Java model" 提供的功能(在本例中,我使用的是 HttpClient
class来自 org.apache.httpcomponents:httpclient:4.4.1
依赖项),我得到以下异常:
java.lang.ClassNotFoundException: Didn't find class
"org.apache.http.impl.client.HttpClients"
请注意,这只是一个示例案例,所有其他仅在 "JavaModel" 中引用但未在 Android 应用本身。
在我看来,"JavaModel" 的依赖项在编译时工作得很好,因为一切都执行得很好,但随后没有包含在 .apk 文件中,因此导致了这个异常。
问题是我如何(正确地)确保将依赖项目的依赖项包含到 .apk 文件中?
Apache http客户端与android一个冲突,如果要使用最近的一个,需要使用android端口https://hc.apache.org/httpcomponents-client-4.3.x/android-port.html
关于 "JavaModel"。如果 JavaModel 的依赖项是编译依赖项,那么它一定能正常工作(假设依赖项没有像类加载器那样的花哨代码)
我有一个问题,在我的 android 应用程序中被引用为依赖模块 的项目的依赖项似乎没有包含在 .apk 文件中我的 android 申请。
项目设置
- Android 应用程序(Android 工作室 & gradle)
- Java 桌面应用程序(IntelliJ/maven/gradle 项目)
- Java 模型(classes 和 android 和桌面应用程序使用的功能)
"Java model" 作为依赖项添加到 Android 应用程序和 Java 桌面应用程序。
当我 运行 桌面应用程序时,Java 模型的依赖项通过 maven 解析,包含到应用程序中,一切 运行 都很顺利。
从 Android Studio 的角度来看,我已将 Java 模型作为模块导入到 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 和 运行s。但是,一旦我访问应用程序中由 "Java model" 提供的功能(在本例中,我使用的是 HttpClient
class来自 org.apache.httpcomponents:httpclient:4.4.1
依赖项),我得到以下异常:
java.lang.ClassNotFoundException: Didn't find class "org.apache.http.impl.client.HttpClients"
请注意,这只是一个示例案例,所有其他仅在 "JavaModel" 中引用但未在 Android 应用本身。
在我看来,"JavaModel" 的依赖项在编译时工作得很好,因为一切都执行得很好,但随后没有包含在 .apk 文件中,因此导致了这个异常。
问题是我如何(正确地)确保将依赖项目的依赖项包含到 .apk 文件中?
Apache http客户端与android一个冲突,如果要使用最近的一个,需要使用android端口https://hc.apache.org/httpcomponents-client-4.3.x/android-port.html
关于 "JavaModel"。如果 JavaModel 的依赖项是编译依赖项,那么它一定能正常工作(假设依赖项没有像类加载器那样的花哨代码)