Android Gradle 项目中的依赖项 (Android Studio)

3
项目结构如下:
project_name
|--app (main Android application module)
|--secured (Android application module)

app 模块不依赖于 secured 模块。但是 secured 模块依赖于 app 模块。

以下是 secured 的 build.gradle 文件片段:

apply plugin: 'com.android.application'

android {
  compileSdkVersion 20
  buildToolsVersion '20.0.0'
  <...>
}

dependencies {
  compile project(':app')
  compile files('libs/libA.jar')
  compile files('libs/libB.jar')
} 

所有看起来都很好,AS没有发出任何警告。但是当我从Gradle任务面板中运行project_name:secured [assemble]时,会出现数百个警告。所有这些警告都与app模块有关,就像我忘记添加app模块的依赖项一样。结果,我无法获得secured模块的apk文件。
出了什么问题?我可能犯了什么错误? 更新1
/Users/artm/Documents/Projects2/project_name/secured/src/main/java/com/companyname/app/vps/secured/SecuredClass.java:3: error: cannot find symbol

import com.companyname.app.vps.ISecured;
                          ^
symbol:   class ISecured
location: package com.companyname.app.vps

<and about hundred of errors such this>

* What went wrong:
  Execution failed for task ':secured:compileDebugJava'.
> Compilation failed; see the compiler error output for details.

更新2

include ':app', ':shared', ':secured'

UPD3 Android库模块是否可以依赖于Android应用程序模块?


任何建议都将不胜感激! - Adam
当您展示堆栈跟踪时会很有帮助。我猜您已经检查了根项目中的settings.gradle文件? - The End
1
你确定 com.companyname.app.vps.ISecured 存在吗? - Gabriele Mariotti
@GabrieleMariotti 当然,它位于app模块中,该模块不可从secured模块中看到。app模块无任何问题地使用ISecured。 - Adam
@GabrieleMariotti 尝试了很多次。一个项目中可以有多个Android应用程序模块吗?原则上是否可能? - Adam
显示剩余4条评论
1个回答

1
您不能让一个使用apply plugin: 'com.android.application'构建文件的Android应用程序模块依赖于另一个Android应用程序。您只能依赖于Android库(apply plugin: 'com.android.library')。
如果这两个模块都需要生成APK,则应将主要的app项目中的代码重构为Android库,并使appsecured都依赖于它。

Android库模块能依赖于Android应用程序模块吗? - Adam
此外,app 模块包含一个名为 com.company.abc 的包,而 secured 模块也包含完全相同的包。毋庸置疑,这两个包包含不同的源代码。而且,secured 模块的源代码依赖于 app 模块的源代码。Maven 可以完美地解决这种情况。 - Adam
2
不,库不能依赖于 Android 应用程序模块。 - Scott Barta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接