从另一个项目

时间:2015-11-01 00:51:33

标签: android gradle module android-gradle build.gradle

我的主要项目包含一些模块::app:anotherModule,....

然后我在github上分叉了一个库并将其推入另一个项目中。它有两个模块,一个库:library和一个示例应用:sample

我尝试做的是在编译时将:library集成到我的项目中,即不复制文件(正如有人在此建议的那样)。

我做了什么

我编辑了我的项目settings.gradle并添加了:

include ':library'
project(':library').projectDir = new File(settingsDir,'../ForkedLibrary/library')

引用分叉库的文件夹。与此同时,我将compile project(':library')添加到了我的应用模块。

出了什么问题

编译失败:

  

找不到属性' ANDROID_BUILD_SDK_VERSION'在项目':图书馆'

我知道它为什么会发生:ForkedLibrary/library/build.gradle引用ForkedLibrary/gradle.properties中的一些项目值,类似于:

ANDROID_BUILD_MIN_SDK_VERSION=14
ANDROID_BUILD_TARGET_SDK_VERSION=23
ANDROID_BUILD_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23.0.0
... + LOTS of other stuff, POM_ info, version names, ...

我可以通过将这些行复制粘贴到我的项目 gradle.properties来修复此问题,但在我自己的gradle属性文件中使用:library特定内容是没有意义的。 ForkedLibrary属性文件包含与我的项目无关的内容,例如原始开发人员信息和其他POM_字段。

所以

如何解决此问题(在我自己的ForkedLibrary文件中不包含gradle.properties属性)?

1 个答案:

答案 0 :(得分:0)

它应该是一个评论,但它太长了。如果它没有帮助你,我会删除它。

您在问题中描述的ForkedLibrary/library/build.gradle使用的是ForkedLibrary/gradle.properties 它仅适用于ForkedLibrary特定项目,因为另一个项目使用自己的gradle.properties

我想library/build.gradle文件有如下所述:

project.VERSION_NAME

您可以参考official doc

  

配置按以下顺序应用(如果在多个位置配置选项,则最后一个获胜):

     
      
  • 来自项目构建目录中的gradle.properties。
  •   
  • 来自gradle用户主页中的gradle.properties。
  •   
  • 来自系统属性,例如在命令行上设置-Dsome.property时。
  •   

在这种情况下您必须复制build.properties

中的属性

我在这种情况下从未尝试过替代,如下所示:

processResources {
    expand(project.properties)
}

您可以阅读official doc

  

将资源从其源复制到目标目录,可能会对其进行处理。确保目标目录中没有过时的资源。

expand method是:

  

在复制时扩展每个文件中的属性引用。