gpt4 book ai didi

Android Studio 项目结构(v.s. Eclipse 项目结构)

转载 作者:行者123 更新时间:2023-12-01 19:01:42 25 4
gpt4 key购买 nike

我正在尝试学习 android 开发,最初我对 Eclipse 和 Android Studio 之间不同的项目结构感到困惑。这使得遵循为 Eclipse 设计的教程变得困难。谁能让我知道为什么存在这些差异?它们应该存在吗?

例如,如果我要在两个不同的 IDE 中找到 R.java 文件,路径将如下所示:

eclipse : app\gen\com.example.app\R.java

安卓工作室: app\build\source\r\debug\com.example.app\R.java

为什么这些路径不同?为什么我的 R.java 位于 Android Studio 的调试文件夹中?这在早期会导致一些错误,如果有人对这些差异有任何了解,我将不胜感激。

最佳答案

谜底:Android Studio 的项目结构和构建系统

我不知道这是否是因为 Gradle 构建系统(我敢打赌是),但我会告诉你我到目前为止所了解的。

更新 4: 2014/09/11 添加 备忘单 BuildTypes , FlavorsVariants (我终于有信心写这个: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 中(准确地说,是一个具有相互依赖项目的工作区)

来自 the documentation (Android Studio 基于 Intellij IDEA):

Whatever you do in IntelliJ IDEA, you do that in the context of a project. A project is an organizational unit that represents a complete software solution.

Your finished product may be decomposed into a series of discrete, isolated modules, but it's a project definition that brings them together and ties them into a greater whole.



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

如果您尝试在同一个项目中构建多个应用程序,则会出现多个问题。这是可能的,但是如果您尝试(就像我所做的那样),您会发现几乎所有内容都旨在为每个项目使用一个应用程序。

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

结构:文件夹结构

Android Studio Project Structure

顶级文件夹

一、主要项目

这将是完整的 项目背景 ( Eclipse Land: 喜欢您的工作区,但仅限于与您的项目相关的内容)。例如: HelloWorldProject如果您提供的应用程序名称是 HelloWorld
2. 想法

这其中项目特定的元数据由 Android Studio (AS) 存储。 ( Eclipse Land: project.properties 文件)

3. 项目模块

这是实际项目。例如: HelloWorld如果您提供的应用程序名称是 HelloWorld

4. 等级

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

5. 外部库

这实际上不是一个文件夹,而是一个显示引用库( Eclipse Land: 引用库)的地方。这是显示目标平台的地方等。

[ 旁注:我们在 Eclipse Land 中的许多人过去常常删除引用的库并修复项目属性以修复引用错误,还记得吗?]

项目文件夹详细信息

这是上面列表中的第 3 号。有以下子目录

1. 构建

这具有 make 的所有完整输出进程即classes.dex,编译的类和资源等。

在 Android Studio GUI 中,只显示了几个文件夹。重要的部分是 您的 R.java 可以在这里找到 build/source/<flavor>/r/<build type(optional)>/<package>/R.java

2. 库

这是您在 中看到的标准 libs 文件夹 eclipse 之地也是

3. 源文件

在这里,您只能看到 javares对应于 src 的文件夹文件夹和 res 中的文件夹 eclipse 之地 .恕我直言,这是非常受欢迎的简化。

模块注意事项:

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

[ 旁注:整个重组有一些好处,比如简化了 src 文件夹,但也有很多复杂之处。并发症主要是由于 非常非常关于这个新项目布局的精简文档。]

新的构建系统

User Guide for the new Build System

口味和构建类型等的解释 - 喧嚣是什么?

用于口味和构建类型的备忘单

构建类型: debugreleasebuildTypes默认情况下可用于所有项目。它们用于构建/编译 相同代码 生成不同的 APK。例如在 release您想要运行 proguard(用于混淆)的 APK,使用您的 key 对其进行签名(与调试 key 相反),运行优化(可能通过 proguard 或其他工具),使用略有不同 packageNames (我们使用 com.company.product 表示 releasecom.company.product.debug 表示 debug )等。我们还使用调试标志( BuildConfig.DEBUG )来关闭 logcat 日志记录(因为它使应用程序变慢)在 |1045 上的 logcat(因为它使应用程序变慢) |建立。这使得速度更快 release在开发过程中构建,但也是一个优化 debug建立放在游戏商店。

产品口味:没有可用的默认风格(或者准确地说,默认风格是空白/无名)。 release可能是 免费版 付费版他们在哪里 不同的代码 .他们共享相同的 Flavors一些源代码文件或资源的不同版本(或没有版本)的代码。

构建变量: A Main是生成的 APK 实际对应的内容。它们是这样命名的(按顺序) buildVariant + Product Flavor = Build Type .
示例 1:如果您有 Build Variantfree作为两种口味。您将获得的构建变体是:
免费 - 调试
免费 - 发布
付费 - 调试
有偿释放
所以这是 4 种可能的 APK 配置。一些配置在特定项目中可能没有意义,但它们 可用的。

示例 2: (对于新项目/无口味)您有 2 paid或可用的 APK,因为默认风格是无名/空白:
调试
释放

将此与 Intellij's Project Structure 进行比较如果这有帮助:

Intellij Project Structure Snapshot

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

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

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

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

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

drawable 文件夹(7)包含图像。

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

关于Android Studio 项目结构(v.s. Eclipse 项目结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17431838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com