如何在Android Studio中创建库项目以及使用库项目的应用程序项目

Ran*_*ku' 159 android-studio

我是gradle构建系统和IntelliJ的新手.

那么如何创建一个Android库项目(例如com.myapp.lib1)和应用程序项目(例如com.myapp.app)并使构建系统在应用程序项目中包含com.myapp.lib1?

我进入了项目结构 - >模块 - >我的应用程序项目,并为lib项目添加了一个依赖项.IntelliJ现在可以在应用程序项目中使用时识别lib项目中的类,但是当我运行应用程序项目时,会出现以下错误:

Gradle: error: package com.myapp.lib1 does not exist
Run Code Online (Sandbox Code Playgroud)

Blu*_*ell 112

要创建库:

文件>新模块

选择Android库

库

要使用库,请将其添加为依赖项:

文件>项目结构>模块>依赖项

DEP

然后添加模块(android库)作为模块依赖项.

添加模块

运行您的项目.它工作.

  • 这将在项目中创建模块的文件.如果您希望模块在项目外部以便可以与其他应用程序一起使用,该怎么办? (191认同)
  • 这应该是投票,因为这会在现有项目中创建一个模块 (23认同)
  • @rrbrambley:我找到了一种在多个项目中重用模块的方法.我使用一个名为winbolic link for Windows的应用程序创建了(NTFS Junction)文件夹链接.当我有一个我想在多个项目中重复使用的模块时,我创建了一个文件夹链接,指向每个项目目录中要使用它的待重用项目.在此之后,我添加模块依赖项(在Andr.Studio中).现在我可以在每个项目中使用/编辑模块,同时保持同步.不确定这是否是正确的方法,但现在似乎工作得很好!这比当地的maven回购更好. (2认同)
  • 如果要在其他项目中使用相同的lib,则必须将库模块复制到该项目并手动配置settings.gradle和main模块的build.gradle. (2认同)

Jin*_*Heo 109

我想知道为什么没有独立jar项目的例子.

在eclipse中,我们只需在项目设置对话框中选中"Is Library"框.
在Android studio中,我按照这个步骤获得了一个jar文件.

  1. 创建一个项目.

  2. 在左侧项目菜单中打开文件.(app/build.gradle):Gradle Scripts> build.gradle(Module:XXX)

  3. 换一行:apply plugin: 'com.android.application'- >'apply plugin: com.android.library'

  4. 删除文件中的applicationId: applicationId "com.mycompany.testproject"

  5. 构建项目:构建>重建项目

  6. 然后你可以得到aar文件:app> build> outputs> aar文件夹

  7. aar文件扩展名更改为zip

  8. 解压缩,你可以classes.jar在文件夹中看到.重命名并使用它!

无论如何,我不知道为什么google让jar创建在android studio中如此麻烦.


Aqi*_*taz 93

谷歌的Gradle插件推荐用于配置gradle文件以构建多个项目的方法有一些缺点如果你有多个项目取决于一个库项目,这篇文章简要介绍了谷歌推荐的配置,它的缺点,并推荐一种不同的方法来配置gradle文件到支持Android Studio中的多项目设置:

android studio的另一种多项目设置

不同的方式:

事实证明,在Android Studio中管理多个项目是一种更好的方法.诀窍是为您的库创建单独的Android Studio项目,并告诉gradle您的应用所依赖的库的模块位于库的项目目录中.如果您想将此方法与我上面描述的项目结构一起使用,您将执行以下操作:

  1. 为StickyListHeaders库创建一个Android Studio项目
  2. 为App2创建一个Android Studio项目
  3. 为App1创建一个Android Studio项目
  4. 配置App1和App2以在StickyListHeaders项目中构建模块.

第四步是困难的部分,所以这是我将详细描述的唯一步骤.您可以通过在settings.gradle文件中添加项目语句并在项目语句返回的ProjectDescriptor对象上设置projectDir属性来引用项目目录外部的模块:

在此输入图像描述

代码必须放入settings.gradle:

include ':library1'
project(':library1').projectDir = new File('../StickyListHeader/library1')
Run Code Online (Sandbox Code Playgroud)

如果您已正确完成此操作,您会注意到项目引用的模块将显示在项目导航器中,即使这些模块位于项目目录的外部:

在此输入图像描述

这允许您同时处理库代码和应用程​​序代码.当您以这种方式从外部引用模块时,版本控制集成也可以正常工作.您可以提交并推送对库代码的修改,就像您可以提交并推送对应用程序代码的修改一样.

这种设置多个项目的方式避免了困扰Google推荐配置的困难.因为我们引用了一个位于项目目录之外的模块,所以我们不必为每个依赖它的应用程序创建库模块的额外副本,我们可以对我们的库进行版本化,而不需要任何类型的git子模块.

