android studio 项目结构分析,Android Studio项目结构(v.s.Eclipse项目结构)

神秘之处:Android Studio的项目结构和构建系统

我不知道这是不是因为Gradle Build System(我下注了),但我会告诉你到目前为止我所理解的内容。

更新4:2014/09/11为build/source//r///R.java,HelloWorld和Variants添加了备忘单(我终于有信心写下这个:D)

更新3:2014/09/11更新了比较工作区和项目以确切

更新2:2014/04/17为AS项目结构添加了更多细节

更新1:2013/07/29添加了IntelliJ项目结构

IntelliJ的项目结构(最后显示)适用于带有android插件的IntelliJ。 但是,Android Studio的项目结构如此划分:

结构:项目和模块

Android Studio中的模块就像是Eclipse中的一个项目

Android Studio中的项目就像Eclipse中的工作区(确切地说,是一个具有相互依赖项目的工作区)

从文档(Android Studio基于Intellij IDEA):

无论你在IntelliJ IDEA中做什么,你都可以在一个   项目。 项目是代表a的组织单位   完整的软件方案

您的成品可能会分解成一系列离散的,   孤立的模块,但它是一个带来它们的项目定义   在一起并将它们联系在一起。

对于Android,它意味着每个应用程序一个项目,每个库和每个测试应用程序一个模块。

如果您尝试在同一个项目中构建多个应用程序,则会出现多个问题。 这是可能的,但是如果你尝试(就像我一样),你会发现几乎所有东西都是为每个项目的单个应用程序而设计的。

例如,有一个“重建项目”的选项,这对于多个应用程序没有任何意义,许多其他项目设置将毫无用处,并且当您有多个存储库时,内置的VCS系统并不是很好。

结构:文件夹结构

b92f6a038f9e3a9b34cb791349b98313.png

顶级文件夹

1.主要项目

这将是整个项目环境(Eclipse Land:与您的工作区一样,但仅限于与您的项目相关的内容)。 例如:build/source//r///R.java若您的申请名称是HelloWorld

2.idea

这是Android Studio(AS)存储项目特定元数据的地方。 (Eclipse Land:build/source//r///R.java文件)

3.项目模块

这是实际的项目。 例如:build/source//r///R.java如果您提供的应用程序名称是HelloWorld

gradle

这是gradle构建系统的jar包装器,即这个jar是AS与安装在Windows中的gradle(在我的情况下是OS)中的通信方式。

5.外部图书馆

这实际上不是一个文件夹,而是显示Referenced Libraries(Eclipse Land:Referenced Libraries)的地方。 以下是目标平台的展示位置等。

[旁注:我们Eclipse Land中的许多人用来删除引用的库和Fix Project Properties来修复引用错误,还记得吗?]

项目文件夹详细信息

这是上面列表中的数字#3。 有以下子目录

建设

这具有build/source//r///R.java进程的所有完整输出,即classes.dex,编译类和资源等。

在Android Studio GUI中,仅显示几个文件夹。 重要的是你的R.java可以在build/source//r///R.java下找到

2. libs

这是您在eclipse land中看到的标准libs文件夹

src

在这里,您只能看到buildVariants和free文件夹,它对应于Eclipse Land中的paid文件夹和release文件夹。 这是非常欢迎简化恕我直言。

关于模块的说明:

模块就像Eclipse Land项目。 这里的想法是,您有一个应用程序项目(上面列表中的模块#3)和几个库项目(作为应用程序项目所依赖的全局项目文件夹(上面列表中的#1)下的单独模块)。 如何在其他应用程序中重用这些库项目,我还没有发现。

[旁注:整个重组有一些好处,比如src文件夹中的简化,但有很多复杂因素。 这些复杂性主要归功于这个新项目布局的非常细小的文档。

新建系统

新构建系统的用户指南

味道和构建类型等的解释 - 什么是hullabaloo?

用于flavor和buildTypes的CheatSheet

BuildType:buildVariants和free是paid,默认情况下可用于所有项目。 它们用于构建/编译SAME CODE以生成不同的APK。 例如在release APK上你想要运行proguard(用于混淆),用你的密钥签名(与调试密钥相对),运行优化(可能通过proguard或其他工具),使用略有不同的packageNames(我们使用com.company.product代表release 我们还使用调试标志(BuildConfig.DEBUG)在release版本上关闭日志记录(因为它使应用程序变慢)的调试标志(BuildConfig.DEBUG)和com.company.product.debug。 这样可以在开发过程中实现更快的debug构建,同时还可以优化release构建以进行游戏存储。

产品风味:没有可用的默认风味(或者确切地说,默认风味是空白/无名)。 buildVariants可以是免费版本或付费版本,它们有不同的代码。 它们共享相同的代码free但是一些源代码文件或资源的不同版本(或没有版本)。

BuildVariant:buildVariants是生成的APK实际对应的内容。 它们的命名如下(按顺序)buildVariants + free = paid。

示例1:如果您有free和paid两种口味。 您将获得的构建变体是:

免费 - 调试

免费发布

付费 - 调试

付费 - 释放

这是4种可能的APK配置。 一些配置在特定项目中可能没有意义,但它们是可用的。

示例2 :(对于新项目/没有风味)您有2 buildVariants或APK可用,因为默认风格是无名/空白:

调试

发布

将此与Intellij的项目结构进行比较,如果这有助于:

1e344337823000f4ba89df663db7ce2d.png

.idea(1)文件夹包含许多子文件夹,主要包含内部IntelliJ IDEA信息。

src(2)文件夹包含实现应用程序功能的MyActivity.java(3)文件源代码。 该文件属于com.example包。

res(4)文件夹包含各种可视资源。

layout / main.xml文件(5)定义由各种类型的资源构成的应用程序的外观。

values文件夹(6)用于存储描述各种类型资源的.xml文件。 目前,该文件夹包含带有String资源定义的strings.xml文件。 正如您将从“添加颜色”部分中看到的那样,布局文件夹还可以包含例如颜色描述符。

可绘制文件夹(7)包含图像。

gen(8)文件夹包含链接可视资源和Java源代码的R.java(9)文件。 正如您将从以下部分中看到的,IntelliJ IDEA支持静态资源和R.java之间的紧密集成。 只要添加或删除任何资源,就会自动生成或删除R.java中相应的类和类字段。 R.java文件也属于com.example包。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值