Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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库_Android_Intellij Idea_Android Studio - Fatal编程技术网

Android Studio中的Android库

Android Studio中的Android库,android,intellij-idea,android-studio,Android,Intellij Idea,Android Studio,有人知道Android库在Android studio中是如何工作的吗 我还没有找到任何关于这个的文档(Android开发者网站上的文档简直是赤裸裸的),我观察到,根据我创建库项目的方式,我得到了完全不同的结果 如果我从Eclipse导入一个库(遵循网站上的建议,首先导出到Gradle),我将得到一个包含库项目的新project+模块。这似乎不太正确(intellij项目=eclipse工作区),并且尝试在intellij中编译/生成此文件会导致许多错误(库项目找不到android支持库) 如果

有人知道Android库在Android studio中是如何工作的吗

我还没有找到任何关于这个的文档(Android开发者网站上的文档简直是赤裸裸的),我观察到,根据我创建库项目的方式,我得到了完全不同的结果

如果我从Eclipse导入一个库(遵循网站上的建议,首先导出到Gradle),我将得到一个包含库项目的新project+模块。这似乎不太正确(intellij项目=eclipse工作区),并且尝试在intellij中编译/生成此文件会导致许多错误(库项目找不到android支持库)

如果我用一个库模块从头开始创建一个新项目,那么我会得到一个带有build.gradle文件的android库项目

如果我从一个项目中创建一个新模块(使用右键单击该项目),那么我会得到一个使用Ant构建的Android库。这个编译很好,但看起来很奇怪。当然,我们不应该在Android Studio中为Android库使用Ant?顺便说一句,使用File>new module创建新的库模块似乎不起作用。它只是创建一个新的应用程序

有没有人找到任何信息来解释这一点?我还没有找到任何可以指定在哪些应用程序模块中应该使用哪些库的位置。我知道这是一个预览版,但我很难相信像Android库这样的核心功能支持得这么差。我错过了什么

更新2014-04-09:

因此,我本周与安卓工作室进行了新一轮合作。虽然现在的问题与我最初写这篇文章时不同,但这仍然是一个很大的问题。对于在AS的多个项目中使用Android库(包括嵌套的libs),我仍然没有找到一个很好的解释。我看到的一些建议建议将代码复制到多个位置,这完全违背了创建库的初衷


我只是不明白谷歌对Android Studio的想法。。。很遗憾,因为它看起来是一个很好的工具,但缺少对代码重用这样基本的东西的直观处理对我来说是一个大问题(更不用说专门为Android编写的代码与不断改进的跨平台开发工具相比越来越不具吸引力了)。

Intellij与Eclipse不同,因为您的“工作区”仅用于一个“项目”。每个项目由多个模块组成。这些模块本身可以有自己的“项目/应用程序/库”

因此,模块有点类似于Eclipse项目


转到:文件->项目结构->模块

并将Android库添加为一个模块,您可以声明它在Android库中,并将其作为您的“项目”(应用程序模块)的依赖项。

我认为这是您正在寻找的。一开始我不会把太多精力放在Android Studio上。重点是正确获取gradle文件,然后“同步”模块以更新Android Studio。(有时我不得不重新启动它,以使“构建变体”部分更新为新版本。)

@Xav在一份报告中建议如下:

如果您以后想添加新模块(库项目),则可以使用高级项目。第一次使用单个模块创建顶部项目要比创建平面项目并在以后添加模块时进行转换更容易。

需要指出的两件事是,在settings.gradle文件中,您将列出:app和:library模块;“android”插件也用于应用程序,但“android library”插件应用于库模块


如果您能够从命令行进行./gradlew汇编,则在下次打开项目或同步时,Android Studio应使用适当的设置进行更新。

如果您希望在Android Studio项目中使用其他库:

  • 将.jar库复制到项目的libs文件夹中
  • 右键单击库并选择“添加为库”
  • build.gradle
    replace中

    编译文件('libs/android-support-v4.jar')


  • 如果仍然不起作用,请使用我们的终端导航到项目的根文件夹,并运行
    gradlew clean
    命令。

    此时您需要将
    build.gradle
    文件配置为在Android Studio中使用jars,否则在运行时会遇到可怕的
    NoClassDefException
    。有关如何使jar libs工作的一些提示,请参见我的。您还可以直接在
    build.gradle
    中定义Maven依赖项,这非常方便。

    为了让大家了解这一点,下面是我为“解决”这个问题所做的工作。IMO,这远不是一个优雅的解决方案,但它最接近于我在androidstudio中用Git处理我的问题(重用Android库)的一个好解决方案

    基本思想是使用Git子模块。每个库都有自己的Git存储库

  • 将myLibrary创建为模块,然后将其提交到存储库
  • 从项目根存储库中,我执行一个
    git子模块add
    来获取库
  • 在settings.gradle中,我添加:
    include':myLibrary'
    并同步项目
  • 模块设置>>依赖项>>+模块依赖项,并根据需要向模块添加依赖项
  • 这与在Eclipse中使用Android库的简单优雅相去甚远,但它的工作方式有点过时。要记住的事情:

    • 记住频繁地进行git拉取,以获取更改(然后提交主项目以与子模块更改同步)
    • 如果您已将更改提交到库中,请记住将git从模块目录推送到远程目录
    大楼
    compile fileTree(dir: 'libs', include: '*.jar')
    
    compile 'com.squareup.picasso:picasso:2.3.2'