Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android studio 如何在Android Studio中创建库项目和使用库项目的应用程序项目_Android Studio - Fatal编程技术网

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应该会更新。

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

开始情况:

目标:要添加名为dataformats的模块吗

添加新模块,例如:Java库 确保您的settings.gradle正常自动显示如下:

包括“:frigoshare',”:frigoshare后端“,”:数据格式”

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

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


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

在使用的库的build.gradle文件中添加库的依赖项,并将库粘贴到外部库中。 或

只需转到app文件夹中的libs文件夹并将所有.jar(例如库文件)粘贴到该文件夹中,这里的诀窍是,现在转到settings.gradle文件中,现在在include之后添加此行include':app:libs':app'它肯定会工作………:
不要忘记在build.gradle中使用apply plugin:'com.android.library'而不是apply plugin:'com.android.application'

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

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

创建一个项目

打开左侧项目菜单中的文件。app/build.gradle:gradle Scripts>build.gradleModule:XXX

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

删除文件中的applicationId com.mycompany.testproject

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

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

将aar文件扩展名更改为zip

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


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

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

在打开的项目文件>新建>新建模块上,回答用户界面问题 选中/或添加文件设置中的if。gradle:include':myLibrary' 检查/或添加文件build.gradle中的if:

flavorDimensions "version"

productFlavors {
    trial{
        applicationId "org.de_studio.recentappswitcher.trial"
        flavorDimension "version"
    }
    pro{
        applicationId "org.de_studio.recentappswitcher.pro"
        flavorDimension "version"
    }

}
依赖关系{ ... 编译项目“:myLibrary” }

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

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

apply plugin: 'com.android.application'

android {...}


更多

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

另一种方式:

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

 include ':app', ':myandroidlib'
 project(':myandroidlib').projectDir = new File(PATH_TO_YOUR_MODULE)
为StickyListHeaders库创建Android Studio项目 为App2创建Android Studio项目 为App1创建Android Studio项目 配置App1和App2以在StickyListHeaders项目中构建模块。 第四步是最难的部分,所以这是我将详细描述的唯一一步。通过在settings.gradle文件中添加项目语句,并在该项目语句返回的ProjectDescriptor对象上设置projectDir属性,可以引用项目目录外部的模块:

必须在settings.gradle中输入的代码:

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

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

这种设置多个项目的方式避免了困扰谷歌推荐配置的困难。因为我们引用的是项目目录之外的模块,所以我们不必为依赖它的每个应用程序制作库模块的额外副本,我们可以在不使用任何git子模块的情况下对库进行版本设置

不幸的是,建立多个项目的另一种方式很难找到。很明显,这并不是你在谷歌指南中会发现的,在这一点上,你无法通过使用Android Studio的用户界面以这种方式配置你的项目。

你可以向任何应用程序添加一个新模块,正如布伦德尔在回答中所说,然后从任何其他应用程序中引用它

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

要参考此模块,您应该:

在应用程序的build.gradle文件中添加:

dependencies {
...
compile project(':myandroidlib')
}
在settings.gradle文件中添加以下内容:

 include ':app', ':myandroidlib'
 project(':myandroidlib').projectDir = new File(PATH_TO_YOUR_MODULE)

正如上面的Zechsensation评论,我试图搜索Gradle Build Varians,我发现了以下链接: 这是一个非常简单的解决方案。这就是我所做的: -在build.gradle中:

flavorDimensions "version"

productFlavors {
    trial{
        applicationId "org.de_studio.recentappswitcher.trial"
        flavorDimension "version"
    }
    pro{
        applicationId "org.de_studio.recentappswitcher.pro"
        flavorDimension "version"
    }

}

然后我又有了两个版本的应用程序:pro和试用版,其中有两个不同的packageName,这是上面代码中的两个applicationId,所以我可以将两者都上传到Google Play。我仍然只是在main部分编写代码,并使用getpackageName在到的版本之间切换。只需转到我提供的链接了解详细信息。

目的:Android库位于单个位置-跨多个项目共享

在我的例子中,使用MAC OS X 10.11和Android 2.0,完全按照Aqib Mumtaz的解释进行操作

但是,每次我都会收到这样一条消息:配置项目时出现问题:app'>无法评估模块xxx:未找到名为“default”的配置

我发现这条消息的原因是Android 2.0不允许直接创建库。因此,我决定先创建一个应用程序projet,然后修改build.gradle以将其转换为库

