Tac*_*0sS 137 android gradle android-library android-studio
我有一个示例项目,具有以下设置:
/root
+ Pure Java Lib
+ Android Test Lib
+ Android Test Project
Run Code Online (Sandbox Code Playgroud)
" 测试项目 "依赖于" 测试库 ",最后一个依赖于" 纯Java库 " 编译项目并启动此设置工作正常.
我现在正在考虑导入我之前的Eclipse工作区并使用Android studio,问题是项目设置不同,我想保持这种方式.
例如,如果要使用前面的示例:
/root
+ Android Test Lib
+ Android Test Project
/Some Other folder (another repository for example)
+ Pure Java Lib
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多配置,但是我找不到引用父文件夹范围之外的项目的方法(示例中的" root ").
在许多平台/模块中,你可以使用'..'在文件夹中向上移动,但这对我不起作用,也许我用错了.
有谁知道Gradle如何实现这一目标?
UPDATE
我会尝试更通用:
/C:/
/Project A
+ Module 1 - Pure Java
+ Module 2 - Android Test Lib
+ Module 3 - Android Test Project
/Project B
+ Module 1 - Pure Java
+ Module 2 - Pure Java
+ Module 3 - Pure Java
Run Code Online (Sandbox Code Playgroud)
我想用的模块1 B项目,在项目中.
Eth*_*han 219
假设Some Other Folder是gradle项目,您可以在settings.gradle文件中添加以下内容:
include ':module1'
project(':module1').projectDir = new File(settingsDir, '../Project B/Module 1')
Run Code Online (Sandbox Code Playgroud)
Dar*_*rux 45
你必须输入你的文件settings.gradle这行:
include ':module2'
project(':module2').projectDir = new File(settingsDir, '../Project 2/Module2')
Run Code Online (Sandbox Code Playgroud)
然后你必须在依赖树中添加你的builde.gradle(Module:app),这一行:
compile project(':module2')
Run Code Online (Sandbox Code Playgroud)
或者进入Project Structure > app > Dependencies,单击Add,选择3 Module Dependencies并选择你的模块
右键单击项目 - 选择"打开模块设置" - 在左窗格中选择"模块" - 单击顶部的"+"符号 - 选择"导入模块".
导入模块后.您需要将其添加为当前项目的依赖项.
在左窗格中选中"模块"并单击您的项目 - 现在进入依赖项选项卡并单击位于底部的"+"符号 - 选择第三个选项"模块依赖项",如果您已正确导入项目,它将向您展示可以作为依赖项添加到当前项目的所有可用模块.
小智 9
使用Gradle 1.10(不知道其他哪个版本有效)这是我根据这里给出的响应得出的结果http://forums.gradle.org/gradle/topics/reference_external_project_as_dependancy
我有一个api库项目,一个公共库项目和主应用程序项目.每个都是一个独立的开发项目,这两个库可以在多个应用程序之间共享.
在公共项目的settings.gradle中:
def apiLibDir = file('../android-api/android-api-lib')
def rootProjectDescriptor = settings.rootProject
settings.createProjectDescriptor(rootProjectDescriptor, 'android-api-lib', apiLibDir)
include ':android-api-lib'
Run Code Online (Sandbox Code Playgroud)
然后在主app项目settings.gradle中:
def apiLibDir = file('../android-libs/android-api/android-api-lib')
def rootProjectDescriptor = settings.rootProject
settings.createProjectDescriptor(rootProjectDescriptor, 'android-api-lib', apiLibDir)
include ':android-api-lib'
def commonLibDir = file('../android-libs/android-common/android-common-lib')
settings.createProjectDescriptor(rootProjectDescriptor, 'android-common-lib', commonLibDir)
include ':android-common-lib'
Run Code Online (Sandbox Code Playgroud)
在每个相应的build.gradle文件中,您只需通过settings.createProjectDescriptor中的名称引用它们,就像您对任何其他项目的依赖性一样:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':android-api-lib')
compile project(':android-common-lib')
}
Run Code Online (Sandbox Code Playgroud)
这似乎有效.它甚至没有为定义api库的多个DEX文件引发错误,我怀疑因为它是同一个构建过程的所有部分而且Gradle足够聪明,可以全部解决.
| 归档时间: |
|
| 查看次数: |
85016 次 |
| 最近记录: |