【问题标题】:Android Studio - Creating Modules without copying files?Android Studio - 创建模块而不复制文件?
【发布时间】:2014-07-09 15:55:59
【问题描述】:

我正在 Android Studio 中创建具有依赖项的项目。我知道如何通过添加模块来链接项目。

但我意识到“导入模块”会在项目中创建 libProject 的副本。

有没有办法防止这种情况发生?像“外部模块”?

由于我负责这两个项目,我希望能够将更改推送到 libProject 存储库,而不必在文件夹之间复制粘贴文件。

谢谢

【问题讨论】:

标签: android android-studio


【解决方案1】:

是的,你可以做到。该模块需要为其设置一个 Gradle 构建文件。如果有,那么在您要链接的项目中,将其添加到项目根目录的 settings.gradle 文件中:

include ':libraryName'
project(':libraryName').projectDir=new File('/path/to/library')

您在第二行中指定的路径是包含库的 build.gradle 文件的目录的路径。路径可以是相对的或绝对的。

【讨论】:

  • 感谢完美! settings.gradle 是只读的有什么原因吗?我使用 Sublime 编辑文件。
  • 我已经添加了这些行,但是主应用程序没有编译,因为它没有找到库中定义的包。我应该寻找什么?
  • 这在 Android Studio 1.2.1 中不再起作用。有人有这个新版本的解决方法吗?
  • @peceps 仍在 android studio 1.4 中工作,不要忘记将库添加到 build.gradle 依赖项为 compile project(path: ':libraryName')
  • 他们为什么要这么辛苦?
【解决方案2】:

解决办法:

include ':libraryName'
project(':libraryName').projectDir=new File('/path/to/library')

对我不起作用。在浪费了几个小时后,我发现了这个问题。有两个build.gradle 文件,一个用于项目,一个用于库名称。如果库位于文件夹 '\MyLib' 中,则 '\MyLib' 中将有一个 build.gradle,而 '\MyLib\app' 中将有另一个 build.gradle 。您必须指向 '\MyLib\app' 而不是 '\Mylib'

希望这可以为其他人节省一些时间。

【讨论】:

  • 非常感谢您发布此消息!我在这上面浪费了几个小时。
【解决方案3】:

您还可以在您的应用 build.gradle 中使用 android { sourceSets{ main.java.srcDirs += '../../../library/src' }} 。不确定是否支持所有 android 资源,因为纯 java 库运行良好。

【讨论】:

    【解决方案4】:

    如果您像我一样拥有多个模块(我今天才意识到其中包含副本,我认为该项目包含指向源代码的链接。

    您可以拥有多个模块/项目,如下所示:-

    include ':app', ':sqlwords', ':dbindex', ':dbcolumn', ':dbtable', ':dbdatabase', ':displayhelp', ':pickdate'
    project(':sqlwords').projectDir= new File('d:/Android_Applications/Modules/sqlwords')
    project(':dbcolumn').projectDir= new File('d:/Android_Applications/Modules/dbcolumn')
    project(':dbtable').projectDir= new File('d:/Android_Applications/Modules/dbtable')
    project(':dbindex').projectDir= new File('d:/Android_Applications/Modules/dbindex')
    project(':dbdatabase').projectDir= new File('d:/Android_Applications/Modules/dbdatabase')
    project(':displayhelp').projectDir= new File('d:/Android_Applications/Modules/displayhelp')
    project(':pickdate').projectDir= new File('d:/Android_Applications/PickDateShowCase/pickdate')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 2013-05-27
      • 2015-11-30
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      相关资源
      最近更新 更多