我可以在Android Studio 0.4.0的上下文中使用一些帮助来理解Gradle(插件v 0.7)背后的概念。我之前没有使用过Gradle,它只会让我产生问题。我没有看到它的目的/好处,因为我对此知之甚少。
我有一些具体问题
这些依赖是什么?我正在制作一个简单的应用程序 导航抽屉,针对API 11+,应该是原生的 支持的。我可以使用哪些依赖项?
什么是Gradle包装?对完成的申请有何变化(
为什么Gradle需要经常在线?我没有 在我工作时,在我的个人笔记本电脑上访问互联网。它已经得到了 到了我无法运行或测试我的应用程序,因为Gradle不能 解决一些没有互联网访问的资源。
为什么Gradle使用Groovy很重要?我搜索过了 在互联网周围,往往是人们喜欢的东西 Gradle但他们通常不解释为什么Groovy很重要或者 它为Android应用程序做了什么。
有时作为中级程序员很难,因为信息往往过于简单或过于复杂。除了我的具体问题,您可以提供的任何其他信息都很有用。我不打算讨论Gradle与其他可能做同样事情的工具的利弊,我只想更多地了解Gradle及其使用,以便做出明智的决定。
由于
答案 0 :(得分:22)
这些依赖是什么?
您可能决定使用很多很酷的库。现在很多这些库都支持与gradle的集成。所以不再导入项目并自己托管。一切都在mavencentral托管。您仍然需要支持库,即使您决定使用API 11 +。
什么是Gradle包装?
如果您在团队中工作,或者特别是在开源项目上工作,那么gradle包装器是一个很棒的工具。您不需要安装gradle。 gradle包装器将在第一次运行时下载并缓存其所有依赖项。因此,团队中的所有开发人员都可以非常快速地构建项目。
为什么Gradle需要不断上线?
因为需要同步依赖项。如果您使用的是Android Studio,那么您很幸运。 最新版本支持“gradle offline模式”。
Studio现在支持Gradle Offline模式。如果找到,这很有用 你自己没有网络连接,你的依赖关系正在使用 用于获取最新可用版本的plus语法。在这种情况下, Gradle将每天一次(默认情况下)连接到工件 存储库以查看是否有更新版本。如果那个网络 连接失败,构建失败。如果您没有网络 连接,这是有问题的。您现在可以打开编译器> Gradle选项并启用离线模式,它将告诉Gradle 忽略更新至今的检查:
为什么Gradle使用Groovy很重要?
你在Groovy中编写gradle插件。还有build.gradle中的所有gradle任务。
警告:我不是gradle的专家。实际上也是一个相对较新的用户。
答案 1 :(得分:19)
您的一些问题是一般性的,因为它们说明为什么构建工具作为一般事项是好事。其他人专门去Gradle。我会尝试尽可能简洁地解决这两个类别,同时试图避免别人的挑剔术语。
Maven,Gradle,SBT,Leiningen等构建工具有助于自动完成我们原本必须手动执行或“手动自动化”的任务。我使用后者来描述我以前用Ant做的事情 - 编写自定义任务来编译,运行,生成Javadoc等等,这样任务就可以在未来实现自动化。通过遵循最初由Maven定义并随后由其他人采用的约定(例如将源代码放在 src / main / java 中),这成为可能。如果我遵循约定,构建工具可以编译,运行,生成Javadoc,测试,以及其他所有工作。
现在问题(按顺序):
希望有所帮助。
答案 2 :(得分:5)
我理解每个人所说的为什么Gradle的在线部分是必要的,但是对于我们这些在工作中防火墙后面的人,或者当我们可能在线下工作时,它真的给我们带来了必须上线的负担至少一次能够在离线模式下编译。
我只是不明白为什么要求这个项目。如果我在Android Studio中开始一个全新的项目,我想测试一个概念怎么办?除非我至少在线一次,否则我不能这样做。如果我当时无法访问互联网并想要这样做怎么办?那么呢?
似乎是一种不必要的要求,它给开发人员带来了可以避免的不必要的问题。再一次,我理解它背后的原因,但是,为了使用离线而强制要求至少在线编译一次似乎有点荒谬。
我想使用Gradle,但是在这个时候,由于在线要求,我们甚至无法在工作中使用它。我将不得不与我们的安全部门合作,确定在我们的防火墙中打出哪些漏洞,以便通过这个漏洞以及正确设置我们的代理以允许它。
所以,在这个时候,我不能推荐Gradle在我的工作地点使用,这意味着我们也将继续使用Eclipse进行Android开发,而不是Android Studio。似乎是一个似乎没有必要的限制性要求。
答案 3 :(得分:2)
让我们假设,对以下几点的理解是可以作为合理的基础:
什么是类,接口,API,包,模块和库。
什么是模块依赖关系,什么意思是“依赖关系管理”。
现代应用程序的复杂性。即使您使用简单的“Hello,world”应用程序(它是桌面应用程序还是Web应用程序),它应该包含十几个(如果不是一百个)各种库。所有这些库都为您的应用程序提供了基础架构,但其中许多都与它的逻辑没有直接关系。
如果您的应用不是“Hello,world”,那么隐藏它的复杂性(通过适当的模块化)并自动化它的组装和测试(通过使用适当的构建工具)对于成功至关重要。
< / LI> 醇>考虑到这种理解(并考虑到上面亲爱的同事列出的宝贵考虑因素),开始谈论gradle,ant,ivy和maven是有道理的。