不幸的是,很难找到这种设置多个项目的方法.显然,它不是你在查看Google指南时会想到的,而且在这一点上,使用Android Studio的UI无法以这种方式配置你的项目.

  • 这应该是公认的答案,效果很好! (8认同)
  • 这是完美的答案.谢谢. (4认同)
  • **注意:**对于gradle中的字符串评估,您必须使用双引号(").这为我节省了一天.链接到[this](http://stackoverflow.com/questions/15171049/gradle-single -VS-双引号) (2认同)
  • @CEGRD您需要转到文件>项目结构,然后单击您正在处理的模块的名称.然后转到依赖项选项卡>单击下拉菜单中的'+'然后单击'模块依赖项'.然后,您应该能够将library1模块添加到当前项目中. (2认同)

Grk*_*eer 45

查看有关多项目设置的链接.

有些事情要指出,请确保更新settings.gradle以引用应用程序和库模块.

settings.gradle: include ':app', ':libraries:lib1', ':libraries:lib2'

还要确保应用程序的build.gradle具有以下内容:

dependencies {
     compile project(':libraries:lib1')
}
Run Code Online (Sandbox Code Playgroud)

您应该具有以下结构:

 MyProject/
  | settings.gradle
  + app/
    | build.gradle
  + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle
Run Code Online (Sandbox Code Playgroud)

应用程序的build.gradle应该使用该com.android.application插件,而任何库的build.gradle应该使用该com.android.library插件.

如果您能够使用此设置从命令行构建,则应更新Android Studio IDE.

  • 有一天,我们将单击一个导入按钮,该库将正常工作,然后我们将开始在编辑器中键入代码. (22认同)
  • 这种方法似乎包括实际项目中的库.OP想要的是知道如何创建一个独立的Android库项目,该项目位于自己的项目/空间中,并且仅作为lib包含在主应用程序项目中 (6认同)

Sim*_*oid 13

对于Intellij IDEA(和Android Studio),每个库都是一个模块.将Android Studio中的模块视为与Eclipse中的项目等效.Android Studio中的项目是模块的集合.模块可以是可运行的应用程序或库模块.

所以,为了添加一个新的android库项目,你需要创建一个类型为"Android库"的模块.然后将此库模块添加到主模块(应用程序模块)的依赖关系列表中.


han*_*noo 12

创建重用库项目的最简单方法:

  1. 在一个打开的项目上file > new > new module(并回答UI问题)

在此输入图像描述

  1. 检查/或在文件settings.gradle中添加if :include ':myLibrary'
  2. 检查/或在文件build.gradle中添加if :

    dependencies { ... compile project(':myLibrary') }

  3. 要在另一个项目中重用此库模块,请复制项目中的文件夹而不是步骤1,然后执行步骤2和3.

您还可以创建新的工作室应用程序项目 通过将build.gradle文件中的插件分配更改为com.android.library,可以轻松地将现有应用程序模块更改为库模块.

apply plugin: 'com.android.application'

android {...}
Run Code Online (Sandbox Code Playgroud)

apply plugin: 'com.android.library'

android {...}
Run Code Online (Sandbox Code Playgroud)

更多在这里


Jul*_*ian 9

您可以向任何应用程序添加新模块,正如Blundell在他的回答中所说,然后从任何其他应用程序引用它.

如果要将模块移动到计算机上的任何位置,只需移动模块文件夹(模块完全独立),然后您必须引用该模块.

要参考此模块,您应该:


Rya*_*n R 5

不要忘记使用apply plugin: 'com.android.library'你的build.gradle而不是申请插件:'com.android.application'


Sur*_*gch 5

文档方式

根据 Android Studio 文档中给出的建议,这是推荐的方式。

创建库模块

创建一个新项目来创建您的库。单击File > New > New Module > Android Library > Next > (choose name) > Finish。然后将您想要的任何类和资源添加到您的库中。

当您构建模块时,将创建一个 AAR 文件。您可以在 中找到它project-name/module-name/build/outputs/aar/

将您的库添加为依赖项

您可以将库作为依赖项添加到另一个项目,如下所示:

  1. 使用File > New Module > Import .JAR/.AAR Package > Next > (choose file location) > Finish 导入库 AAR 文件。(不要导入代码,否则可编辑的地方太多。)
  2. 在 settings.gradle 文件中,确保您的库名称存在。

    include ':app', ':my-library-module'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在应用程序的 build.gradle 文件中,将编译行添加到依赖项部分:

    dependencies {
        compile project(":my-library-module")
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 系统将提示您将项目与 gradle 同步。做吧。

就是这样。您现在应该可以使用您的库了。

笔记

如果您想让更多受众轻松使用您的库,请考虑使用 JitPac 或 JCenter