此解决方案不起作用,因为库项目与应用程序项目非常不同

所以,我已经这样解决了我的问题:

如果需要,首先创建一个标准应用程序; 然后选择“文件/创建模块” 转到finder并移动框架目录中新创建的模块文件夹 然后继续Aqib Mumtaz提出的解决方案

因此,您的库源代码将被共享,而无需在每次对我来说是异端时复制源文件

希望这对你有帮助

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

创建一个新项目,使您的库位于其中。单击文件>新建>新模块>Android库>下一步>选择名称>完成。然后将您想要的任何类和资源添加到您的库中

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

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

使用文件>新建模块>导入.JAR/.AAR包>下一步>选择文件位置>完成导入库AAR文件。不要导入代码,否则它会 将在太多位置进行编辑。 在settings.gradle文件中,确保您的库名在那里

include ':app', ':my-library-module'
在应用程序的build.gradle文件中,将编译行添加到dependencies部分:

dependencies {
    compile project(":my-library-module")
}
系统将提示您将项目与gradle同步。去做吧。 就这样。你现在应该可以使用你的图书馆了

笔记

如果您想让更多的读者轻松地使用您的库,那么build.gradle中定义的插件是唯一的区别吗?i、 e.你能通过改变一行将现有模块变成Android库吗?有一天,我们会点击一个导入按钮,库就会正常工作,然后我们会开始在编辑器中输入代码。这种方法似乎将库包含在实际项目中。OP想要知道的是如何创建一个独立的Android库项目,该项目位于其自己的项目/空间中,并且仅作为一个整体包含在主应用程序项目中lib@SteveM这一直是我职业生涯中的问题。我只是开始编码,没有任何设计。然后花费数小时进行调试和重构。这将在项目中创建模块的文件。如果您希望模块位于项目外部,以便与其他应用程序一起使用,该怎么办?@rrbrambley:我找到了一种在多个项目中重用模块的方法。我使用一个名为winbolic link for Windows的应用程序创建了NTFS连接文件夹链接。当我有一个要在多个项目中重复使用的模块时,我会在要使用它的每个项目的目录中创建一个指向要重用项目的文件夹链接。在此之后,我在Andr中添加了模块依赖项。演播室现在我可以在每个项目中使用/编辑模块,同时保持同步。不确定这是否是正确的方式,但目前看来它似乎工作得相当好!这比本地maven回购更有效。不幸的是,截至2014年7月,不再有像屏幕上显示的那样的项目设置。我必须按照下面GrkEngineer的回答去编辑.grade文件。这应该被否决,因为这会在现有项目中创建一个模块如果你想在其他项目中使用相同的库,您必须将库模块复制到该项目中,并手动配置settings.gradle和主模块的build.gradle。我使用Android库构建我的应用程序的免费/付费版本。新的Gradle构建系统使这种方法与构建变体概念一起过时。现在,您可以使用同一代码自动构建不同的已签名APK。“我要是早点知道就好了。”你能详细说明一下吗?在上传完整版本的APK后,我尝试上传免费版本的APK,但使用了相同的包名。Google Play商店GPS给了我一条信息,说我已经使用了那个软件包的名称。你所说的gradle是否意味着我不需要在两个独立的软件包中安装两个独立的应用程序?这是一个完美的答案。Aqib Mumtaz在回答中提到,但它最终是。不要在其他方面浪费时间,你可以这样做。有趣。有图片说明。这是完美的答案。谢谢。回答得很好,但是你应该把文章中的相关部分复制到你的答案中,以防链接中断。注意:对于gradle中的字符串求值,你必须使用双引号。这为我节省了时间。链接到如何从应用程序代码引用库代码?按照设置说明操作后,应用程序代码仍然无法引用库代码中的包。是否需要执行额外的步骤?@CEGRD您需要转到“文件”>“项目结构”,然后单击正在处理的模块的名称。然后转到依赖项选项卡>单击下拉菜单中的“+”然后单击“模块依赖项”。然后,您应该能够将library1模块添加到当前项目中。在2016年12月的Android Studio 2.2.2上对我有效。例如,项目“:library”.projectDir=新文件“../library”,其中library是与Android项目文件夹并行的文件夹名称。如果您通过更改插件分配,您还必须删除行`applicationId com。。。。警告:配置“compile”已过时,已替换为“implementation”和“api”。
dependencies {
    compile project(":my-library-module")
}