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

Android studio 如何在Android Studio中创建库项目和使用库项目的应用程序项目,android-studio,Android Studio,我是gradle build系统和IntelliJ的新手 那么,我如何创建Android库项目(例如com.myapp.lib1)和应用程序项目(例如com.myapp.app),并使构建系统在应用程序项目中包含com.myapp.lib1呢 我转到项目结构->模块->我的应用程序项目,并向lib项目添加了一个依赖项。IntelliJ现在可以在应用程序项目中使用时识别lib项目中的类,但是当我运行应用程序项目时,会出现如下错误: Gradle: error: package com.myapp.

我是gradle build系统和IntelliJ的新手

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

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

Gradle: error: package com.myapp.lib1 does not exist
要创建库,请执行以下操作:

文件>新模块

选择Android库

要使用库,请将其作为从属项添加:

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

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

运行您的项目。对于Intellij IDEA(和Android Studio),每个库都是一个模块。可以将androidstudio中的模块看作是Eclipse中的项目的等价物。Android Studio中的项目是一组模块。模块可以是可运行的应用程序或库模块

因此,为了向中添加一个新的android库项目,您需要创建一个类型为“android库”的模块。然后将此库模块添加到主模块(应用程序模块)的依赖项列表中。

查看此列表

需要指出的是,请确保您的settings.gradle已更新,以引用应用程序模块和库模块

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

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

dependencies {
     compile project(':libraries:lib1')
}
您应该具有以下结构:

 MyProject/
  | settings.gradle
  + app/
    | build.gradle
  + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle
应用程序的build.gradle应该使用
com.android.application
插件,而任何库的build.gradle应该使用
com.android.library
插件


如果您能够使用此设置从命令行进行构建,Android Studio IDE应该会更新。

遇到了同样的问题,并通过以下方式解决了它:

开始情况

FrigoShare (root)
|-Modules:    frigoshare,   frigoShare-backend
Target:要添加名为
dataformats

  • 添加新模块(例如:
    Java库
  • 确保您的
    设置。gradle
    如下所示(通常自动):

    include':frigoshare',':frigoshare后端',':dataformats'

  • 确保(手动)需要使用库的模块的
    build.gradle
    文件具有以下依赖关系:

    依赖项{
    ...
    编译项目(“:数据格式”)
    }


  • 有两种最简单的方法,如果其中一种不起作用,请尝试另一种

  • 在使用的库的build.gradle文件中添加库的依赖项,并将库粘贴到外部库中
  • 只需转到app文件夹中的libs文件夹并将所有.jar(例如库文件)粘贴到该文件夹中,这里的诀窍是,现在转到settings.gradle文件中,在“include”(包括)之后添加此行“include”:app:libs'”:app'“它肯定会工作的…………。:)

  • 不要忘记在
    build.gradle
    中使用
    应用插件:“com.android.library”
    ,而不是应用插件:
    'com.android.application'
    我想知道为什么没有独立jar项目的例子。

    在eclipse中,我们只需选中项目设置对话框中的“Is库”框
    在androidstudio中,我按照这个步骤得到了一个jar文件

  • 创建一个项目

  • 在左侧项目菜单中打开文件。(app/build.gradle):gradle脚本>build.gradle(模块:XXX)

  • 更改一行:
    apply plugin:'com.android.application'
    ->
    'apply plugin:com.android.library'

  • 删除文件中的applicationId:
    applicationId“com.mycompany.testproject”

  • 生成项目:生成>重建项目

  • 然后您可以获得aar文件:应用程序>构建>输出>aar文件夹

  • aar
    文件扩展名更改为
    zip

  • 解压缩后,您可以在文件夹中看到
    classes.jar
    。 重命名并使用它


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

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

  • 在打开的项目上
    文件>新建>新建模块
    (并回答用户界面问题)
  • 在文件settings.gradle中选中/或添加if:
    包括:myLibrary'
  • 在文件build.gradle中选中/或添加if:

    FrigoShare (root)
    |-Modules:    frigoshare,   frigoShare-backend
    
    依赖项{
    ...
    编译项目(“:myLibrary”)
    }

  • 若要在其他项目中重用此库模块,请将其文件夹复制到项目中,而不是复制步骤1,然后执行步骤2和3

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

    apply plugin: 'com.android.application'
    
    android {...}
    


    更多

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

    另一种方式:

    事实证明,有一种更好的方法可以在Android Studio中管理多个项目。诀窍是为你的库创建单独的Android Studio项目,并告诉gradle你的应用程序所依赖的库模块是lo
    include ':library1'
    project(':library1').projectDir = new File('../StickyListHeader/library1')
    
    dependencies {
    ...
    compile project(':myandroidlib')
    }
    
     include ':app', ':myandroidlib'
     project(':myandroidlib').projectDir = new File(PATH_TO_YOUR_MODULE)
    
    flavorDimensions "version"
    
    productFlavors {
        trial{
            applicationId "org.de_studio.recentappswitcher.trial"
            flavorDimension "version"
        }
        pro{
            applicationId "org.de_studio.recentappswitcher.pro"
            flavorDimension "version"
        }
    
    }
    
    include ':app', ':my-library-module'
    
    dependencies {
        compile project(":my-library-module")
    }